diff --git a/README.md b/README.md index bd85829..26fc264 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # dhtmlxGantt # [![dhtmlx.com](https://img.shields.io/badge/made%20by-DHTMLX-blue)](https://dhtmlx.com/) -[![npm: v.8.0.6](https://img.shields.io/badge/npm-v.8.0.6-blue.svg)](https://www.npmjs.com/package/dhtmlx-gantt) +[![npm: v.8.0.7](https://img.shields.io/badge/npm-v.8.0.7-blue.svg)](https://www.npmjs.com/package/dhtmlx-gantt) [![License: GPL v2](https://img.shields.io/badge/license-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) [Getting started](#getting-started) | [Features](#features) | [License](#license) | [Useful links](#links) | [Follow us](#followus) @@ -117,7 +117,7 @@ Resource management, critical path calculation, auto scheduling, and other enhan <a name="license"></a> ## License ## -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/bower.json b/bower.json index 1075ae4..2794e9f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "gantt", - "version": "8.0.6", + "version": "8.0.7", "homepage": "https://dhtmlx.com/docs/products/dhtmlxGantt/", "description": "An open source JavaScript Gantt chart that helps you illustrate a project schedule in a nice-looking chart.", "main": [ diff --git a/codebase/dhtmlxgantt.d.ts b/codebase/dhtmlxgantt.d.ts index fdfa55b..404d8a1 100644 --- a/codebase/dhtmlxgantt.d.ts +++ b/codebase/dhtmlxgantt.d.ts @@ -1,4 +1,4 @@ -// Type definitions for dhtmlxGantt 8.0.6 +// Type definitions for dhtmlxGantt 8.0.7 // Project: https://dhtmlx.com/docs/products/dhtmlxGantt type GanttCallback = (...args: any[]) => any; @@ -3914,7 +3914,7 @@ export interface InlineEditorMethods { * @param the name of the event handler * @param the function that will be called when the event fires */ - attachEvent<T extends keyof InlineEditorEvents>(event: T, handler: InlineEditorEvents[T]): boolean, + attachEvent<T extends keyof InlineEditorEvents>(event: T, handler: InlineEditorEvents[T]): string, /** * detaches a handler from an event (which was attached before by the attachEvent() method) diff --git a/codebase/dhtmlxgantt.js b/codebase/dhtmlxgantt.js index 50b0696..0755d18 100644 --- a/codebase/dhtmlxgantt.js +++ b/codebase/dhtmlxgantt.js @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. @@ -17,7 +17,7 @@ To use dhtmlxGantt in non-GPL projects (and get Pro version of the product), ple * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> * @license MIT */ -var i=n(291),r=n(290),a=n(67);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(o()<e)throw new RangeError("Invalid typed array length");return l.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=l.prototype:(null===t&&(t=new l(e)),t.length=e),t}function l(t,e,n){if(!(l.TYPED_ARRAY_SUPPORT||this instanceof l))return new l(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return d(this,t)}return c(this,t,e,n)}function c(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i);l.TYPED_ARRAY_SUPPORT?(t=e).__proto__=l.prototype:t=h(t,e);return t}(t,e,n,i):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!l.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|_(e,n),r=(t=s(t,i)).write(e,n);r!==i&&(t=t.slice(0,r));return t}(t,e,n):function(t,e){if(l.isBuffer(e)){var n=0|f(e.length);return 0===(t=s(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||function(t){return t!=t}(e.length)?s(t,0):h(t,e);if("Buffer"===e.type&&a(e.data))return h(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function u(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function d(t,e){if(u(e),t=s(t,e<0?0:0|f(e)),!l.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function h(t,e){var n=e.length<0?0:0|f(e.length);t=s(t,n);for(var i=0;i<n;i+=1)t[i]=255&e[i];return t}function f(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function _(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return B(t).length;default:if(i)return F(t).length;e=(""+e).toLowerCase(),i=!0}}function g(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function p(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=l.from(e,i)),l.isBuffer(e))return 0===e.length?-1:v(t,e,n,i,r);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):v(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function v(t,e,n,i,r){var a,o=1,s=t.length,l=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,n/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(r){var u=-1;for(a=n;a<s;a++)if(c(t,a)===c(e,-1===u?0:a-u)){if(-1===u&&(u=a),a-u+1===l)return u*o}else-1!==u&&(a-=a-u),u=-1}else for(n+l>s&&(n=s-l),a=n;a>=0;a--){for(var d=!0,h=0;h<l;h++)if(c(t,a+h)!==c(e,h)){d=!1;break}if(d)return a}return-1}function m(t,e,n,i){n=Number(n)||0;var r=t.length-n;i?(i=Number(i))>r&&(i=r):i=r;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");i>a/2&&(i=a/2);for(var o=0;o<i;++o){var s=parseInt(e.substr(2*o,2),16);if(isNaN(s))return o;t[n+o]=s}return o}function y(t,e,n,i){return z(F(e,t.length-n),t,n,i)}function k(t,e,n,i){return z(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,i)}function b(t,e,n,i){return k(t,e,n,i)}function x(t,e,n,i){return z(B(e),t,n,i)}function w(t,e,n,i){return z(function(t,e){for(var n,i,r,a=[],o=0;o<t.length&&!((e-=2)<0);++o)n=t.charCodeAt(o),i=n>>8,r=n%256,a.push(r),a.push(i);return a}(e,t.length-n),t,n,i)}function S(t,e,n){return 0===e&&n===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,n))}function T(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r<n;){var a,o,s,l,c=t[r],u=null,d=c>239?4:c>223?3:c>191?2:1;if(r+d<=n)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[r+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[r+1],o=t[r+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[r+1],o=t[r+2],s=t[r+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,d=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),r+=d}return function(t){var e=t.length;if(e<=$)return String.fromCharCode.apply(String,t);var n="",i=0;for(;i<e;)n+=String.fromCharCode.apply(String,t.slice(i,i+=$));return n}(i)}e.Buffer=l,e.SlowBuffer=function(t){+t!=t&&(t=0);return l.alloc(+t)},e.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=o(),l.poolSize=8192,l._augment=function(t){return t.__proto__=l.prototype,t},l.from=function(t,e,n){return c(null,t,e,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(t,e,n){return function(t,e,n,i){return u(e),e<=0?s(t,e):void 0!==n?"string"==typeof i?s(t,e).fill(n,i):s(t,e).fill(n):s(t,e)}(null,t,e,n)},l.allocUnsafe=function(t){return d(null,t)},l.allocUnsafeSlow=function(t){return d(null,t)},l.isBuffer=function(t){return!(null==t||!t._isBuffer)},l.compare=function(t,e){if(!l.isBuffer(t)||!l.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,i=e.length,r=0,a=Math.min(n,i);r<a;++r)if(t[r]!==e[r]){n=t[r],i=e[r];break}return n<i?-1:i<n?1:0},l.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(t,e){if(!a(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return l.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var i=l.allocUnsafe(e),r=0;for(n=0;n<t.length;++n){var o=t[n];if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,r),r+=o.length}return i},l.byteLength=_,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},l.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},l.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},l.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?T(this,0,t):function(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return A(this,e,n);case"utf8":case"utf-8":return T(this,e,n);case"ascii":return C(this,e,n);case"latin1":case"binary":return E(this,e,n);case"base64":return S(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}.apply(this,arguments)},l.prototype.equals=function(t){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===l.compare(this,t)},l.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},l.prototype.compare=function(t,e,n,i,r){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,i>>>=0,r>>>=0,this===t)return 0;for(var a=r-i,o=n-e,s=Math.min(a,o),c=this.slice(i,r),u=t.slice(e,n),d=0;d<s;++d)if(c[d]!==u[d]){a=c[d],o=u[d];break}return a<o?-1:o<a?1:0},l.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},l.prototype.indexOf=function(t,e,n){return p(this,t,e,n,!0)},l.prototype.lastIndexOf=function(t,e,n){return p(this,t,e,n,!1)},l.prototype.write=function(t,e,n,i){if(void 0===e)i="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)i=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var a=!1;;)switch(i){case"hex":return m(this,t,e,n);case"utf8":case"utf-8":return y(this,t,e,n);case"ascii":return k(this,t,e,n);case"latin1":case"binary":return b(this,t,e,n);case"base64":return x(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,t,e,n);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;function C(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(127&t[r]);return i}function E(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(t[r]);return i}function A(t,e,n){var i=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>i)&&(n=i);for(var r="",a=e;a<n;++a)r+=H(t[a]);return r}function D(t,e,n){for(var i=t.slice(e,n),r="",a=0;a<i.length;a+=2)r+=String.fromCharCode(i[a]+256*i[a+1]);return r}function M(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function I(t,e,n,i,r,a){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||e<a)throw new RangeError('"value" argument is out of bounds');if(n+i>t.length)throw new RangeError("Index out of range")}function P(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,a=Math.min(t.length-n,2);r<a;++r)t[n+r]=(e&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function N(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,a=Math.min(t.length-n,4);r<a;++r)t[n+r]=e>>>8*(i?r:3-r)&255}function O(t,e,n,i,r,a){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function L(t,e,n,i,a){return a||O(t,0,n,4),r.write(t,e,n,i,23,4),n+4}function R(t,e,n,i,a){return a||O(t,0,n,8),r.write(t,e,n,i,52,8),n+8}l.prototype.slice=function(t,e){var n,i=this.length;if(t=~~t,e=void 0===e?i:~~e,t<0?(t+=i)<0&&(t=0):t>i&&(t=i),e<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),l.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=l.prototype;else{var r=e-t;n=new l(r,void 0);for(var a=0;a<r;++a)n[a]=this[a+t]}return n},l.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=this[t],r=1,a=0;++a<e&&(r*=256);)i+=this[t+a]*r;return i},l.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},l.prototype.readUInt8=function(t,e){return e||M(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||M(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||M(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=this[t],r=1,a=0;++a<e&&(r*=256);)i+=this[t+a]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},l.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=e,r=1,a=this[t+--i];i>0&&(r*=256);)a+=this[t+--i]*r;return a>=(r*=128)&&(a-=Math.pow(2,8*e)),a},l.prototype.readInt8=function(t,e){return e||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||M(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(t,e){e||M(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(t,e){return e||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||M(t,4,this.length),r.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||M(t,4,this.length),r.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||M(t,8,this.length),r.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||M(t,8,this.length),r.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||I(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,a=0;for(this[e]=255&t;++a<n&&(r*=256);)this[e+a]=t/r&255;return e+n},l.prototype.writeUIntBE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||I(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,a=1;for(this[e+r]=255&t;--r>=0&&(a*=256);)this[e+r]=t/a&255;return e+n},l.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):P(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):P(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):N(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);I(this,t,e,n,r-1,-r)}var a=0,o=1,s=0;for(this[e]=255&t;++a<n&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);I(this,t,e,n,r-1,-r)}var a=n-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):P(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):P(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):N(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,n){return L(this,t,e,!0,n)},l.prototype.writeFloatBE=function(t,e,n){return L(this,t,e,!1,n)},l.prototype.writeDoubleLE=function(t,e,n){return R(this,t,e,!0,n)},l.prototype.writeDoubleBE=function(t,e,n){return R(this,t,e,!1,n)},l.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,a=i-n;if(this===t&&n<e&&e<i)for(r=a-1;r>=0;--r)t[r+e]=this[r+n];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r<a;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},l.prototype.fill=function(t,e,n,i){if("string"==typeof t){if("string"==typeof e?(i=e,e=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!l.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var a;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var o=l.isBuffer(t)?t:F(new l(t,i).toString()),s=o.length;for(a=0;a<n-e;++a)this[a+e]=o[a%s]}return this};var j=/[^+\/0-9A-Za-z-_]/g;function H(t){return t<16?"0"+t.toString(16):t.toString(16)}function F(t,e){var n;e=e||1/0;for(var i=t.length,r=null,a=[],o=0;o<i;++o){if((n=t.charCodeAt(o))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&a.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&a.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;a.push(n)}else if(n<2048){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function B(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(j,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}}).call(this,n(4))},function(t,e,n){var i=n(0),r=n(5),a=n(1),o=function(){"use strict";function t(t,e,n,o){t&&(this.$container=a.toNode(t),this.$parent=t),this.$config=i.mixin(e,{headerHeight:33}),this.$gantt=o,this.$domEvents=o._createDomEventScope(),this.$id=e.id||"c"+i.uid(),this.$name="cell",this.$factory=n,r(this)}return t.prototype.destructor=function(){this.$parent=this.$container=this.$view=null,this.$gantt.$services.getService("mouseEvents").detach("click","gantt_header_arrow",this._headerClickHandler),this.$domEvents.detachAll(),this.callEvent("onDestroy",[]),this.detachAllEvents()},t.prototype.cell=function(t){return null},t.prototype.scrollTo=function(t,e){var n=this.$view;this.$config.html&&(n=this.$view.firstChild),1*t==t&&(n.scrollLeft=t),1*e==e&&(n.scrollTop=e)},t.prototype.clear=function(){this.getNode().innerHTML="",this.getNode().className="gantt_layout_content",this.getNode().style.padding="0"},t.prototype.resize=function(t){if(this.$parent)return this.$parent.resize(t);!1===t&&(this.$preResize=!0);var e=this.$container,n=e.offsetWidth,i=e.offsetHeight,r=this.getSize();e===document.body&&(n=document.body.offsetWidth,i=document.body.offsetHeight),n<r.minWidth&&(n=r.minWidth),n>r.maxWidth&&(n=r.maxWidth),i<r.minHeight&&(i=r.minHeight),i>r.maxHeight&&(i=r.maxHeight),this.setSize(n,i),this.$preResize,this.$preResize=!1},t.prototype.hide=function(){this._hide(!0),this.resize()},t.prototype.show=function(t){this._hide(!1),t&&this.$parent&&this.$parent.show(),this.resize()},t.prototype._hide=function(t){if(!0===t&&this.$view.parentNode)this.$view.parentNode.removeChild(this.$view);else if(!1===t&&!this.$view.parentNode){var e=this.$parent.cellIndex(this.$id);this.$parent.moveView(this,e)}this.$config.hidden=t},t.prototype.$toHTML=function(t,e){void 0===t&&(t=""),e=[e||"",this.$config.css||""].join(" ");var n=this.$config,i="";n.raw?t="string"==typeof n.raw?n.raw:"":(t||(t="<div class='gantt_layout_content' "+(e?" class='"+e+"' ":"")+" >"+(n.html||"")+"</div>"),n.header&&(i="<div class='gantt_layout_header'>"+(n.canCollapse?"<div class='gantt_layout_header_arrow'></div>":"")+"<div class='gantt_layout_header_content'>"+n.header+"</div></div>"));return"<div class='gantt_layout_cell "+e+"' data-cell-id='"+this.$id+"'>"+i+t+"</div>"},t.prototype.$fill=function(t,e){this.$view=t,this.$parent=e,this.init()},t.prototype.getNode=function(){return this.$view.querySelector("gantt_layout_cell")||this.$view},t.prototype.init=function(){var t=this;this._headerClickHandler=function(e){a.locateAttribute(e,"data-cell-id")==t.$id&&t.toggle()},this.$gantt.$services.getService("mouseEvents").delegate("click","gantt_header_arrow",this._headerClickHandler),this.callEvent("onReady",[])},t.prototype.toggle=function(){this.$config.collapsed=!this.$config.collapsed,this.resize()},t.prototype.getSize=function(){var t={height:this.$config.height||0,width:this.$config.width||0,gravity:this.$config.gravity||1,minHeight:this.$config.minHeight||0,minWidth:this.$config.minWidth||0,maxHeight:this.$config.maxHeight||1e11,maxWidth:this.$config.maxWidth||1e11};if(this.$config.collapsed){var e="x"===this.$config.mode;t[e?"width":"height"]=t[e?"maxWidth":"maxHeight"]=this.$config.headerHeight}return t},t.prototype.getContentSize=function(){var t=this.$lastSize.contentX;t!==1*t&&(t=this.$lastSize.width);var e=this.$lastSize.contentY;return e!==1*e&&(e=this.$lastSize.height),{width:t,height:e}},t.prototype._getBorderSizes=function(){var t={top:0,right:0,bottom:0,left:0,horizontal:0,vertical:0};return this._currentBorders&&(this._currentBorders[this._borders.left]&&(t.left=1,t.horizontal++),this._currentBorders[this._borders.right]&&(t.right=1,t.horizontal++),this._currentBorders[this._borders.top]&&(t.top=1,t.vertical++),this._currentBorders[this._borders.bottom]&&(t.bottom=1,t.vertical++)),t},t.prototype.setSize=function(t,e){this.$view.style.width=t+"px",this.$view.style.height=e+"px";var n=this._getBorderSizes(),i=e-n.vertical,r=t-n.horizontal;this.$lastSize={x:t,y:e,contentX:r,contentY:i},this.$config.header?this._sizeHeader():this._sizeContent()},t.prototype._borders={left:"gantt_layout_cell_border_left",right:"gantt_layout_cell_border_right",top:"gantt_layout_cell_border_top",bottom:"gantt_layout_cell_border_bottom"},t.prototype._setBorders=function(t,e){e||(e=this);var n=e.$view;for(var i in this._borders)a.removeClassName(n,this._borders[i]);"string"==typeof t&&(t=[t]);var r={};for(i=0;i<t.length;i++)a.addClassName(n,t[i]),r[t[i]]=!0;e._currentBorders=r},t.prototype._sizeContent=function(){var t=this.$view.childNodes[0];t&&"gantt_layout_content"==t.className&&(t.style.height=this.$lastSize.contentY+"px")},t.prototype._sizeHeader=function(){var t=this.$lastSize;t.contentY-=this.$config.headerHeight;var e=this.$view.childNodes[0],n=this.$view.childNodes[1],i="x"===this.$config.mode;if(this.$config.collapsed)if(n.style.display="none",i){e.className="gantt_layout_header collapsed_x",e.style.width=t.y+"px";var r=Math.floor(t.y/2-t.x/2);e.style.transform="rotate(90deg) translate("+r+"px, "+r+"px)",n.style.display="none"}else e.className="gantt_layout_header collapsed_y";else e.className=i?"gantt_layout_header":"gantt_layout_header vertical",e.style.width="auto",e.style.transform="",n.style.display="",n.style.height=t.contentY+"px";e.style.height=this.$config.headerHeight+"px"},t}();t.exports=o},function(t,e,n){var i=n(11);t.exports=function(t){return i.isNode||!t.$root}},function(t,e){t.exports=function(t,e,n,i){if((i=e?e.config:i)&&i.placeholder_task&&n.exists(t))return n.getItem(t).type===i.types.placeholder;return!1}},function(t,e,n){(function(t){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===i(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"===n(t)},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===i(t)},e.isObject=function(t){return"object"===n(t)&&null!==t},e.isDate=function(t){return"[object Date]"===i(t)},e.isError=function(t){return"[object Error]"===i(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"===n(t)||void 0===t},e.isBuffer=t.isBuffer}).call(this,n(13).Buffer)},function(t,e,n){var i=n(3),r=n(36);t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}return i(a,e),a.prototype.render=function(t){var e="<div class='gantt_cal_ltext' style='height:"+((t.height||"23")+"px")+";'>";return e+=r.getHtmlSelect(t.options,[{key:"style",value:"width:100%;"},{key:"title",value:t.name}]),e+="</div>"},a.prototype.set_value=function(t,e,n,i){var r=t.firstChild;!r._dhx_onchange&&i.onchange&&(r.onchange=i.onchange,r._dhx_onchange=!0),void 0===e&&(e=(r.options[0]||{}).value),r.value=e||""},a.prototype.get_value=function(t){return t.firstChild.value},a.prototype.focus=function(e){var n=e.firstChild;t._focus(n,!0)},a}},function(t,e){t.exports=function(t,e,n,i,r){if(!t.start_date||!t.end_date)return null;var a=n.getItemTop(t.id),o=n.getItemHeight(t.id);if(a>e.y_end||a+o<e.y)return!1;var s=n.posFromDate(t.start_date),l=n.posFromDate(t.end_date),c=Math.min(s,l)-200,u=Math.max(s,l)+200;return!(c>e.x_end||u<e.x)}},function(t,e){t.exports=function(t){return t.config.smart_rendering&&t._smart_render}},function(t,e,n){(function(e){var n;n="undefined"!=typeof window?window:e,t.exports=n}).call(this,n(4))},function(t,e,n){var i=n(13),r=i.Buffer;function a(t,e){for(var n in t)e[n]=t[n]}function o(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=i:(a(i,e),e.Buffer=o),a(r,o),o.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},o.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},o.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},o.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},function(t,e,n){"use strict";(function(e){!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,n,i,r){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,o,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,i)});case 4:return e.nextTick(function(){t.call(null,n,i,r)});default:for(a=new Array(s-1),o=0;o<a.length;)a[o++]=arguments[o];return e.nextTick(function(){t.apply(null,a)})}}}:t.exports=e}).call(this,n(9))},function(t,e,n){var i=n(0);t.exports={createDropTargetObject:function(t){var e={targetParent:null,targetIndex:0,targetId:null,child:!1,nextSibling:!1,prevSibling:!1};return t&&i.mixin(e,t,!0),e},nextSiblingTarget:function(t,e,n){var i=this.createDropTargetObject();return i.targetId=e,i.nextSibling=!0,i.targetParent=n.getParent(i.targetId),i.targetIndex=n.getBranchIndex(i.targetId),(n.getParent(t)!=i.targetParent||i.targetIndex<n.getBranchIndex(t))&&(i.targetIndex+=1),i},prevSiblingTarget:function(t,e,n){var i=this.createDropTargetObject();return i.targetId=e,i.prevSibling=!0,i.targetParent=n.getParent(i.targetId),i.targetIndex=n.getBranchIndex(i.targetId),n.getParent(t)==i.targetParent&&i.targetIndex>n.getBranchIndex(t)&&(i.targetIndex-=1),i},firstChildTarget:function(t,e,n){var i=this.createDropTargetObject();return i.targetId=e,i.targetParent=i.targetId,i.targetIndex=0,i.child=!0,i},lastChildTarget:function(t,e,n){var i=n.getChildren(e),r=this.createDropTargetObject();return r.targetId=i[i.length-1],r.targetParent=e,r.targetIndex=i.length,r.nextSibling=!0,r}}},function(t,e,n){var i=n(20);t.exports=function(t,e,n,r){var a=e.width[t];if(a<=0)return!1;if(!r.config.smart_rendering||i(r))return!0;var o=e.left[t]-a,s=e.left[t]+a;return o<=n.x_end&&s>=n.x}},function(t,e){t.exports=function(t,e){var n=0,i=t.left.length-1;if(e)for(var r=0;r<t.left.length;r++){var a=t.left[r];if(a<e.x&&(n=r),a>e.x_end){i=r;break}}return{start:n,end:i}}},function(t,e){t.exports=function(t,e,n){return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:0,right:1/0}}},function(t,e){t.exports=function(t){function e(e,a,o){if(!t._isAllowedUnscheduledTask(e)&&t._isTaskInTimelineLimits(e)){var s=a.getItemPosition(e),l=o,c=a.$getTemplates(),u=t.getTaskType(e.type),d=a.getBarHeight(e.id,u==l.types.milestone),h=0;u==l.types.milestone&&(h=(d-s.height)/2);var f=Math.floor((a.getItemHeight(e.id)-d)/2);u==l.types.milestone&&(s.left-=Math.round(d/2),s.width=d);var _=document.createElement("div"),g=Math.round(s.width);a.$config.item_attribute&&(_.setAttribute(a.$config.item_attribute,e.id),_.setAttribute(a.$config.bind+"_id",e.id)),l.show_progress&&u!=l.types.milestone&&function(e,n,i,r,a){var o=1*e.progress||0;i=Math.max(i-2,0);var s=document.createElement("div"),l=Math.round(i*o);l=Math.min(i,l),e.progressColor&&(s.style.backgroundColor=e.progressColor,s.style.opacity=1),s.style.width=l+"px",s.className="gantt_task_progress",s.innerHTML=a.progress_text(e.start_date,e.end_date,e),r.rtl&&(s.style.position="absolute",s.style.right="0px");var c=document.createElement("div");if(c.className="gantt_task_progress_wrapper",c.appendChild(s),n.appendChild(c),t.config.drag_progress&&!t.isReadonly(e)){var u=document.createElement("div"),d=l;r.rtl&&(d=i-l),u.style.left=d+"px",u.className="gantt_task_progress_drag",s.appendChild(u),n.appendChild(u)}}(e,_,g,l,c);var p=function(e,n,i){var r=document.createElement("div");return t.getTaskType(e.type)!=t.config.types.milestone?r.innerHTML=i.task_text(e.start_date,e.end_date,e):t.getTaskType(e.type)==t.config.types.milestone&&n&&(r.style.height=r.style.width=n+"px"),r.className="gantt_task_content",r}(e,g,c);e.textColor&&(p.style.color=e.textColor),_.appendChild(p);var v=function(e,n,i,r){var a=r.$getConfig(),o=[e];n&&o.push(n);var s=t.getState(),l=t.getTask(i);if(t.getTaskType(l.type)==a.types.milestone?o.push("gantt_milestone"):t.getTaskType(l.type)==a.types.project&&o.push("gantt_project"),o.push("gantt_bar_"+t.getTaskType(l.type)),t.isSummaryTask(l)&&o.push("gantt_dependent_task"),t.isSplitTask(l)&&(a.open_split_tasks&&!l.$open||!a.open_split_tasks)&&o.push("gantt_split_parent"),a.select_task&&t.isSelectedTask(i)&&o.push("gantt_selected"),i==s.drag_id&&(o.push("gantt_drag_"+s.drag_mode),s.touch_drag&&o.push("gantt_touch_"+s.drag_mode)),s.link_source_id==i&&o.push("gantt_link_source"),s.link_target_id==i&&o.push("gantt_link_target"),a.highlight_critical_path&&t.isCriticalTask&&t.isCriticalTask(l)&&o.push("gantt_critical_task"),s.link_landing_area&&s.link_target_id&&s.link_source_id&&s.link_target_id!=s.link_source_id&&(s.link_target_id==i||s.link_source_id==i)){var c=s.link_source_id,u=s.link_from_start,d=s.link_to_start,h=t.isLinkAllowed(c,i,u,d),f="";f=h?d?"link_start_allow":"link_finish_allow":d?"link_start_deny":"link_finish_deny",o.push(f)}return o.join(" ")}("gantt_task_line",c.task_class(e.start_date,e.end_date,e),e.id,a);(e.color||e.progressColor||e.textColor)&&(v+=" gantt_task_inline_color"),s.width<20&&(v+=" gantt_thin_task"),_.className=v;var m=["left:"+s.left+"px","top:"+(f+s.top)+"px","height:"+(u==l.types.milestone?s.height:d)+"px","line-height:"+Math.max(d<30?d-2:d,0)+"px","width:"+g+"px"];e.color&&m.push("background-color:"+e.color),e.textColor&&m.push("color:"+e.textColor),_.style.cssText=m.join(";");var y=function(t,e,r,a){var o="gantt_left "+i(!e.rtl,t),s=null;return a&&(s={type:"marginRight",value:a}),n(t,r.leftside_text,o,s)}(e,l,c,h);y&&_.appendChild(y),(y=function(t,e,r,a){var o="gantt_right "+i(!!e.rtl,t),s=null;return a&&(s={type:"marginLeft",value:a}),n(t,r.rightside_text,o,s)}(e,l,c,h))&&_.appendChild(y),t._waiAria.setTaskBarAttr(e,_);var k=t.getState();return t.isReadonly(e)||(l.drag_resize&&!t.isSummaryTask(e)&&u!=l.types.milestone&&r(_,"gantt_task_drag",e,function(t){var e=document.createElement("div");return e.className=t,e},l),l.drag_links&&l.show_links&&r(_,"gantt_link_control",e,function(t){var e=document.createElement("div");e.className=t,e.style.cssText=["height:"+d+"px","line-height:"+d+"px"].join(";");var n=document.createElement("div");n.className="gantt_link_point";var i=!1;return k.link_source_id&&l.touch&&(i=!0),n.style.display=i?"block":"",e.appendChild(n),e},l,h)),_}}function n(t,e,n,i){if(!e)return null;var r=e(t.start_date,t.end_date,t);if(!r)return null;var a=document.createElement("div");return a.className="gantt_side_content "+n,a.innerHTML=r,i&&(a.style[i.type]=Math.abs(i.value)+"px"),a}function i(e,n){var i=function(e){return e?{$source:[t.config.links.start_to_start],$target:[t.config.links.start_to_start,t.config.links.finish_to_start]}:{$source:[t.config.links.finish_to_start,t.config.links.finish_to_finish],$target:[t.config.links.finish_to_finish]}}(e);for(var r in i)for(var a=n[r],o=0;o<a.length;o++)for(var s=t.getLink(a[o]),l=0;l<i[r].length;l++)if(s.type==i[r][l])return"gantt_link_crossing";return""}function r(e,n,i,r,a,o){var s,l=t.getState();+i.start_date>=+l.min_date&&((s=r([n,a.rtl?"task_right":"task_left","task_start_date"].join(" "))).setAttribute("data-bind-property","start_date"),o&&(s.style.marginLeft=o+"px"),e.appendChild(s)),+i.end_date<=+l.max_date&&((s=r([n,a.rtl?"task_left":"task_right","task_end_date"].join(" "))).setAttribute("data-bind-property","end_date"),o&&(s.style.marginRight=o+"px"),e.appendChild(s))}return function(n,i,r){var a=(r=i.$getConfig()).type_renderers[t.getTaskType(n.type)],o=e;return a?a.call(t,n,function(e){return o.call(t,e,i,r)},i):o.call(t,n,i,r)}}},function(t,e,n){var i=n(33),r=n(5),a=n(0),o=n(2),s=n(43),l=n(128),c=function(t,e,n,o){this.$config=a.mixin({},e||{}),this.$scaleHelper=new i(o),this.$gantt=o,this._posFromDateCache={},this._timelineDragScroll=null,a.mixin(this,s(this)),r(this)};c.prototype={init:function(t){t.innerHTML+="<div class='gantt_task' style='width:inherit;height:inherit;'></div>",this.$task=t.childNodes[0],this.$task.innerHTML="<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>",this.$task_scale=this.$task.childNodes[0],this.$task_data=this.$task.childNodes[1],this.$task_data.innerHTML="<div class='gantt_task_bg'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div>",this.$task_bg=this.$task_data.childNodes[0],this.$task_links=this.$task_data.childNodes[1],this.$task_bars=this.$task_data.childNodes[2],this._tasks={col_width:0,width:[],full_width:0,trace_x:[],rendered:{}};var e=this.$getConfig(),n=e[this.$config.bind+"_attribute"],i=e[this.$config.bindLinks+"_attribute"];!n&&this.$config.bind&&(n="data-"+this.$config.bind+"-id"),!i&&this.$config.bindLinks&&(i="data-"+this.$config.bindLinks+"-id"),this.$config.item_attribute=n||null,this.$config.link_attribute=i||null;var r=this._createLayerConfig();this.$config.layers||(this.$config.layers=r.tasks),this.$config.linkLayers||(this.$config.linkLayers=r.links),this._attachLayers(this.$gantt),this.callEvent("onReady",[]),this.$gantt.ext.dragTimeline&&(this._timelineDragScroll=this.$gantt.ext.dragTimeline.create(),this._timelineDragScroll.attach(this))},setSize:function(t,e){var n=this.$getConfig();if(1*t===t&&(this.$config.width=t),1*e===e){this.$config.height=e;var i=Math.max(this.$config.height-n.scale_height);this.$task_data.style.height=i+"px"}this.refresh(),this.$task_bg.style.backgroundImage="",n.smart_rendering&&this.$config.rowStore?this.$task_bg.style.height=this.getTotalHeight()+"px":this.$task_bg.style.height="";for(var r=this._tasks,a=this.$task_data.childNodes,o=0,s=a.length;o<s;o++){var l=a[o];l.hasAttribute("data-layer")&&l.style&&(l.style.width=r.full_width+"px")}},isVisible:function(){return this.$parent&&this.$parent.$config?!this.$parent.$config.hidden:this.$task.offsetWidth},getSize:function(){var t=this.$getConfig(),e=this.$config.rowStore?this.getTotalHeight():0,n=this.isVisible()?this._tasks.full_width:0;return{x:this.isVisible()?this.$config.width:0,y:this.isVisible()?this.$config.height:0,contentX:this.isVisible()?n:0,contentY:this.isVisible()?t.scale_height+e:0,scrollHeight:this.isVisible()?e:0,scrollWidth:this.isVisible()?n:0}},scrollTo:function(t,e){if(this.isVisible()){var n=!1;this.$config.scrollTop=this.$config.scrollTop||0,this.$config.scrollLeft=this.$config.scrollLeft||0,1*e===e&&(this.$config.scrollTop=e,this.$task_data.scrollTop=this.$config.scrollTop,n=!0),1*t===t&&(this.$task.scrollLeft=t,this.$config.scrollLeft=this.$task.scrollLeft,this._refreshScales(),n=!0),n&&this.callEvent("onScroll",[this.$config.scrollLeft,this.$config.scrollTop])}},_refreshScales:function(){if(this.isVisible()&&this.$getConfig().smart_scales){var t=this.getViewPort(),e=this._scales;this.$task_scale.innerHTML=this._getScaleChunkHtml(e,t.x,t.x_end)}},getViewPort:function(){var t=this.$config.scrollLeft||0,e=this.$config.scrollTop||0,n=this.$config.height||0,i=this.$config.width||0;return{y:e,y_end:e+n,x:t,x_end:t+i,height:n,width:i}},_createLayerConfig:function(){var t=this,e=function(){return t.isVisible()};return{tasks:[{expose:!0,renderer:this.$gantt.$ui.layers.taskBar(),container:this.$task_bars,filter:[e,function(t,e){return!e.hide_bar}]},{renderer:this.$gantt.$ui.layers.taskSplitBar(),filter:[e],container:this.$task_bars,append:!0},{renderer:this.$gantt.$ui.layers.taskRollupBar(),filter:[e],container:this.$task_bars,append:!0},{renderer:this.$gantt.$ui.layers.taskBg(),container:this.$task_bg,filter:[e]}],links:[{expose:!0,renderer:this.$gantt.$ui.layers.link(),container:this.$task_links,filter:[e]}]}},_attachLayers:function(t){this._taskLayers=[],this._linkLayers=[];var e=this,n=this.$gantt.$services.getService("layers");if(this.$config.bind){this._bindStore();var i=n.getDataRender(this.$config.bind);i||(i=n.createDataRender({name:this.$config.bind,defaultContainer:function(){return e.$task_data}})),i.container=function(){return e.$task_data};for(var r=this.$config.layers,a=0;r&&a<r.length;a++){"string"==typeof(c=r[a])&&(c=this.$gantt.$ui.layers[c]()),("function"==typeof c||c&&c.render&&c.update)&&(c={renderer:c}),c.view=this;var o=i.addLayer(c);this._taskLayers.push(o),c.expose&&(this._taskRenderer=i.getLayer(o))}this._initStaticBackgroundRender()}if(this.$config.bindLinks){e.$config.linkStore=e.$gantt.getDatastore(e.$config.bindLinks);var s=n.getDataRender(this.$config.bindLinks);s||(s=n.createDataRender({name:this.$config.bindLinks,defaultContainer:function(){return e.$task_data}}));var l=this.$config.linkLayers;for(a=0;l&&a<l.length;a++){var c;"string"==typeof c&&(c=this.$gantt.$ui.layers[c]()),(c=l[a]).view=this;var u=s.addLayer(c);this._taskLayers.push(u),l[a].expose&&(this._linkRenderer=s.getLayer(u))}}},_initStaticBackgroundRender:function(){var t=this,e=l.create(),n=t.$config.rowStore;n&&(this._staticBgHandler=n.attachEvent("onStoreUpdated",function(n,i,r){if(null===n&&t.isVisible()){var a=t.$getConfig();if(a.static_background||a.timeline_placeholder){var o=t.$gantt.getDatastore(t.$config.bind),s=t.$task_bg_static;if(s||((s=document.createElement("div")).className="gantt_task_bg",t.$task_bg_static=s,t.$task_bg.nextSibling?t.$task_data.insertBefore(s,t.$task_bg.nextSibling):t.$task_data.appendChild(s)),o){var l=t.getTotalHeight();a.timeline_placeholder&&(l=a.timeline_placeholder.height||t.$task_data.offsetHeight||99999),e.render(s,a,t.getScale(),l,t.getItemHeight(i?i.id:null))}}else a.static_background&&t.$task_bg_static&&t.$task_bg_static.parentNode&&t.$task_bg_static.parentNode.removeChild(t.$task_bg_static)}}),this.attachEvent("onDestroy",function(){e.destroy()}),this._initStaticBackgroundRender=function(){})},_clearLayers:function(t){var e=this.$gantt.$services.getService("layers"),n=e.getDataRender(this.$config.bind),i=e.getDataRender(this.$config.bindLinks);if(this._taskLayers)for(var r=0;r<this._taskLayers.length;r++)n.removeLayer(this._taskLayers[r]);if(this._linkLayers)for(r=0;r<this._linkLayers.length;r++)i.removeLayer(this._linkLayers[r]);this._linkLayers=[],this._taskLayers=[]},_render_tasks_scales:function(){var t=this.$getConfig(),e="",n=0,i=0,r=this.$gantt.getState();if(this.isVisible()){var a=this.$scaleHelper,o=this._getScales();i=t.scale_height;var s=this.$config.width;"x"!=t.autosize&&"xy"!=t.autosize||(s=Math.max(t.autosize_min_width,0));var l=a.prepareConfigs(o,t.min_column_width,s,i-1,r.min_date,r.max_date,t.rtl),c=this._tasks=l[l.length-1];this._scales=l,this._posFromDateCache={},e=this._getScaleChunkHtml(l,0,this.$config.width),n=c.full_width+"px",i+="px"}this.$task_scale.style.height=i,this.$task_data.style.width=this.$task_scale.style.width=n,this.$task_scale.innerHTML=e},_getScaleChunkHtml:function(t,e,n){for(var i=[],r=this.$gantt.templates.scale_row_class,a=0;a<t.length;a++){var o="gantt_scale_line",s=r(t[a]);s&&(o+=" "+s),i.push('<div class="'+o+'" style="height:'+t[a].height+"px;position:relative;line-height:"+t[a].height+'px">'+this._prepareScaleHtml(t[a],e,n)+"</div>")}return i.join("")},_prepareScaleHtml:function(t,e,n){var i=this.$getConfig(),r=this.$gantt.templates,a=[],s=null,l=null,c=t.format||t.template||t.date;"string"==typeof c&&(c=this.$gantt.date.date_to_str(c));var u=0,d=t.count;!i.smart_scales||isNaN(e)||isNaN(n)||(u=o.findBinary(t.left,e),d=o.findBinary(t.left,n)+1),l=t.css||function(){},!t.css&&i.inherit_scale_class&&(l=r.scale_cell_class);for(var h=u;h<d&&t.trace_x[h];h++){s=new Date(t.trace_x[h]);var f=c.call(this,s),_=t.width[h],g=t.height,p=t.left[h],v="",m="",y="";if(_){v="width:"+_+"px;height:"+g+"px;"+(i.smart_scales?"position:absolute;left:"+p+"px":""),y="gantt_scale_cell"+(h==t.count-1?" gantt_last_cell":""),(m=l.call(this,s))&&(y+=" "+m);var k="<div class='"+y+"'"+this.$gantt._waiAria.getTimelineCellAttr(f)+" style='"+v+"'>"+f+"</div>";a.push(k)}}return a.join("")},dateFromPos:function(t){var e=this._tasks;if(t<0||t>e.full_width||!e.full_width)return null;var n=o.findBinary(this._tasks.left,t),i=this._tasks.left[n],r=e.width[n]||e.col_width,a=0;r&&(a=(t-i)/r,e.rtl&&(a=1-a));var s=0;return a&&(s=this._getColumnDuration(e,e.trace_x[n])),new Date(e.trace_x[n].valueOf()+Math.round(a*s))},posFromDate:function(t){if(!this.isVisible())return 0;if(!t)return 0;var e=String(t.valueOf());if(void 0!==this._posFromDateCache[e])return this._posFromDateCache[e];var n=this.columnIndexByDate(t);this.$gantt.assert(n>=0,"Invalid day index");var i=Math.floor(n),r=n%1,a=this._tasks.left[Math.min(i,this._tasks.width.length-1)];i==this._tasks.width.length&&(a+=this._tasks.width[this._tasks.width.length-1]),r&&(i<this._tasks.width.length?a+=this._tasks.width[i]*(r%1):a+=1);var o=Math.round(a);return this._posFromDateCache[e]=o,Math.round(o)},_getNextVisibleColumn:function(t,e,n){for(var i=+e[t],r=t;n[i];)i=+e[++r];return r},_getPrevVisibleColumn:function(t,e,n){for(var i=+e[t],r=t;n[i];)i=+e[--r];return r},_getClosestVisibleColumn:function(t,e,n){var i=this._getNextVisibleColumn(t,e,n);return e[i]||(i=this._getPrevVisibleColumn(t,e,n)),i},columnIndexByDate:function(t){var e=new Date(t).valueOf(),n=this._tasks.trace_x_ascending,i=this._tasks.ignore_x,r=this.$gantt.getState();if(e<=r.min_date)return this._tasks.rtl?n.length:0;if(e>=r.max_date)return this._tasks.rtl?0:n.length;var a=o.findBinary(n,e),s=this._getClosestVisibleColumn(a,n,i),l=n[s],c=this._tasks.trace_index_transition;if(!l)return c?c[0]:0;var u=(t-n[s])/this._getColumnDuration(this._tasks,n[s]);return c?c[s]+(1-u):s+u},getItemPosition:function(t,e,n){var i,r,a;return this._tasks.rtl?(r=this.posFromDate(e||t.start_date),i=this.posFromDate(n||t.end_date)):(i=this.posFromDate(e||t.start_date),r=this.posFromDate(n||t.end_date)),a=Math.max(r-i,0),{left:i,top:this.getItemTop(t.id),height:this.getBarHeight(t.id),width:a,rowHeight:this.getItemHeight(t.id)}},getBarHeight:function(t,e){var n=this.$getConfig(),i=this.$config.rowStore.getItem(t),r=i.task_height||i.bar_height||n.bar_height||n.task_height,a=this.getItemHeight(t);"full"==r&&(r=a-(n.task_height_offset||5));return r=Math.min(r,a),e&&(r=Math.round(r/Math.sqrt(2))),Math.max(r,0)},getScale:function(){return this._tasks},_getScales:function(){var t=this.$getConfig(),e=this.$scaleHelper,n=[e.primaryScale(t)].concat(e.getSubScales(t));return e.sortScales(n),n},_getColumnDuration:function(t,e){return this.$gantt.date.add(e,t.step,t.unit)-e},_bindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=t,t&&!t._timelineCacheAttached){var e=this;t._timelineCacheAttached=t.attachEvent("onBeforeFilter",function(){e._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);t&&t._timelineCacheAttached&&(t.detachEvent(t._timelineCacheAttached),t._timelineCacheAttached=!1)}},refresh:function(){this._bindStore(),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._resetTopPositionHeight(),this._resetHeight(),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var t=this.$gantt;this._clearLayers(t),this._unbindStore(),this.$task=null,this.$task_scale=null,this.$task_data=null,this.$task_bg=null,this.$task_links=null,this.$task_bars=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.$config.linkStore&&(this.$config.linkStore=null),this._timelineDragScroll&&(this._timelineDragScroll.destructor(),this._timelineDragScroll=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},t.exports=c},function(t,e){t.exports=function(t,e,n){return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:0,right:1/0}}},function(t,e){t.exports=function(t){var e=[];return{delegate:function(n,i,r,a){e.push([n,i,r,a]),t.$services.getService("mouseEvents").delegate(n,i,r,a)},destructor:function(){for(var n=t.$services.getService("mouseEvents"),i=0;i<e.length;i++){var r=e[i];n.detach(r[0],r[1],r[2],r[3])}e=[]}}}},function(t,e,n){var i=n(1),r=n(0),a=n(5),o=n(209),s=n(43),l=n(207),c=n(206).default,u=function(t,e,n,i){this.$config=r.mixin({},e||{}),this.$gantt=i,this.$parent=t,a(this),this.$state={},r.mixin(this,s(this))};u.prototype={init:function(t){var e=this.$gantt,i=e._waiAria.gridAttrString(),r=e._waiAria.gridDataAttrString(),a=this.$getConfig(),s=a.reorder_grid_columns||!1;void 0!==this.$config.reorder_grid_columns&&(s=this.$config.reorder_grid_columns),t.innerHTML="<div class='gantt_grid' style='height:inherit;width:inherit;' "+i+"></div>",this.$grid=t.childNodes[0],this.$grid.innerHTML="<div class='gantt_grid_scale' "+e._waiAria.gridScaleRowAttrString()+"></div><div class='gantt_grid_data' "+r+"></div>",this.$grid_scale=this.$grid.childNodes[0],this.$grid_data=this.$grid.childNodes[1];var u=a[this.$config.bind+"_attribute"];if(!u&&this.$config.bind&&(u="data-"+this.$config.bind+"-id"),this.$config.item_attribute=u||null,!this.$config.layers){var d=this._createLayerConfig();this.$config.layers=d}var h=o(e,this);h.init(),this._renderHeaderResizers=h.doOnRender,this._mouseDelegates=n(31)(e),l(e,this).init(),this._addLayers(this.$gantt),this._initEvents(),s&&(this._columnDND=new c(e,this),this._columnDND.init()),this.callEvent("onReady",[])},_validateColumnWidth:function(t,e){var n=t[e];if(n&&"*"!=n){var i=this.$gantt,r=1*n;isNaN(r)?i.assert(!1,"Wrong "+e+" value of column "+t.name):t[e]=r}},setSize:function(t,e){this.$config.width=this.$state.width=t,this.$config.height=this.$state.height=e;for(var n,i=this.getGridColumns(),r=0,a=(d=this.$getConfig()).grid_elastic_columns,o=0,s=i.length;o<s;o++)this._validateColumnWidth(i[o],"min_width"),this._validateColumnWidth(i[o],"max_width"),this._validateColumnWidth(i[o],"width"),r+=1*i[o].width;if(!isNaN(r)&&this.$config.scrollable||(r=n=this._setColumnsWidth(t+1)),this.$config.scrollable&&a&&!isNaN(r)){var l="width";"min_width"==a&&(l="min_width");var c=0;i.forEach(function(t){c+=t[l]||d.min_grid_column_width});var u=Math.max(c,t);r=this._setColumnsWidth(u),n=t}this.$config.scrollable?(this.$grid_scale.style.width=r+"px",this.$grid_data.style.width=r+"px"):(this.$grid_scale.style.width="inherit",this.$grid_data.style.width="inherit"),this.$config.width-=1;var d=this.$getConfig();n!==t&&(void 0!==n?(d.grid_width=n,this.$config.width=n-1):isNaN(r)||(this._setColumnsWidth(r),d.grid_width=r,this.$config.width=r-1));var h=Math.max(this.$state.height-d.scale_height,0);this.$grid_data.style.height=h+"px",this.refresh()},getSize:function(){var t=this.$getConfig(),e=this.$config.rowStore?this.getTotalHeight():0,n=this._getGridWidth();return{x:this.$state.width,y:this.$state.height,contentX:this.isVisible()?n:0,contentY:this.isVisible()?t.scale_height+e:0,scrollHeight:this.isVisible()?e:0,scrollWidth:this.isVisible()?n:0}},_bindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=t,t&&!t._gridCacheAttached){var e=this;t._gridCacheAttached=t.attachEvent("onBeforeFilter",function(){e._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);t&&t._gridCacheAttached&&(t.detachEvent(t._gridCacheAttached),t._gridCacheAttached=!1)}},refresh:function(){this._bindStore(),this._resetTopPositionHeight(),this._resetHeight(),this._initSmartRenderingPlaceholder(),this._calculateGridWidth(),this._renderGridHeader()},getViewPort:function(){var t=this.$config.scrollLeft||0,e=this.$config.scrollTop||0,n=this.$config.height||0,i=this.$config.width||0;return{y:e,y_end:e+n,x:t,x_end:t+i,height:n,width:i}},scrollTo:function(t,e){if(this.isVisible()){var n=!1;this.$config.scrollTop=this.$config.scrollTop||0,this.$config.scrollLeft=this.$config.scrollLeft||0,1*t==t&&(this.$config.scrollLeft=this.$state.scrollLeft=this.$grid.scrollLeft=t,n=!0),1*e==e&&(this.$config.scrollTop=this.$state.scrollTop=this.$grid_data.scrollTop=e,n=!0),n&&this.callEvent("onScroll",[this.$config.scrollLeft,this.$config.scrollTop])}},getColumnIndex:function(t,e){for(var n=this.$getConfig().columns,i=0,r=0;r<n.length;r++)if(e&&n[r].hide&&i++,n[r].name==t)return r-i;return null},getColumn:function(t){var e=this.getColumnIndex(t);return null===e?null:this.$getConfig().columns[e]},getGridColumns:function(){return this.$getConfig().columns.slice()},isVisible:function(){return this.$parent&&this.$parent.$config?!this.$parent.$config.hidden:this.$grid.offsetWidth},_createLayerConfig:function(){var t=this.$gantt,e=this;return[{renderer:t.$ui.layers.gridLine(),container:this.$grid_data,filter:[function(){return e.isVisible()}]},{renderer:t.$ui.layers.gridTaskRowResizer(),container:this.$grid_data,append:!0,filter:[function(){return t.config.resize_rows}]}]},_addLayers:function(t){if(this.$config.bind){this._taskLayers=[];var e=this,n=this.$gantt.$services.getService("layers"),i=n.getDataRender(this.$config.bind);i||(i=n.createDataRender({name:this.$config.bind,defaultContainer:function(){return e.$grid_data}}));for(var r=this.$config.layers,a=0;r&&a<r.length;a++){var o=r[a];o.view=this;var s=i.addLayer(o);this._taskLayers.push(s)}this._bindStore(),this._initSmartRenderingPlaceholder()}},_refreshPlaceholderOnStoreUpdate:function(t){var e=this.$getConfig(),n=this.$config.rowStore;if(n&&null===t&&this.isVisible()&&e.smart_rendering){var i;if(this.$config.scrollY){var r=this.$gantt.$ui.getView(this.$config.scrollY);r&&(i=r.getScrollState().scrollSize)}if(i||(i=n?this.getTotalHeight():0),i){this.$rowsPlaceholder&&this.$rowsPlaceholder.parentNode&&this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);var a=this.$rowsPlaceholder=document.createElement("div");a.style.visibility="hidden",a.style.height=i+"px",a.style.width="1px",this.$grid_data.appendChild(a)}}},_initSmartRenderingPlaceholder:function(){var t=this.$config.rowStore;t&&(this._initSmartRenderingPlaceholder=function(){},this._staticBgHandler=t.attachEvent("onStoreUpdated",r.bind(this._refreshPlaceholderOnStoreUpdate,this)))},_initEvents:function(){var t=this.$gantt;this._mouseDelegates.delegate("click","gantt_close",t.bind(function(t,e,n){var r=this.$config.rowStore;if(!r)return!0;var a=i.locateAttribute(t,this.$config.item_attribute);return a&&r.close(a.getAttribute(this.$config.item_attribute)),!1},this),this.$grid),this._mouseDelegates.delegate("click","gantt_open",t.bind(function(t,e,n){var r=this.$config.rowStore;if(!r)return!0;var a=i.locateAttribute(t,this.$config.item_attribute);return a&&r.open(a.getAttribute(this.$config.item_attribute)),!1},this),this.$grid)},_clearLayers:function(t){var e=this.$gantt.$services.getService("layers").getDataRender(this.$config.bind);if(this._taskLayers)for(var n=0;n<this._taskLayers.length;n++)e.removeLayer(this._taskLayers[n]);this._taskLayers=[]},_getColumnWidth:function(t,e,n){var i=t.min_width||e.min_grid_column_width,r=Math.max(n,i||10);return t.max_width&&(r=Math.min(r,t.max_width)),r},_checkGridColumnMinWidthLimits:function(t,e){for(var n=0,i=t.length;n<i;n++){var r=1*t[n].width;!t[n].min_width&&r<e.min_grid_column_width&&(t[n].min_width=r)}},_getGridWidthLimits:function(){for(var t=this.$getConfig(),e=this.getGridColumns(),n=0,i=0,r=0;r<e.length;r++)n+=e[r].min_width?e[r].min_width:t.min_grid_column_width,void 0!==i&&(i=e[r].max_width?i+e[r].max_width:void 0);return this._checkGridColumnMinWidthLimits(e,t),[n,i]},_setColumnsWidth:function(t,e){var n=this.$getConfig(),i=this.getGridColumns(),r=0,a=t;e=window.isNaN(e)?-1:e;for(var o=0,s=i.length;o<s;o++)r+=1*i[o].width;if(window.isNaN(r)){this._calculateGridWidth(),r=0;for(o=0,s=i.length;o<s;o++)r+=1*i[o].width}var l=a-r,c=0;for(o=0;o<e+1;o++)c+=i[o].width;r-=c;for(o=e+1;o<i.length;o++){var u=i[o],d=Math.round(l*(u.width/r));l<0?u.min_width&&u.width+d<u.min_width?d=u.min_width-u.width:!u.min_width&&n.min_grid_column_width&&u.width+d<n.min_grid_column_width&&(d=n.min_grid_column_width-u.width):u.max_width&&u.width+d>u.max_width&&(d=u.max_width-u.width),r-=u.width,u.width+=d,l-=d}for(var h=l>0?1:-1;l>0&&1===h||l<0&&-1===h;){var f=l;for(o=e+1;o<i.length;o++){var _;if((_=i[o].width+h)==this._getColumnWidth(i[o],n,_)&&(l-=h,i[o].width=_),!l)break}if(f==l)break}l&&e>-1&&((_=i[e].width+l)==this._getColumnWidth(i[e],n,_)&&(i[e].width=_));return this._getColsTotalWidth()},_getColsTotalWidth:function(){for(var t=this.getGridColumns(),e=0,n=0;n<t.length;n++){var i=parseFloat(t[n].width);if(window.isNaN(i))return!1;e+=i}return e},_calculateGridWidth:function(){for(var t=this.$getConfig(),e=this.getGridColumns(),n=0,i=[],r=[],a=0;a<e.length;a++){var o=parseFloat(e[a].width);window.isNaN(o)&&(o=t.min_grid_column_width||10,i.push(a)),r[a]=o,n+=o}var s=this._getGridWidth()+1;if(t.autofit||i.length){var l=s-n;if(t.autofit&&!t.grid_elastic_columns)for(a=0;a<r.length;a++){var c=Math.round(l/(r.length-a));r[a]+=c,(u=this._getColumnWidth(e[a],t,r[a]))!=r[a]&&(c=u-r[a],r[a]=u),l-=c}else if(i.length)for(a=0;a<i.length;a++){c=Math.round(l/(i.length-a));var u,d=i[a];r[d]+=c,(u=this._getColumnWidth(e[d],t,r[d]))!=r[d]&&(c=u-r[d],r[d]=u),l-=c}for(a=0;a<r.length;a++)e[a].width=r[a]}else{var h=s!=n;this.$config.width=n-1,t.grid_width=n,h&&this.$parent._setContentSize(this.$config.width,null)}},_renderGridHeader:function(){var t=this.$gantt,e=this.$getConfig(),n=this.$gantt.locale,i=this.$gantt.templates,r=this.getGridColumns();e.rtl&&(r=r.reverse());for(var a=[],o=0,s=n.labels,l=e.scale_height-1,c=0;c<r.length;c++){var u=c==r.length-1,d=r[c];d.name||(d.name=t.uid()+"");var h=1*d.width,f=this._getGridWidth();u&&f>o+h&&(d.width=h=f-o),o+=h;var _=t._sort&&d.name==t._sort.name?"<div class='gantt_sort gantt_"+t._sort.direction+"'></div>":"",g=["gantt_grid_head_cell","gantt_grid_head_"+d.name,u?"gantt_last_cell":"",i.grid_header_class(d.name,d)].join(" "),p="width:"+(h-(u?1:0))+"px;",v=d.label||s["column_"+d.name]||s[d.name];v=v||"";var m="<div class='"+g+"' style='"+p+"' "+t._waiAria.gridScaleCellAttrString(d,v)+" data-column-id='"+d.name+"' column_id='"+d.name+"' data-column-name='"+d.name+"' data-column-index='"+c+"'>"+v+_+"</div>";a.push(m)}this.$grid_scale.style.height=e.scale_height+"px",this.$grid_scale.style.lineHeight=l+"px",this.$grid_scale.innerHTML=a.join(""),this._renderHeaderResizers&&this._renderHeaderResizers()},_getGridWidth:function(){return this.$config.width},destructor:function(){this._clearLayers(this.$gantt),this._mouseDelegates&&(this._mouseDelegates.destructor(),this._mouseDelegates=null),this._unbindStore(),this.$grid=null,this.$grid_scale=null,this.$grid_data=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},t.exports=u},function(t,e,n){var i=n(0);t.exports=function(t){var e=t.date,n=t.$services;return{getSum:function(t,e,n){void 0===n&&(n=t.length-1),void 0===e&&(e=0);for(var i=0,r=e;r<=n;r++)i+=t[r];return i},setSumWidth:function(t,e,n,i){var r=e.width;void 0===i&&(i=r.length-1),void 0===n&&(n=0);var a=i-n+1;if(!(n>r.length-1||a<=0||i>r.length-1)){var o=t-this.getSum(r,n,i);this.adjustSize(o,r,n,i),this.adjustSize(-o,r,i+1),e.full_width=this.getSum(r)}},splitSize:function(t,e){for(var n=[],i=0;i<e;i++)n[i]=0;return this.adjustSize(t,n),n},adjustSize:function(t,e,n,i){n||(n=0),void 0===i&&(i=e.length-1);for(var r=i-n+1,a=this.getSum(e,n,i),o=n;o<=i;o++){var s=Math.floor(t*(a?e[o]/a:1/r));a-=e[o],t-=s,r--,e[o]+=s}e[e.length-1]+=t},sortScales:function(t){function n(t,n){var i=new Date(1970,0,1);return e.add(i,n,t)-i}t.sort(function(t,e){return n(t.unit,t.step)<n(e.unit,e.step)?1:n(t.unit,t.step)>n(e.unit,e.step)?-1:0});for(var i=0;i<t.length;i++)t[i].index=i},_isLegacyMode:function(e){var n=e||t.config;return n.scale_unit||n.date_scale||n.subscales},_prepareScaleObject:function(e){var n=e.format;return n||(n=e.template||e.date||"%d %M"),"string"==typeof n&&(n=t.date.date_to_str(n)),{unit:e.unit||"day",step:e.step||1,format:n,css:e.css}},primaryScale:function(e){var i,r=n.getService("templateLoader"),a=this._isLegacyMode(e),o=e||t.config;if(a)r.initTemplate("date_scale",void 0,void 0,o,t.config.templates),i={unit:t.config.scale_unit,step:t.config.step,template:t.templates.date_scale,date:t.config.date_scale,css:t.templates.scale_cell_class};else{var s=o.scales[0];i={unit:s.unit,step:s.step,template:s.template,format:s.format,date:s.date,css:s.css||t.templates.scale_cell_class}}return this._prepareScaleObject(i)},getSubScales:function(e){var n=this._isLegacyMode(e),i=e||t.config;return(n?i.subscales||[]:i.scales.slice(1)).map(function(t){return this._prepareScaleObject(t)}.bind(this))},prepareConfigs:function(t,e,n,i,r,a,o){for(var s=this.splitSize(i,t.length),l=n,c=[],u=t.length-1;u>=0;u--){var d=u==t.length-1,h=this.initScaleConfig(t[u],r,a);d&&this.processIgnores(h),this.initColSizes(h,e,l,s[u]),this.limitVisibleRange(h),d&&(l=h.full_width),c.unshift(h)}for(u=0;u<c.length-1;u++)this.alineScaleColumns(c[c.length-1],c[u]);for(u=0;u<c.length;u++)o&&this.reverseScale(c[u]),this.setPosSettings(c[u]);return c},reverseScale:function(t){t.width=t.width.reverse(),t.trace_x=t.trace_x.reverse();var e=t.trace_indexes;t.trace_indexes={},t.trace_index_transition={},t.rtl=!0;for(var n=0;n<t.trace_x.length;n++)t.trace_indexes[t.trace_x[n].valueOf()]=n,t.trace_index_transition[e[t.trace_x[n].valueOf()]]=n;return t},setPosSettings:function(t){for(var e=0,n=t.trace_x.length;e<n;e++)t.left.push((t.width[e-1]||0)+(t.left[e-1]||0))},_ignore_time_config:function(n,i){if(t.config.skip_off_time){for(var r=!0,a=n,o=0;o<i.step;o++)o&&(a=e.add(n,o,i.unit)),r=r&&!this.isWorkTime(a,i.unit);return r}return!1},processIgnores:function(t){t.ignore_x={},t.display_count=t.count},initColSizes:function(t,n,i,r){var a=i;t.height=r;var o=void 0===t.display_count?t.count:t.display_count;o||(o=1),t.col_width=Math.floor(a/o),n&&t.col_width<n&&(t.col_width=n,a=t.col_width*o),t.width=[];for(var s=t.ignore_x||{},l=0;l<t.trace_x.length;l++)if(s[t.trace_x[l].valueOf()]||t.display_count==t.count)t.width[l]=0;else{var c=1;"month"==t.unit&&(c=Math.round((e.add(t.trace_x[l],t.step,t.unit)-t.trace_x[l])/864e5)),t.width[l]=c}this.adjustSize(a-this.getSum(t.width),t.width),t.full_width=this.getSum(t.width)},initScaleConfig:function(t,e,n){var r=i.mixin({count:0,col_width:0,full_width:0,height:0,width:[],left:[],trace_x:[],trace_indexes:{},min_date:new Date(e),max_date:new Date(n)},t);return this.eachColumn(t.unit,t.step,e,n,function(t){r.count++,r.trace_x.push(new Date(t)),r.trace_indexes[t.valueOf()]=r.trace_x.length-1}),r.trace_x_ascending=r.trace_x.slice(),r},iterateScales:function(t,e,n,i,r){for(var a=e.trace_x,o=t.trace_x,s=n||0,l=i||o.length-1,c=0,u=1;u<a.length;u++){var d=t.trace_indexes[+a[u]];void 0!==d&&d<=l&&(r&&r.apply(this,[c,u,s,d]),s=d,c=u)}},alineScaleColumns:function(t,e,n,i){this.iterateScales(t,e,n,i,function(n,i,r,a){var o=this.getSum(t.width,r,a-1);this.getSum(e.width,n,i-1)!=o&&this.setSumWidth(o,e,n,i-1)})},eachColumn:function(n,i,r,a,o){var s=new Date(r),l=new Date(a);e[n+"_start"]&&(s=e[n+"_start"](s));var c=new Date(s);for(+c>=+l&&(l=e.add(c,i,n));+c<+l;){o.call(this,new Date(c));var u=c.getTimezoneOffset();c=e.add(c,i,n),c=t._correct_dst_change(c,u,i,n),e[n+"_start"]&&(c=e[n+"_start"](c))}},limitVisibleRange:function(t){var n=t.trace_x,i=t.width.length-1,r=0;if(+n[0]<+t.min_date&&0!=i){var a=Math.floor(t.width[0]*((n[1]-t.min_date)/(n[1]-n[0])));r+=t.width[0]-a,t.width[0]=a,n[0]=new Date(t.min_date)}var o=n.length-1,s=n[o],l=e.add(s,t.step,t.unit);if(+l>+t.max_date&&o>0&&(a=t.width[o]-Math.floor(t.width[o]*((l-t.max_date)/(l-s))),r+=t.width[o]-a,t.width[o]=a),r){for(var c=this.getSum(t.width),u=0,d=0;d<t.width.length;d++){var h=Math.floor(r*(t.width[d]/c));t.width[d]+=h,u+=h}this.adjustSize(r-u,t.width)}}}}},,function(t,e,n){},function(t,e,n){var i=n(2),r={getHtmlSelect:function(t,e,n){var r="",o=this;return t=t||[],i.forEach(t,function(t){var e=[{key:"value",value:t.key}];n==t.key&&(e[e.length]={key:"selected",value:"selected"}),t.attributes&&(e=e.concat(t.attributes)),r+=o.getHtmlOption({innerHTML:t.label},e)}),a("select",{innerHTML:r},e)},getHtmlOption:function(t,e){return a("option",t,e)},getHtmlButton:function(t,e){return a("button",t,e)},getHtmlDiv:function(t,e){return a("div",t,e)},getHtmlLabel:function(t,e){return a("label",t,e)},getHtmlInput:function(t){return"<input"+o(t||[])+">"}};function a(t,e,n){return e=e||[],"<"+t+o(n||[])+">"+(e.innerHTML||"")+"</"+t+">"}function o(t){var e="";return i.forEach(t,function(t){e+=" "+t.key+"='"+t.value+"'"}),e}t.exports=r},function(t,e,n){var i=n(2);t.exports=function(t){var e={};return t.$data.tasksStore.attachEvent("onStoreUpdated",function(){e={}}),function(n,r,a,o){var s=n.id+"_"+r+"_"+a.unit+"_"+a.step;return e[s]?e[s]:e[s]=function(e,n,r,a){var o,s=!1,l={};t.config.process_resource_assignments&&n===t.config.resource_property?(o="task"==e.$role?t.getResourceAssignments(e.$resource_id,e.$task_id):t.getResourceAssignments(e.id),s=!0):o="task"==e.$role?[]:t.getTaskBy(n,e.id);for(var c,u,d,h,f,l=function(e,n,r){for(var a=n.unit,o=n.step,s={},l={},c=0;c<e.length;c++){var u=e[c],d=u;r&&(d=t.getTask(u.task_id));var h=u.start_date||d.start_date,f=u.end_date||d.end_date;r&&(u.start_date&&(h=new Date(Math.max(u.start_date.valueOf(),d.start_date.valueOf()))),u.end_date&&(f=new Date(Math.min(u.end_date.valueOf(),d.end_date.valueOf()))));var _=i.findBinary(n.trace_x,h.valueOf()),g=new Date(n.trace_x[_]||t.date[a+"_start"](new Date(h))),p=t.config.work_time?t.getTaskCalendar(d):t;for(l[p.id]={};g<f;){var v=l[p.id],m=g,y=m.valueOf();if(g=t.date.add(g,o,a),!1!==v[y]){var k=p.isWorkTime({date:m,task:d,unit:a});k?(s[y]||(s[y]={tasks:[],assignments:[]}),s[y].tasks.push(d),r&&s[y].assignments.push(u)):v[y]=!1}}}return s}(o,r,s),_=r.unit,g=r.step,p=[],v=a.$getConfig(),m=0;m<r.trace_x.length;m++)c=new Date(r.trace_x[m]),u=t.date.add(c,g,_),f=l[c.valueOf()]||{},d=f.tasks||[],h=f.assignments||[],d.length||v.resource_render_empty_cells?p.push({start_date:c,end_date:u,tasks:d,assignments:h}):p.push(null);return p}(n,r,a,o)}}},function(t,e,n){var i=n(3),r=n(1),a=function(t){"use strict";function e(e,n,i){var r=t.apply(this,arguments)||this;return e&&(r.$root=!0),r._parseConfig(n),r.$name="layout",r}return i(e,t),e.prototype.destructor=function(){this.$container&&this.$view&&r.removeNode(this.$view);for(var e=0;e<this.$cells.length;e++){this.$cells[e].destructor()}this.$cells=[],t.prototype.destructor.call(this)},e.prototype._resizeScrollbars=function(t,e){var n,i=!1,r=[],a=[],o=[];function s(t){t.$parent.show(),i=!0,r.push(t)}function l(t){t.$parent.hide(),i=!0,a.push(t)}for(var c=0;c<e.length;c++)t[(n=e[c]).$config.scroll]?l(n):n.shouldHide()?o.push(n):n.shouldShow()?s(n):n.isVisible()?r.push(n):a.push(n);var u={};for(c=0;c<r.length;c++)r[c].$config.group&&(u[r[c].$config.group]=!0);o.forEach(function(t){t.$config.group&&u[t.$config.group]||l(t)});for(c=0;c<a.length;c++)if((n=a[c]).$config.group&&u[n.$config.group]){s(n);for(var d=0;d<r.length;d++)if(r[d]==n){this.$gantt.$scrollbarRepaint=!0;break}}return i},e.prototype._syncCellSizes=function(t,e){if(t){var n={};return this._eachChild(function(t){t.$config.group&&"scrollbar"!=t.$name&&"resizer"!=t.$name&&(n[t.$config.group]||(n[t.$config.group]=[]),n[t.$config.group].push(t))}),n[t]&&this._syncGroupSize(n[t],e),n[t]}},e.prototype._syncGroupSize=function(t,e){if(t.length)for(var n=t[0].$parent._xLayout?"width":"height",i=t[0].$parent.getNextSibling(t[0].$id)?1:-1,r=e.value,a=e.isGravity,o=0;o<t.length;o++){var s=t[o].getSize(),l=i>0?t[o].$parent.getNextSibling(t[o].$id):t[o].$parent.getPrevSibling(t[o].$id);"resizer"==l.$name&&(l=i>0?l.$parent.getNextSibling(l.$id):l.$parent.getPrevSibling(l.$id));var c=l.getSize();if(a)t[o].$config.gravity=r;else if(l[n]){var u=s.gravity+c.gravity,d=s[n]+c[n],h=u/d;t[o].$config.gravity=h*r,l.$config[n]=d-r,l.$config.gravity=u-h*r}else t[o].$config[n]=r;var f=this.$gantt.$ui.getView("grid");!f||t[o].$content!==f||f.$config.scrollable||a||(this.$gantt.config.grid_width=r)}},e.prototype.resize=function(e){var n=!1;if(this.$root&&!this._resizeInProgress&&(this.callEvent("onBeforeResize",[]),n=!0,this._resizeInProgress=!0),t.prototype.resize.call(this,!0),t.prototype.resize.call(this,!1),n){var i=[];i=(i=(i=i.concat(this.getCellsByType("viewCell"))).concat(this.getCellsByType("viewLayout"))).concat(this.getCellsByType("hostCell"));for(var r=this.getCellsByType("scroller"),a=0;a<i.length;a++)i[a].$config.hidden||i[a].setContentSize();var o=this._getAutosizeMode(this.$config.autosize),s=this._resizeScrollbars(o,r);if(this.$config.autosize&&(this.autosize(this.$config.autosize),i.forEach(function(t){var e=t.$parent,n=e.getContentSize(o);o.x&&(e.$config.$originalWidthStored||(e.$config.$originalWidthStored=!0,e.$config.$originalWidth=e.$config.width),e.$config.width=n.width),o.y&&(e.$config.$originalHeightStored||(e.$config.$originalHeightStored=!0,e.$config.$originalHeight=e.$config.height),e.$config.height=n.height)}),s=!0),s){this.resize();for(a=0;a<i.length;a++)i[a].$config.hidden||i[a].setContentSize()}this.callEvent("onResize",[])}n&&(this._resizeInProgress=!1)},e.prototype._eachChild=function(t,e){if(t(e=e||this),e.$cells)for(var n=0;n<e.$cells.length;n++)this._eachChild(t,e.$cells[n])},e.prototype.isChild=function(t){var e=!1;return this._eachChild(function(n){n!==t&&n.$content!==t||(e=!0)}),e},e.prototype.getCellsByType=function(t){var n=[];if(t===this.$name&&n.push(this),this.$content&&this.$content.$name==t&&n.push(this.$content),this.$cells)for(var i=0;i<this.$cells.length;i++){var r=e.prototype.getCellsByType.call(this.$cells[i],t);r.length&&n.push.apply(n,r)}return n},e.prototype.getNextSibling=function(t){var e=this.cellIndex(t);return e>=0&&this.$cells[e+1]?this.$cells[e+1]:null},e.prototype.getPrevSibling=function(t){var e=this.cellIndex(t);return e>=0&&this.$cells[e-1]?this.$cells[e-1]:null},e.prototype.cell=function(t){for(var e=0;e<this.$cells.length;e++){var n=this.$cells[e];if(n.$id===t)return n;var i=n.cell(t);if(i)return i}},e.prototype.cellIndex=function(t){for(var e=0;e<this.$cells.length;e++)if(this.$cells[e].$id===t)return e;return-1},e.prototype.moveView=function(t,e){if(this.$cells[e]!==t)return window.alert("Not implemented");e+=this.$config.header?1:0;var n=this.$view;e>=n.childNodes.length?n.appendChild(t.$view):n.insertBefore(t.$view,n.childNodes[e])},e.prototype._parseConfig=function(t){this.$cells=[],this._xLayout=!t.rows;for(var e=t.rows||t.cols||t.views,n=0;n<e.length;n++){var i=e[n];i.mode=this._xLayout?"x":"y";var r=this.$factory.initUI(i,this);r?(r.$parent=this,this.$cells.push(r)):(e.splice(n,1),n--)}},e.prototype.getCells=function(){return this.$cells},e.prototype.render=function(){var t=r.insertNode(this.$container,this.$toHTML());this.$fill(t,null),this.callEvent("onReady",[]),this.resize(),this.render=this.resize},e.prototype.$fill=function(t,e){this.$view=t,this.$parent=e;for(var n=r.getChildNodes(t,"gantt_layout_cell"),i=n.length-1;i>=0;i--){var a=this.$cells[i];a.$fill(n[i],this),a.$config.hidden&&a.$view.parentNode.removeChild(a.$view)}},e.prototype.$toHTML=function(){for(var e=this._xLayout?"x":"y",n=[],i=0;i<this.$cells.length;i++)n.push(this.$cells[i].$toHTML());return t.prototype.$toHTML.call(this,n.join(""),(this.$root?"gantt_layout_root ":"")+"gantt_layout gantt_layout_"+e)},e.prototype.getContentSize=function(t){for(var e,n,i,r=0,a=0,o=0;o<this.$cells.length;o++)(n=this.$cells[o]).$config.hidden||(e=n.getContentSize(t),"scrollbar"===n.$config.view&&t[n.$config.scroll]&&(e.height=0,e.width=0),n.$config.resizer&&(this._xLayout?e.height=0:e.width=0),i=n._getBorderSizes(),this._xLayout?(r+=e.width+i.horizontal,a=Math.max(a,e.height+i.vertical)):(r=Math.max(r,e.width+i.horizontal),a+=e.height+i.vertical));return{width:r+=(i=this._getBorderSizes()).horizontal,height:a+=i.vertical}},e.prototype._cleanElSize=function(t){return 1*(t||"").toString().replace("px","")||0},e.prototype._getBoxStyles=function(t){var e=null,n=["width","height","paddingTop","paddingBottom","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],i={boxSizing:"border-box"==(e=window.getComputedStyle?window.getComputedStyle(t,null):{width:t.clientWidth,height:t.clientHeight}).boxSizing};e.MozBoxSizing&&(i.boxSizing="border-box"==e.MozBoxSizing);for(var r=0;r<n.length;r++)i[n[r]]=e[n[r]]?this._cleanElSize(e[n[r]]):0;var a={horPaddings:i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth,vertPaddings:i.paddingTop+i.paddingBottom+i.borderTopWidth+i.borderBottomWidth,borderBox:i.boxSizing,innerWidth:i.width,innerHeight:i.height,outerWidth:i.width,outerHeight:i.height};return a.borderBox?(a.innerWidth-=a.horPaddings,a.innerHeight-=a.vertPaddings):(a.outerWidth+=a.horPaddings,a.outerHeight+=a.vertPaddings),a},e.prototype._getAutosizeMode=function(t){var e={x:!1,y:!1};return"xy"===t?e.x=e.y=!0:"y"===t||!0===t?e.y=!0:"x"===t&&(e.x=!0),e},e.prototype.autosize=function(t){var e=this._getAutosizeMode(t),n=this._getBoxStyles(this.$container),i=this.getContentSize(t),r=this.$container;e.x&&(n.borderBox&&(i.width+=n.horPaddings),r.style.width=i.width+"px"),e.y&&(n.borderBox&&(i.height+=n.vertPaddings),r.style.height=i.height+"px")},e.prototype.getSize=function(){this._sizes=[];for(var e=0,n=0,i=1e11,r=0,a=1e11,o=0,s=0;s<this.$cells.length;s++){var l=this._sizes[s]=this.$cells[s].getSize();this.$cells[s].$config.hidden||(this._xLayout?(!l.width&&l.minWidth?e+=l.minWidth:e+=l.width,i+=l.maxWidth,n+=l.minWidth,r=Math.max(r,l.height),a=Math.min(a,l.maxHeight),o=Math.max(o,l.minHeight)):(!l.height&&l.minHeight?r+=l.minHeight:r+=l.height,a+=l.maxHeight,o+=l.minHeight,e=Math.max(e,l.width),i=Math.min(i,l.maxWidth),n=Math.max(n,l.minWidth)))}var c=t.prototype.getSize.call(this);return c.maxWidth>=1e5&&(c.maxWidth=i),c.maxHeight>=1e5&&(c.maxHeight=a),c.minWidth=c.minWidth!=c.minWidth?0:c.minWidth,c.minHeight=c.minHeight!=c.minHeight?0:c.minHeight,this._xLayout?(c.minWidth+=this.$config.margin*this.$cells.length||0,c.minWidth+=2*this.$config.padding||0,c.minHeight+=2*this.$config.padding||0):(c.minHeight+=this.$config.margin*this.$cells.length||0,c.minHeight+=2*this.$config.padding||0),c},e.prototype._calcFreeSpace=function(t,e,n){var i=n?e.minWidth:e.minHeight,r=e.maxWidth,a=t;return a?(a>r&&(a=r),a<i&&(a=i),this._free-=a):((a=Math.floor(this._free/this._gravity*e.gravity))>r&&(a=r,this._free-=a,this._gravity-=e.gravity),a<i&&(a=i,this._free-=a,this._gravity-=e.gravity)),a},e.prototype._calcSize=function(t,e,n){var i=t,r=n?e.minWidth:e.minHeight,a=n?e.maxWidth:e.maxHeight;return i||(i=Math.floor(this._free/this._gravity*e.gravity)),i>a&&(i=a),i<r&&(i=r),i},e.prototype._configureBorders=function(){this.$root&&this._setBorders([this._borders.left,this._borders.top,this._borders.right,this._borders.bottom],this);for(var t=this._xLayout?this._borders.right:this._borders.bottom,e=this.$cells,n=e.length-1,i=n;i>=0;i--)if(!e[i].$config.hidden){n=i;break}for(i=0;i<e.length;i++)if(!e[i].$config.hidden){var r=i>=n,a="";!r&&e[i+1]&&"scrollbar"==e[i+1].$config.view&&(this._xLayout?r=!0:a="gantt_layout_cell_border_transparent"),this._setBorders(r?[]:[t,a],e[i])}},e.prototype._updateCellVisibility=function(){for(var t=this._visibleCells||{},e=!this._visibleCells,n={},i=null,r=[],a=0;a<this._sizes.length;a++)(i=this.$cells[a]).$config.hide_empty&&r.push(i),!e&&i.$config.hidden&&t[i.$id]?i._hide(!0):i.$config.hidden||t[i.$id]||i._hide(!1),i.$config.hidden||(n[i.$id]=!0);this._visibleCells=n;for(a=0;a<r.length;a++){var o=!0;(i=r[a]).$cells.forEach(function(t){t.$config.hidden||t.$config.resizer||(o=!1)}),i.$config.hidden=o}},e.prototype.setSize=function(e,n){this._configureBorders(),t.prototype.setSize.call(this,e,n),n=this.$lastSize.contentY,e=this.$lastSize.contentX;var i,r,a=this.$config.padding||0;this.$view.style.padding=a+"px",this._gravity=0,this._free=this._xLayout?e:n,this._free-=2*a,this._updateCellVisibility();for(var o=0;o<this._sizes.length;o++)if(!(i=this.$cells[o]).$config.hidden){var s=this.$config.margin||0;"resizer"!=i.$name||s||(s=-1);var l=i.$view,c=this._xLayout?"marginRight":"marginBottom";o!==this.$cells.length-1&&(l.style[c]=s+"px",this._free-=s),r=this._sizes[o],this._xLayout?r.width||(this._gravity+=r.gravity):r.height||(this._gravity+=r.gravity)}for(o=0;o<this._sizes.length;o++)if(!(i=this.$cells[o]).$config.hidden){var u=(r=this._sizes[o]).width,d=r.height;this._xLayout?this._calcFreeSpace(u,r,!0):this._calcFreeSpace(d,r,!1)}for(o=0;o<this.$cells.length;o++)if(!(i=this.$cells[o]).$config.hidden){r=this._sizes[o];var h=void 0,f=void 0;this._xLayout?(h=this._calcSize(r.width,r,!0),f=n-2*a):(h=e-2*a,f=this._calcSize(r.height,r,!1)),i.setSize(h,f)}},e}(n(14));t.exports=a},function(t,e){t.exports=function(t,e,n,i,r){var a=n.$gantt.getTask(t.source),o=n.$gantt.getTask(t.target),s=n.getItemTop(a.id),l=n.getItemHeight(a.id),c=n.getItemTop(o.id),u=n.getItemHeight(o.id);if(e.y>s+l&&e.y>c+u)return!1;if(e.y_end<c&&e.y_end<s)return!1;var d=n.posFromDate(a.start_date),h=n.posFromDate(a.end_date),f=n.posFromDate(o.start_date),_=n.posFromDate(o.end_date);if(d>h){var g=h;h=d,d=g}if(f>_){g=_;_=f,f=g}return d+=-100,h+=100,f+=-100,_+=100,!(e.x>h&&e.x>_)&&!(e.x_end<d&&e.x_end<f)}},function(t,e,n){var i=n(134);t.exports=function(){var t=[],e=!1;function n(){t=[],e=!1}var r=!1;return function(a,o,s,l,c){!function(t){r||(r=!0,t.attachEvent("onPreFilter",n),t.attachEvent("onStoreUpdated",n),t.attachEvent("onClearAll",n),t.attachEvent("onBeforeStoreUpdate",n))}(l),e||function(n,r,a){var o=r.$getConfig();n.getVisibleItems().forEach(function(e){var n=i(e,r,o,a);n&&t.push({id:e.id,rec:n})}),t.sort(function(t,e){return t.rec.right<e.rec.right?-1:1}),e=!0}(l,o,a);for(var u=[],d=0;d<t.length;d++){var h=t[d],f=h.rec;f.right<c.x||f.left<c.x_end&&f.right>c.x&&f.top<c.y_end&&f.bottom>c.y&&u.push(h.id)}return{ids:u}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(196),r=n(195),a=n(194);e.LargerUnitsCache=a.LargerUnitsCache,e.createCacheObject=function(){return"undefined"!=typeof Map?new i.WorkUnitsMapCache:new r.WorkUnitsObjectCache}},function(t,e,n){var i=n(0),r=n(2);function a(t,e,n,i,r){return this.date=t,this.unit=e,this.task=n,this.id=i,this.calendar=r,this}function o(t,e,n,i,r,a){return this.date=t,this.dir=e,this.unit=n,this.task=i,this.id=r,this.calendar=a,this}function s(t,e,n,i,r,a,o){return this.start_date=t,this.duration=e,this.unit=n,this.step=i,this.task=r,this.id=a,this.calendar=o,this}function l(t,e,n,i){return this.start_date=t,this.end_date=e,this.task=n,this.calendar=i,this.unit=null,this.step=null,this}t.exports=function(t){return{getWorkHoursArguments:function(){var e=arguments[0];if(e=r.isDate(e)?{date:e}:i.mixin({},e),!r.isValidDate(e.date))throw t.assert(!1,"Invalid date argument for getWorkHours method"),new Error("Invalid date argument for getWorkHours method");return e},setWorkTimeArguments:function(){return arguments[0]},unsetWorkTimeArguments:function(){return arguments[0]},isWorkTimeArguments:function(){var e,n=arguments[0];if(n instanceof a)return n;if((e=n.date?new a(n.date,n.unit,n.task,null,n.calendar):new a(arguments[0],arguments[1],arguments[2],null,arguments[3])).unit=e.unit||t.config.duration_unit,!r.isValidDate(e.date))throw t.assert(!1,"Invalid date argument for isWorkTime method"),new Error("Invalid date argument for isWorkTime method");return e},getClosestWorkTimeArguments:function(e){var n,i=arguments[0];if(i instanceof o)return i;if(n=r.isDate(i)?new o(i):new o(i.date,i.dir,i.unit,i.task,null,i.calendar),i.id&&(n.task=i),n.dir=i.dir||"any",n.unit=i.unit||t.config.duration_unit,!r.isValidDate(n.date))throw t.assert(!1,"Invalid date argument for getClosestWorkTime method"),new Error("Invalid date argument for getClosestWorkTime method");return n},_getStartEndConfig:function(e){var n,i=l;if(e instanceof i)return e;if(r.isDate(e)?n=new i(arguments[0],arguments[1],arguments[2],arguments[3]):(n=new i(e.start_date,e.end_date,e.task),null!==e.id&&void 0!==e.id&&(n.task=e)),n.unit=n.unit||t.config.duration_unit,n.step=n.step||t.config.duration_step,n.start_date=n.start_date||n.start||n.date,!r.isValidDate(n.start_date))throw t.assert(!1,"Invalid start_date argument for getDuration method"),new Error("Invalid start_date argument for getDuration method");if(!r.isValidDate(n.end_date))throw t.assert(!1,"Invalid end_date argument for getDuration method"),new Error("Invalid end_date argument for getDuration method");return n},getDurationArguments:function(t,e,n,i){return this._getStartEndConfig.apply(this,arguments)},hasDurationArguments:function(t,e,n,i){return this._getStartEndConfig.apply(this,arguments)},calculateEndDateArguments:function(e,n,i,a){var o,l=arguments[0];if(l instanceof s)return l;if(o=r.isDate(l)?new s(arguments[0],arguments[1],arguments[2],void 0,arguments[3],void 0,arguments[4]):new s(l.start_date,l.duration,l.unit,l.step,l.task,null,l.calendar),null!==l.id&&void 0!==l.id&&(o.task=l,o.unit=null,o.step=null),o.unit=o.unit||t.config.duration_unit,o.step=o.step||t.config.duration_step,!r.isValidDate(o.start_date))throw t.assert(!1,"Invalid start_date argument for calculateEndDate method"),new Error("Invalid start_date argument for calculateEndDate method");return o}}}},function(t,e,n){var i=n(208);t.exports=function(t){var e={},n={},r=null,a=-1,o=null,s=i(t);return{_resetTopPositionHeight:function(){e={},n={},s.resetCache()},_resetHeight:function(){var t=this.$config.rowStore,e=this.getCacheStateTotalHeight(t);o?this.shouldClearHeightCache(o,e)&&(o=e,r=null):o=e,a=-1,s.resetCache()},getRowTop:function(t){if(s.canUseSimpleCalculation())return s.getRowTop(t);var e=this.$config.rowStore;if(!e)return 0;if(void 0!==n[t])return n[t];for(var i=e.getIndexRange(),r=0,a=0,o=0;o<i.length;o++)n[o]=r,r+=this.getItemHeight(i[o].id),o<t&&(a=r);return a},getItemTop:function(t){if(this.$config.rowStore){if(void 0!==e[t])return e[t];var n=this.$config.rowStore;if(!n)return 0;var i=n.getIndexById(t);if(-1===i&&n.getParent&&n.exists(t)){var r=n.getParent(t);if(n.exists(r)){var a=n.getItem(r);if(this.$gantt.isSplitTask(a))return this.getItemTop(r)}}return e[t]=this.getRowTop(i),e[t]}return 0},getItemHeight:function(t){if(s.canUseSimpleCalculation())return s.getItemHeight(t);if(!r&&this.$config.rowStore&&this._fillHeightCache(this.$config.rowStore),void 0!==r[t])return r[t];var e=this.$getConfig().row_height;if(this.$config.rowStore){var n=this.$config.rowStore;if(!n)return e;var i=n.getItem(t);return r[t]=i&&i.row_height||e}return e},_fillHeightCache:function(t){if(t){r={};var e=this.$getConfig().row_height;t.eachItem(function(t){return r[t.id]=t&&t.row_height||e})}},getCacheStateTotalHeight:function(t){var e=this.$getConfig().row_height,n={},i=[],r=0;return t&&t.eachItem(function(t){i.push(t),n[t.id]=t.row_height,r+=t.row_height||e}),{globalHeight:e,items:i,count:i.length,sumHeight:r}},shouldClearHeightCache:function(t,e){if(t.count!=e.count)return!0;if(t.globalHeight!=e.globalHeight)return!0;if(t.sumHeight!=e.sumHeight)return!0;for(var n in t.items){var i=e.items[n];if(void 0!==i&&i!=t.items[n])return!0}return!1},getTotalHeight:function(){if(s.canUseSimpleCalculation())return s.getTotalHeight();if(-1!=a)return a;if(this.$config.rowStore){var t=this.$config.rowStore;this._fillHeightCache(t);var e=this.getItemHeight.bind(this),n=0;return t.getVisibleItems().forEach(function(t){n+=e(t.id)}),a=n,n}return 0},getItemIndexByTopPosition:function(t){if(this.$config.rowStore){if(s.canUseSimpleCalculation())return s.getItemIndexByTopPosition(t);for(var e=this.$config.rowStore,n=0;n<e.countVisible();n++){var i=this.getRowTop(n),r=this.getRowTop(n+1);if(!r){var a=e.getIdByIndex(n);r=i+this.getItemHeight(a)}if(t>=i&&t<r)return n}return e.countVisible()+2}return 0}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){var t=this;this.canParse=function(e){return!isNaN(t.parse(e))},this.format=function(t){return String(t)},this.parse=function(t){return parseInt(t,10)}}return t.create=function(e){return void 0===e&&(e=null),new t},t}();e.default=i},function(t,e){function n(t,e,n){for(var i=0;i<e.length;i++)t.isLinkExists(e[i])&&(n[e[i]]=t.getLink(e[i]))}function i(t,e,i){n(t,e.$source,i),n(t,e.$target,i)}t.exports={getSubtreeLinks:function(t,e){var n={};return t.isTaskExists(e)&&i(t,t.getTask(e),n),t.eachTask(function(e){i(t,e,n)},e),n},getSubtreeTasks:function(t,e){var n={};return t.eachTask(function(t){n[t.id]=t},e),n}}},function(t,e,n){var i=n(33),r=n(33);function a(t){var e=function(t){var e=new r(t).primaryScale(),n=e.unit,a=e.step;if(t.config.scale_offset_minimal){var o=new i(t),s=[o.primaryScale()].concat(o.getSubScales());o.sortScales(s),n=s[s.length-1].unit,a=s[s.length-1].step||1}return{unit:n,step:a}}(t),n=e.unit,a=e.step,o=function(t,e){var n={start_date:null,end_date:null};if(e.config.start_date&&e.config.end_date){n.start_date=e.date[t+"_start"](new Date(e.config.start_date));var i=new Date(e.config.end_date),r=e.date[t+"_start"](new Date(i));i=+i!=+r?e.date.add(r,1,t):r,n.end_date=i}return n}(n,t);if(!o.start_date||!o.end_date){for(var s=!0,l=t.getTaskByTime(),c=0;c<l.length;c++){if(l[c].type!==t.config.types.project){s=!1;break}}if(l.length&&s){var u=l[0].start_date,d=t.date.add(u,1,t.config.duration_unit);o={start_date:new Date(u),end_date:new Date(d)}}else o=t.getSubtaskDates();o.start_date&&o.end_date||(o={start_date:new Date,end_date:new Date}),o.start_date=t.date[n+"_start"](o.start_date),o.start_date=t.calculateEndDate({start_date:t.date[n+"_start"](o.start_date),duration:-1,unit:n,step:a}),o.end_date=t.date[n+"_start"](o.end_date),o.end_date=t.calculateEndDate({start_date:o.end_date,duration:2,unit:n,step:a})}t._min_date=o.start_date,t._max_date=o.end_date}t.exports=function(t){a(t),function(t){if(t.config.fit_tasks){var e=+t._min_date,n=+t._max_date;if(+t._min_date!=e||+t._max_date!=n)return t.render(),t.callEvent("onScaleAdjusted",[]),!0}}(t)}},function(t,e,n){var i=n(48),r=n(0),a=n(2),o=n(49),s=n(16),l=n(2).replaceValidZeroId;o.default&&(o=o.default);var c=function(t){o.apply(this,[t]),this._branches={},this.pull={},this.$initItem=function(e){var n=e;t.initItem&&(n=t.initItem(n));var i=this.getItem(e.id);return i&&i.parent!=n.parent&&this.move(n.id,n.$index||-1,n.parent||this._ganttConfig.root_id),n},this.$parentProperty=t.parentProperty||"parent","function"!=typeof t.rootId?this.$getRootId=function(t){return function(){return t}}(t.rootId||0):this.$getRootId=t.rootId,this.$openInitially=t.openInitially,this.visibleOrder=i.$create(),this.fullOrder=i.$create(),this._searchVisibleOrder={},this._indexRangeCache={},this._eachItemMainRangeCache=null,this._getItemsCache=null,this._skip_refresh=!1,this._ganttConfig=null,t.getConfig&&(this._ganttConfig=t.getConfig());var e={},n={},r={},a={},s=!1;return this._attachDataChange(function(){return this._indexRangeCache={},this._eachItemMainRangeCache=null,this._getItemsCache=null,!0}),this.attachEvent("onPreFilter",function(){this._indexRangeCache={},this._eachItemMainRangeCache=null,e={},n={},r={},a={},s=!1,this.eachItem(function(t){var i=this.getParent(t.id);t.$open&&!1!==r[i]?r[t.id]=!0:r[t.id]=!1,this._isSplitItem(t)&&(s=!0,e[t.id]=!0,n[t.id]=!0),s&&n[i]&&(n[t.id]=!0),r[i]||void 0===r[i]?a[t.id]=!0:a[t.id]=!1})}),this.attachEvent("onFilterItem",function(t,i){var r=!1;if(this._ganttConfig)r=this._ganttConfig.open_split_tasks;var o=a[i.id];return s&&(o&&n[i.id]&&!e[i.id]&&(o=!!r),n[i.id]&&!e[i.id]&&(i.$split_subtask=!0)),i.$expanded_branch=!!a[i.id],!!o}),this.attachEvent("onFilter",function(){e={},n={},r={},a={}}),this};c.prototype=r.mixin({_buildTree:function(t){for(var e=null,n=this.$getRootId(),i=0,a=t.length;i<a;i++)e=t[i],this.setParent(e,l(this.getParent(e),n)||n);for(i=0,a=t.length;i<a;i++)e=t[i],this._add_branch(e),e.$level=this.calculateItemLevel(e),e.$local_index=this.getBranchIndex(e.id),r.defined(e.$open)||(e.$open=r.defined(e.open)?e.open:this.$openInitially());this._updateOrder()},_isSplitItem:function(t){return"split"==t.render&&this.hasChild(t.id)},parse:function(t){this._skip_refresh||this.callEvent("onBeforeParse",[t]);var e=this._parseInner(t);this._buildTree(e),this.filter(),this._skip_refresh||this.callEvent("onParse",[e])},_addItemInner:function(t,e){var n=this.getParent(t);r.defined(n)||(n=this.$getRootId(),this.setParent(t,n));var i=this.getIndexById(n)+Math.min(Math.max(e,0),this.visibleOrder.length);1*i!==i&&(i=void 0),o.prototype._addItemInner.call(this,t,i),this.setParent(t,n),t.hasOwnProperty("$rendered_parent")&&this._move_branch(t,t.$rendered_parent),this._add_branch(t,e)},_changeIdInner:function(t,e){var n=this.getChildren(t),i=this._searchVisibleOrder[t];o.prototype._changeIdInner.call(this,t,e);var r=this.getParent(e);this._replace_branch_child(r,t,e),this._branches[t]&&(this._branches[e]=this._branches[t]);for(var a=0;a<n.length;a++){var s=this.getItem(n[a]);s[this.$parentProperty]=e,s.$rendered_parent=e}this._searchVisibleOrder[e]=i,delete this._branches[t]},_traverseBranches:function(t,e){r.defined(e)||(e=this.$getRootId());var n=this._branches[e];if(n)for(var i=0;i<n.length;i++){var a=n[i];t.call(this,a),this._branches[a]&&this._traverseBranches(t,a)}},_updateOrder:function(t){this.fullOrder=i.$create(),this._traverseBranches(function(t){this.fullOrder.push(t)}),t&&o.prototype._updateOrder.call(this,t)},_removeItemInner:function(t){var e=[];this.eachItem(function(t){e.push(t)},t),e.push(this.getItem(t));for(var n=0;n<e.length;n++)this._move_branch(e[n],this.getParent(e[n]),null),o.prototype._removeItemInner.call(this,e[n].id),this._move_branch(e[n],this.getParent(e[n]),null)},move:function(t,e,n){var i=arguments[3],a=(this._ganttConfig||{}).root_id||0;if(i=l(i,a)){if(i===t)return;n=this.getParent(i),e=this.getBranchIndex(i)}if(t!=n){r.defined(n)||(n=this.$getRootId());var o=this.getItem(t),c=this.getParent(o.id),u=this.getChildren(n);if(-1==e&&(e=u.length+1),c==n)if(this.getBranchIndex(t)==e)return;if(!1===this.callEvent("onBeforeItemMove",[t,n,e]))return!1;for(var d=[],h=0;h<u.length;h++)s(u[h],null,this,this._ganttConfig)&&(d.push(u[h]),u.splice(h,1),h--);this._replace_branch_child(c,t);var f=(u=this.getChildren(n))[e];(f=l(f,a))?u=u.slice(0,e).concat([t]).concat(u.slice(e)):u.push(t),d.length&&(u=u.concat(d)),this.setParent(o,n),this._branches[n]=u;var _=this.calculateItemLevel(o)-o.$level;o.$level+=_,this.eachItem(function(t){t.$level+=_},o.id,this),this._moveInner(this.getIndexById(t),this.getIndexById(n)+e),this.callEvent("onAfterItemMove",[t,n,e]),this.refresh()}},getBranchIndex:function(t){var e=this.getChildren(this.getParent(t)),n=e.indexOf(t+"");return-1==n&&(n=e.indexOf(+t)),n},hasChild:function(t){var e=this._branches[t];return e&&e.length},getChildren:function(t){var e=this._branches[t];return e||i.$create()},isChildOf:function(t,e){if(!this.exists(t))return!1;if(e===this.$getRootId())return!0;if(!this.hasChild(e))return!1;var n=this.getItem(t),i=this.getParent(t);if(this.getItem(e).$level>=n.$level)return!1;for(;n&&this.exists(i);){if((n=this.getItem(i))&&n.id==e)return!0;i=this.getParent(n)}return!1},getSiblings:function(t){if(!this.exists(t))return i.$create();var e=this.getParent(t);return this.getChildren(e)},getNextSibling:function(t){for(var e=this.getSiblings(t),n=0,i=e.length;n<i;n++)if(e[n]==t){var r=e[n+1];return 0===r&&n>0&&(r="0"),r||null}return null},getPrevSibling:function(t){for(var e=this.getSiblings(t),n=0,i=e.length;n<i;n++)if(e[n]==t){var r=e[n-1];return 0===r&&n>0&&(r="0"),r||null}return null},getParent:function(t){var e=null;return(e=void 0!==t.id?t:this.getItem(t))?e[this.$parentProperty]:this.$getRootId()},clearAll:function(){this._branches={},o.prototype.clearAll.call(this)},calculateItemLevel:function(t){var e=0;return this.eachParent(function(){e++},t),e},_setParentInner:function(t,e,n){n||(t.hasOwnProperty("$rendered_parent")?this._move_branch(t,t.$rendered_parent,e):this._move_branch(t,t[this.$parentProperty],e))},setParent:function(t,e,n){this._setParentInner(t,e,n),t[this.$parentProperty]=e},_eachItemCached:function(t,e){for(var n=0,i=e.length;n<i;n++)t.call(this,e[n])},_eachItemIterate:function(t,e,n){var i=this.getChildren(e);for(i.length&&(i=i.slice().reverse());i.length;){var r=i.pop(),a=this.getItem(r);if(t.call(this,a),n&&n.push(a),this.hasChild(a.id))for(var o=this.getChildren(a.id),s=o.length-1;s>=0;s--)i.push(o[s])}},eachItem:function(t,e){var n=this.$getRootId();r.defined(e)||(e=n);var i=l(e,n)||n,a=!1,o=!1,s=null;i===n&&(this._eachItemMainRangeCache?(a=!0,s=this._eachItemMainRangeCache):(o=!0,s=this._eachItemMainRangeCache=[])),a?this._eachItemCached(t,s):this._eachItemIterate(t,i,o?s:null)},eachParent:function(t,e){for(var n={},i=e,r=this.getParent(i);this.exists(r);){if(n[r])throw new Error("Invalid tasks tree. Cyclic reference has been detected on task "+r);n[r]=!0,i=this.getItem(r),t.call(this,i),r=this.getParent(i)}},_add_branch:function(t,e,n){var r=void 0===n?this.getParent(t):n;this.hasChild(r)||(this._branches[r]=i.$create());var a=this.getChildren(r);a.indexOf(t.id+"")>-1||a.indexOf(+t.id)>-1||(1*e==e?a.splice(e,0,t.id):a.push(t.id),t.$rendered_parent=r)},_move_branch:function(t,e,n){this._eachItemMainRangeCache=null,this._replace_branch_child(e,t.id),this.exists(n)||n==this.$getRootId()?this._add_branch(t,void 0,n):delete this._branches[t.id],t.$level=this.calculateItemLevel(t),this.eachItem(function(t){t.$level=this.calculateItemLevel(t)},t.id)},_replace_branch_child:function(t,e,n){var r=this.getChildren(t);if(r&&void 0!==t){var a=i.$create(),o=r.indexOf(e+"");-1!=o||isNaN(+e)||(o=r.indexOf(+e)),o>-1&&(n?r.splice(o,1,n):r.splice(o,1)),a=r,this._branches[t]=a}},sort:function(t,e,n){this.exists(n)||(n=this.$getRootId()),t||(t="order");var i="string"==typeof t?function(e,n){return e[t]==n[t]||a.isDate(e[t])&&a.isDate(n[t])&&e[t].valueOf()==n[t].valueOf()?0:e[t]>n[t]?1:-1}:t;if(e){var r=i;i=function(t,e){return r(e,t)}}var o=this.getChildren(n);if(o){for(var s=[],l=o.length-1;l>=0;l--)s[l]=this.getItem(o[l]);s.sort(i);for(l=0;l<s.length;l++)o[l]=s[l].id,this.sort(t,e,o[l])}},filter:function(t){for(var e in this.pull){var n=this.pull[e].$rendered_parent,i=this.getParent(this.pull[e]);n!==i&&this._move_branch(this.pull[e],n,i)}return o.prototype.filter.apply(this,arguments)},open:function(t){this.exists(t)&&(this.getItem(t).$open=!0,this._skipTaskRecalculation=!0,this.callEvent("onItemOpen",[t]))},close:function(t){this.exists(t)&&(this.getItem(t).$open=!1,this._skipTaskRecalculation=!0,this.callEvent("onItemClose",[t]))},destructor:function(){o.prototype.destructor.call(this),this._branches=null,this._indexRangeCache={},this._eachItemMainRangeCache=null}},o.prototype),t.exports=c},function(t,e,n){var i=n(0),r={$create:function(t){return i.mixin(t||[],this)},$removeAt:function(t,e){t>=0&&this.splice(t,e||1)},$remove:function(t){this.$removeAt(this.$find(t))},$insertAt:function(t,e){if(e||0===e){var n=this.splice(e,this.length-e);this[e]=t,this.push.apply(this,n)}else this.push(t)},$find:function(t){for(var e=0;e<this.length;e++)if(t==this[e])return e;return-1},$each:function(t,e){for(var n=0;n<this.length;n++)t.call(e||this,this[n])},$map:function(t,e){for(var n=0;n<this.length;n++)this[n]=t.call(e||this,this[n]);return this},$filter:function(t,e){for(var n=0;n<this.length;n++)t.call(e||this,this[n])||(this.splice(n,1),n--);return this}};t.exports=r},function(t,e,n){var i=n(48),r=n(0),a=n(5),o=n(16),s=function(t){return this.pull={},this.$initItem=t.initItem,this.visibleOrder=i.$create(),this.fullOrder=i.$create(),this._skip_refresh=!1,this._filterRule=null,this._searchVisibleOrder={},this._indexRangeCache={},this._getItemsCache=null,this.$config=t,a(this),this._attachDataChange(function(){return this._indexRangeCache={},this._getItemsCache=null,!0}),this};s.prototype={_attachDataChange:function(t){this.attachEvent("onClearAll",t),this.attachEvent("onBeforeParse",t),this.attachEvent("onBeforeUpdate",t),this.attachEvent("onBeforeDelete",t),this.attachEvent("onBeforeAdd",t),this.attachEvent("onParse",t),this.attachEvent("onBeforeFilter",t)},_parseInner:function(t){for(var e=null,n=[],i=0,a=t.length;i<a;i++)e=t[i],this.$initItem&&(this.$config.copyOnParse()&&(e=r.copy(e)),e=this.$initItem(e)),this.callEvent("onItemLoading",[e])&&(this.pull.hasOwnProperty(e.id)||this.fullOrder.push(e.id),n.push(e),this.pull[e.id]=e);return n},parse:function(t){this.isSilent()||this.callEvent("onBeforeParse",[t]);var e=this._parseInner(t);this.isSilent()||(this.refresh(),this.callEvent("onParse",[e]))},getItem:function(t){return this.pull[t]},_updateOrder:function(t){t.call(this.visibleOrder),t.call(this.fullOrder)},updateItem:function(t,e){if(r.defined(e)||(e=this.getItem(t)),!this.isSilent()&&!1===this.callEvent("onBeforeUpdate",[e.id,e]))return!1;r.mixin(this.pull[t],e,!0),this.isSilent()||(this.callEvent("onAfterUpdate",[e.id,e]),this.callEvent("onStoreUpdated",[e.id,e,"update"]))},_removeItemInner:function(t){this._updateOrder(function(){this.$remove(t)}),delete this.pull[t]},removeItem:function(t){var e=this.getItem(t);if(!this.isSilent()&&!1===this.callEvent("onBeforeDelete",[e.id,e]))return!1;this.callEvent("onAfterDeleteConfirmed",[e.id,e]),this._removeItemInner(t),this.isSilent()||(this.filter(),this.callEvent("onAfterDelete",[e.id,e]),this.callEvent("onStoreUpdated",[e.id,e,"delete"]))},_addItemInner:function(t,e){if(this.exists(t.id))this.silent(function(){this.updateItem(t.id,t)});else{var n=this.visibleOrder,i=n.length;(!r.defined(e)||e<0)&&(e=i),e>i&&(e=Math.min(n.length,e))}this.pull[t.id]=t,this.isSilent()||this._updateOrder(function(){-1===this.$find(t.id)&&this.$insertAt(t.id,e)}),this.filter()},isVisible:function(t){return this.visibleOrder.$find(t)>-1},getVisibleItems:function(){return this.getIndexRange()},addItem:function(t,e){return r.defined(t.id)||(t.id=r.uid()),this.$initItem&&(t=this.$initItem(t)),!(!this.isSilent()&&!1===this.callEvent("onBeforeAdd",[t.id,t]))&&(this._addItemInner(t,e),this.isSilent()||(this.callEvent("onAfterAdd",[t.id,t]),this.callEvent("onStoreUpdated",[t.id,t,"add"])),t.id)},_changeIdInner:function(t,e){this.pull[t]&&(this.pull[e]=this.pull[t]);var n=this._searchVisibleOrder[t];this.pull[e].id=e,this._updateOrder(function(){this[this.$find(t)]=e}),this._searchVisibleOrder[e]=n,delete this._searchVisibleOrder[t],delete this.pull[t]},changeId:function(t,e){this._changeIdInner(t,e),this.callEvent("onIdChange",[t,e])},exists:function(t){return!!this.pull[t]},_moveInner:function(t,e){var n=this.getIdByIndex(t);this._updateOrder(function(){this.$removeAt(t),this.$insertAt(n,Math.min(this.length,e))})},move:function(t,e){var n=this.getIdByIndex(t),i=this.getItem(n);this._moveInner(t,e),this.isSilent()||this.callEvent("onStoreUpdated",[i.id,i,"move"])},clearAll:function(){this.$destroyed||(this.silent(function(){this.unselect()}),this.pull={},this.visibleOrder=i.$create(),this.fullOrder=i.$create(),this.isSilent()||(this.callEvent("onClearAll",[]),this.refresh()))},silent:function(t,e){var n=!1;this.isSilent()&&(n=!0),this._skip_refresh=!0,t.call(e||this),n||(this._skip_refresh=!1)},isSilent:function(){return!!this._skip_refresh},arraysEqual:function(t,e){if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0},refresh:function(t,e){var n,i;if(!this.isSilent()&&(t&&(n=this.getItem(t)),i=t?[t,n,"paint"]:[null,null,null],!1!==this.callEvent("onBeforeStoreUpdate",i))){var r=this._quick_refresh&&!this._mark_recompute;if(this._mark_recompute=!1,t){if(!e&&!r){var a=this.visibleOrder;this.filter(),this.arraysEqual(a,this.visibleOrder)||(t=void 0)}}else r||this.filter();i=t?[t,n,"paint"]:[null,null,null],this.callEvent("onStoreUpdated",i)}},count:function(){return this.fullOrder.length},countVisible:function(){return this.visibleOrder.length},sort:function(t){},serialize:function(){},eachItem:function(t){for(var e=0;e<this.fullOrder.length;e++){var n=this.getItem(this.fullOrder[e]);t.call(this,n)}},find:function(t){var e=[];return this.eachItem(function(n){t(n)&&e.push(n)}),e},filter:function(t){this.isSilent()||this.callEvent("onBeforeFilter",[]),this.callEvent("onPreFilter",[]);var e=i.$create(),n=[];this.eachItem(function(t){this.callEvent("onFilterItem",[t.id,t])&&(o(t.id,null,this,this._ganttConfig)?n.push(t.id):e.push(t.id))});for(var r=0;r<n.length;r++)e.push(n[r]);this.visibleOrder=e,this._searchVisibleOrder={};for(r=0;r<this.visibleOrder.length;r++)this._searchVisibleOrder[this.visibleOrder[r]]=r;this.isSilent()||this.callEvent("onFilter",[])},getIndexRange:function(t,e){var n=Math.min(e||1/0,this.countVisible()-1),i=t||0,r=i+"-"+n;if(this._indexRangeCache[r])return this._indexRangeCache[r].slice();for(var a=[],o=i;o<=n;o++)a.push(this.getItem(this.visibleOrder[o]));return this._indexRangeCache[r]=a.slice(),a},getItems:function(){if(this._getItemsCache)return this._getItemsCache.slice();var t=[];for(var e in this.pull)t.push(this.pull[e]);return this._getItemsCache=t.slice(),t},getIdByIndex:function(t){return this.visibleOrder[t]},getIndexById:function(t){var e=this._searchVisibleOrder[t];return void 0===e&&(e=-1),e},_getNullIfUndefined:function(t){return void 0===t?null:t},getFirst:function(){return this._getNullIfUndefined(this.visibleOrder[0])},getLast:function(){return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length-1])},getNext:function(t){return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(t)+1])},getPrev:function(t){return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(t)-1])},destructor:function(){this.callEvent("onDestroy",[]),this.detachAllEvents(),this.$destroyed=!0,this.pull=null,this.$initItem=null,this.visibleOrder=null,this.fullOrder=null,this._skip_refresh=null,this._filterRule=null,this._searchVisibleOrder=null,this._indexRangeCache={}}},t.exports=s},function(t,e){t.exports=function(t,e){if(!e)return!0;if(t._on_timeout)return!1;var n=Math.ceil(1e3/e);return n<2||(setTimeout(function(){delete t._on_timeout},n),t._on_timeout=!0,!0)}},function(t,e,n){var i=n(0);t.exports=function t(e,n){e=e||i.event,n=n||i.eventRemove;var r=[],a={attach:function(t,n,i,a){r.push({element:t,event:n,callback:i,capture:a}),e(t,n,i,a)},detach:function(t,e,i,a){n(t,e,i,a);for(var o=0;o<r.length;o++){var s=r[o];s.element===t&&s.event===e&&s.callback===i&&s.capture===a&&(r.splice(o,1),o--)}},detachAll:function(){for(var t=r.slice(),e=0;e<t.length;e++){var n=t[e];a.detach(n.element,n.event,n.callback,n.capture),a.detach(n.element,n.event,n.callback,void 0),a.detach(n.element,n.event,n.callback,!1),a.detach(n.element,n.event,n.callback,!0)}r.splice(0,r.length)},extend:function(){return t(this.event,this.eventRemove)}};return a}},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports="object"==("undefined"==typeof self?"undefined":n(self))?self.FormData:window.FormData},function(t,e){(function(e){t.exports=e}).call(this,{})},function(t,e,n){"use strict";function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(278),a=n(276);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=k,e.resolve=function(t,e){return k(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?k(t,!1,!0).resolveObject(e):e},e.format=function(t){a.isString(t)&&(t=k(t));return t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o;var s=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(u),h=["%","/","?",";","#"].concat(d),f=["/","?","#"],_=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n(275);function k(t,e,n){if(t&&a.isObject(t)&&t instanceof o)return t;var i=new o;return i.parse(t,e,n),i}o.prototype.parse=function(t,e,n){if(!a.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+i(t));var o=t.indexOf("?"),l=-1!==o&&o<t.indexOf("#")?"?":"#",u=t.split(l);u[0]=u[0].replace(/\\/g,"/");var k=t=u.join(l);if(k=k.trim(),!n&&1===t.split("#").length){var b=c.exec(k);if(b)return this.path=k,this.href=k,this.pathname=b[1],b[2]?(this.search=b[2],this.query=e?y.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var x=s.exec(k);if(x){var w=(x=x[0]).toLowerCase();this.protocol=w,k=k.substr(x.length)}if(n||x||k.match(/^\/\/[^@\/]+@[^@\/]+/)){var S="//"===k.substr(0,2);!S||x&&v[x]||(k=k.substr(2),this.slashes=!0)}if(!v[x]&&(S||x&&!m[x])){for(var T,$,C=-1,E=0;E<f.length;E++){-1!==(A=k.indexOf(f[E]))&&(-1===C||A<C)&&(C=A)}-1!==($=-1===C?k.lastIndexOf("@"):k.lastIndexOf("@",C))&&(T=k.slice(0,$),k=k.slice($+1),this.auth=decodeURIComponent(T)),C=-1;for(E=0;E<h.length;E++){var A;-1!==(A=k.indexOf(h[E]))&&(-1===C||A<C)&&(C=A)}-1===C&&(C=k.length),this.host=k.slice(0,C),k=k.slice(C),this.parseHost(),this.hostname=this.hostname||"";var D="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!D)for(var M=this.hostname.split(/\./),I=(E=0,M.length);E<I;E++){var P=M[E];if(P&&!P.match(_)){for(var N="",O=0,L=P.length;O<L;O++)P.charCodeAt(O)>127?N+="x":N+=P[O];if(!N.match(_)){var R=M.slice(0,E),j=M.slice(E+1),H=P.match(g);H&&(R.push(H[1]),j.unshift(H[2])),j.length&&(k="/"+j.join(".")+k),this.hostname=R.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),D||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+F,this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==k[0]&&(k="/"+k))}if(!p[w])for(E=0,I=d.length;E<I;E++){var z=d[E];if(-1!==k.indexOf(z)){var U=encodeURIComponent(z);U===z&&(U=escape(z)),k=k.split(z).join(U)}}var W=k.indexOf("#");-1!==W&&(this.hash=k.substr(W),k=k.slice(0,W));var V=k.indexOf("?");if(-1!==V?(this.search=k.substr(V),this.query=k.substr(V+1),e&&(this.query=y.parse(this.query)),k=k.slice(0,V)):e&&(this.search="",this.query={}),k&&(this.pathname=k),m[w]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var q=this.search||"";this.path=F+q}return this.href=this.format(),this},o.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",i=this.hash||"",r=!1,o="";this.host?r=t+this.host:this.hostname&&(r=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&a.isObject(this.query)&&Object.keys(this.query).length&&(o=y.stringify(this.query));var s=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||m[e])&&!1!==r?(r="//"+(r||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):r||(r=""),i&&"#"!==i.charAt(0)&&(i="#"+i),s&&"?"!==s.charAt(0)&&(s="?"+s),e+r+(n=n.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(s=s.replace("#","%23"))+i},o.prototype.resolve=function(t){return this.resolveObject(k(t,!1,!0)).format()},o.prototype.resolveObject=function(t){if(a.isString(t)){var e=new o;e.parse(t,!1,!0),t=e}for(var n=new o,i=Object.keys(this),r=0;r<i.length;r++){var s=i[r];n[s]=this[s]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var l=Object.keys(t),c=0;c<l.length;c++){var u=l[c];"protocol"!==u&&(n[u]=t[u])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!m[t.protocol]){for(var d=Object.keys(t),h=0;h<d.length;h++){var f=d[h];n[f]=t[f]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||v[t.protocol])n.pathname=t.pathname;else{for(var _=(t.pathname||"").split("/");_.length&&!(t.host=_.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==_[0]&&_.unshift(""),_.length<2&&_.unshift(""),n.pathname=_.join("/")}if(n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,n.pathname||n.search){var g=n.pathname||"",p=n.search||"";n.path=g+p}return n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),k=t.host||t.pathname&&"/"===t.pathname.charAt(0),b=k||y||n.host&&t.pathname,x=b,w=n.pathname&&n.pathname.split("/")||[],S=(_=t.pathname&&t.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(S&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===_[0]?_[0]=t.host:_.unshift(t.host)),t.host=null),b=b&&(""===_[0]||""===w[0])),k)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,w=_;else if(_.length)w||(w=[]),w.pop(),w=w.concat(_),n.search=t.search,n.query=t.query;else if(!a.isNullOrUndefined(t.search)){if(S)n.hostname=n.host=w.shift(),(A=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=A.shift(),n.host=n.hostname=A.shift());return n.search=t.search,n.query=t.query,a.isNull(n.pathname)&&a.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var T=w.slice(-1)[0],$=(n.host||t.host||w.length>1)&&("."===T||".."===T)||""===T,C=0,E=w.length;E>=0;E--)"."===(T=w[E])?w.splice(E,1):".."===T?(w.splice(E,1),C++):C&&(w.splice(E,1),C--);if(!b&&!x)for(;C--;C)w.unshift("..");!b||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),$&&"/"!==w.join("/").substr(-1)&&w.push("");var A,D=""===w[0]||w[0]&&"/"===w[0].charAt(0);S&&(n.hostname=n.host=D?"":w.length?w.shift():"",(A=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=A.shift(),n.host=n.hostname=A.shift()));return(b=b||n.host&&w.length)&&!D&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),a.isNull(n.pathname)&&a.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},o.prototype.parseHost=function(){var t=this.host,e=l.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){"use strict";t.exports=a;var i=n(12),r=n(17);function a(t){if(!(this instanceof a))return new a(t);i.call(this,t),this._transformState={afterTransform:function(t,e){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(!i)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=e&&this.push(e),i(t);var r=this._readableState;r.reading=!1,(r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",o)}function o(){var t=this;"function"==typeof this._flush?this._flush(function(e,n){s(t,e,n)}):s(this,null,null)}function s(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}r.inherits=n(8),r.inherits(a,i),a.prototype.push=function(t,e){return this._transformState.needTransform=!1,i.prototype.push.call(this,t,e)},a.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},a.prototype._write=function(t,e,n){var i=this._transformState;if(i.writecb=n,i.writechunk=t,i.writeencoding=e,!i.transforming){var r=this._readableState;(i.needTransform||r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}},a.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},a.prototype._destroy=function(t,e){var n=this;i.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){"use strict";var i=n(22).Buffer,r=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===r||!r(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=l,this.end=c,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=u,this.end=d,e=3;break;default:return this.write=h,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,n=function(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var i=n.charCodeAt(n.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function u(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function d(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<t.length?e?e+this.text(t,n):this.text(t,n):e||""},a.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},a.prototype.text=function(t,e){var n=function(t,e,n){var i=e.length-1;if(i<n)return 0;var r=o(e[i]);if(r>=0)return r>0&&(t.lastNeed=r-1),r;if(--i<n||-2===r)return 0;if((r=o(e[i]))>=0)return r>0&&(t.lastNeed=r-2),r;if(--i<n||-2===r)return 0;if((r=o(e[i]))>=0)return r>0&&(2===r?r=0:t.lastNeed=r-3),r;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var i=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,n){(function(t){var i=void 0!==t&&t||"undefined"!=typeof self&&self||window,r=Function.prototype.apply;function a(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new a(r.call(setTimeout,i,arguments),clearTimeout)},e.setInterval=function(){return new a(r.call(setInterval,i,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(i,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(284),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(4))},function(t,e,n){"use strict";(function(e,i,r){var a=n(23);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,n){var i=t.entry;t.entry=null;for(;i;){var r=i.callback;e.pendingcb--,r(n),i=i.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var s,l=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?i:a.nextTick;m.WritableState=v;var c=n(17);c.inherits=n(8);var u={deprecate:n(283)},d=n(60),h=n(22).Buffer,f=r.Uint8Array||function(){};var _,g=n(59);function p(){}function v(t,e){s=s||n(12),t=t||{};var i=e instanceof s;this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,c=t.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i&&(c||0===c)?c:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var d=!1===t.decodeStrings;this.decodeStrings=!d,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,i=n.sync,r=n.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(n),e)!function(t,e,n,i,r){--e.pendingcb,n?(a.nextTick(r,i),a.nextTick(S,t,e),t._writableState.errorEmitted=!0,t.emit("error",i)):(r(i),t._writableState.errorEmitted=!0,t.emit("error",i),S(t,e))}(t,n,i,e,r);else{var o=x(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||b(t,n),i?l(k,t,n,o,r):k(t,n,o,r)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function m(t){if(s=s||n(12),!(_.call(m,this)||this instanceof s))return new m(t);this._writableState=new v(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),d.call(this)}function y(t,e,n,i,r,a,o){e.writelen=i,e.writecb=o,e.writing=!0,e.sync=!0,n?t._writev(r,e.onwrite):t._write(r,a,e.onwrite),e.sync=!1}function k(t,e,n,i){n||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),S(t,e)}function b(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var i=e.bufferedRequestCount,r=new Array(i),a=e.corkedRequestsFree;a.entry=n;for(var s=0,l=!0;n;)r[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;r.allBuffers=l,y(t,e,!0,e.length,r,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,u=n.encoding,d=n.callback;if(y(t,e,!1,e.objectMode?1:c.length,c,u,d),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function w(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),S(t,e)})}function S(t,e){var n=x(e);return n&&(!function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,a.nextTick(w,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}c.inherits(m,d),v.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(v.prototype,"buffer",{get:u.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!_.call(this,t)||this===m&&(t&&t._writableState instanceof v)}})):_=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(t,e,n){var i=this._writableState,r=!1,o=!i.objectMode&&function(t){return h.isBuffer(t)||t instanceof f}(t);return o&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(n=e,e=null),o?e="buffer":e||(e=i.defaultEncoding),"function"!=typeof n&&(n=p),i.ended?function(t,e){var n=new Error("write after end");t.emit("error",n),a.nextTick(e,n)}(this,n):(o||function(t,e,n,i){var r=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(t.emit("error",o),a.nextTick(i,o),r=!1),r}(this,i,t,n))&&(i.pendingcb++,r=function(t,e,n,i,r,a){if(!n){var o=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,n));return e}(e,i,r);i!==o&&(n=!0,r="buffer",i=o)}var s=e.objectMode?1:i.length;e.length+=s;var l=e.length<e.highWaterMark;l||(e.needDrain=!0);if(e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:i,encoding:r,isBuf:n,callback:a,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else y(t,e,!1,s,i,r,a);return l}(this,i,o,t,e,n)),r},m.prototype.cork=function(){this._writableState.corked++},m.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||b(this,t))},m.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(t,e,n){var i=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!==t&&void 0!==t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||function(t,e,n){e.ending=!0,S(t,e),n&&(e.finished?a.nextTick(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,i,n)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=g.destroy,m.prototype._undestroy=g.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,n(9),n(57).setImmediate,n(4))},function(t,e,n){"use strict";var i=n(23);function r(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var n=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||i.nextTick(r,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(i.nextTick(r,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,n){t.exports=n(61).EventEmitter},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function a(t){return"object"===n(t)&&null!==t}function o(t){return void 0===t}t.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0,i.defaultMaxListeners=10,i.prototype.setMaxListeners=function(t){if(!function(t){return"number"==typeof t}(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},i.prototype.emit=function(t){var e,n,i,s,l,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var u=new Error('Uncaught, unspecified "error" event. ('+e+")");throw u.context=e,u}if(o(n=this._events[t]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(a(n))for(s=Array.prototype.slice.call(arguments,1),i=(c=n.slice()).length,l=0;l<i;l++)c[l].apply(this,s);return!0},i.prototype.addListener=function(t,e){var n;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?a(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,a(this._events[t])&&!this._events[t].warned&&(n=o(this._maxListeners)?i.defaultMaxListeners:this._maxListeners)&&n>0&&this._events[t].length>n&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(t,e){if(!r(e))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(t,i),n||(n=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},i.prototype.removeListener=function(t,e){var n,i,o,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(o=(n=this._events[t]).length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(a(n)){for(s=o;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},i.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[t]))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},i.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},i.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},i.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){"use strict";(function(e,i){var r=n(23);t.exports=y;var a,o=n(67);y.ReadableState=m;n(61).EventEmitter;var s=function(t,e){return t.listeners(e).length},l=n(60),c=n(22).Buffer,u=e.Uint8Array||function(){};var d=n(17);d.inherits=n(8);var h=n(287),f=void 0;f=h&&h.debuglog?h.debuglog("stream"):function(){};var _,g=n(286),p=n(59);d.inherits(y,l);var v=["error","close","destroy","pause","resume"];function m(t,e){a=a||n(12),t=t||{};var i=e instanceof a;this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,o=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(_||(_=n(56).StringDecoder),this.decoder=new _(t.encoding),this.encoding=t.encoding)}function y(t){if(a=a||n(12),!(this instanceof y))return new y(t);this._readableState=new m(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),l.call(this)}function k(t,e,n,i,r){var a,o=t._readableState;null===e?(o.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,S(t)}(t,o)):(r||(a=function(t,e){var n;(function(t){return c.isBuffer(t)||t instanceof u})(e)||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));return n}(o,e)),a?t.emit("error",a):o.objectMode||e&&e.length>0?("string"==typeof e||o.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),i?o.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):b(t,o,e,!0):o.ended?t.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!n?(e=o.decoder.write(e),o.objectMode||0!==e.length?b(t,o,e,!1):$(t,o)):b(t,o,e,!1))):i||(o.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(o)}function b(t,e,n,i){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,i?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&S(t)),$(t,e)}Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),y.prototype.destroy=p.destroy,y.prototype._undestroy=p.undestroy,y.prototype._destroy=function(t,e){this.push(null),e(t)},y.prototype.push=function(t,e){var n,i=this._readableState;return i.objectMode?n=!0:"string"==typeof t&&((e=e||i.defaultEncoding)!==i.encoding&&(t=c.from(t,e),e=""),n=!0),k(this,t,e,!1,n)},y.prototype.unshift=function(t){return k(this,t,null,!0,!1)},y.prototype.isPaused=function(){return!1===this._readableState.flowing},y.prototype.setEncoding=function(t){return _||(_=n(56).StringDecoder),this._readableState.decoder=new _(t),this._readableState.encoding=t,this};var x=8388608;function w(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=x?t=x:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function S(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(f("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?r.nextTick(T,t):T(t))}function T(t){f("emit readable"),t.emit("readable"),D(t)}function $(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(C,t,e))}function C(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(f("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function E(t){f("readable nexttick read 0"),t.read(0)}function A(t,e){e.reading||(f("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(f("flow",e.flowing);e.flowing&&null!==t.read(););}function M(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=function(t,e,n){var i;t<e.head.data.length?(i=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):i=t===e.head.data.length?e.shift():n?function(t,e){var n=e.head,i=1,r=n.data;t-=r.length;for(;n=n.next;){var a=n.data,o=t>a.length?a.length:t;if(o===a.length?r+=a:r+=a.slice(0,t),0===(t-=o)){o===a.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=a.slice(o));break}++i}return e.length-=i,r}(t,e):function(t,e){var n=c.allocUnsafe(t),i=e.head,r=1;i.data.copy(n),t-=i.data.length;for(;i=i.next;){var a=i.data,o=t>a.length?a.length:t;if(a.copy(n,n.length-t,0,o),0===(t-=o)){o===a.length?(++r,i.next?e.head=i.next:e.head=e.tail=null):(e.head=i,i.data=a.slice(o));break}++r}return e.length-=r,n}(t,e);return i}(t,e.buffer,e.decoder),n);var n}function I(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,r.nextTick(P,e,t))}function P(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function N(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1}y.prototype.read=function(t){f("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return f("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?I(this):S(this),null;if(0===(t=w(t,e))&&e.ended)return 0===e.length&&I(this),null;var i,r=e.needReadable;return f("need readable",r),(0===e.length||e.length-t<e.highWaterMark)&&f("length less than watermark",r=!0),e.ended||e.reading?f("reading or ended",r=!1):r&&(f("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=w(n,e))),null===(i=t>0?M(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&I(this)),null!==i&&this.emit("data",i),i},y.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},y.prototype.pipe=function(t,e){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=t;break;case 1:a.pipes=[a.pipes,t];break;default:a.pipes.push(t)}a.pipesCount+=1,f("pipe count=%d opts=%j",a.pipesCount,e);var l=(!e||!1!==e.end)&&t!==i.stdout&&t!==i.stderr?u:y;function c(e,i){f("onunpipe"),e===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,f("cleanup"),t.removeListener("close",v),t.removeListener("finish",m),t.removeListener("drain",d),t.removeListener("error",p),t.removeListener("unpipe",c),n.removeListener("end",u),n.removeListener("end",y),n.removeListener("data",g),h=!0,!a.awaitDrain||t._writableState&&!t._writableState.needDrain||d())}function u(){f("onend"),t.end()}a.endEmitted?r.nextTick(l):n.once("end",l),t.on("unpipe",c);var d=function(t){return function(){var e=t._readableState;f("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(n);t.on("drain",d);var h=!1;var _=!1;function g(e){f("ondata"),_=!1,!1!==t.write(e)||_||((1===a.pipesCount&&a.pipes===t||a.pipesCount>1&&-1!==N(a.pipes,t))&&!h&&(f("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,_=!0),n.pause())}function p(e){f("onerror",e),y(),t.removeListener("error",p),0===s(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",m),y()}function m(){f("onfinish"),t.removeListener("close",v),y()}function y(){f("unpipe"),n.unpipe(t)}return n.on("data",g),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?o(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",p),t.once("close",v),t.once("finish",m),t.emit("pipe",n),a.flowing||(f("pipe resume"),n.resume()),t},y.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var i=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a<r;a++)i[a].emit("unpipe",this,n);return this}var o=N(e.pipes,t);return-1===o?this:(e.pipes.splice(o,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},y.prototype.on=function(t,e){var n=l.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var i=this._readableState;i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.emittedReadable=!1,i.reading?i.length&&S(this):r.nextTick(E,this))}return n},y.prototype.addListener=y.prototype.on,y.prototype.resume=function(){var t=this._readableState;return t.flowing||(f("resume"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(A,t,e))}(this,t)),this},y.prototype.pause=function(){return f("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(f("pause"),this._readableState.flowing=!1,this.emit("pause")),this},y.prototype.wrap=function(t){var e=this,n=this._readableState,i=!1;for(var r in t.on("end",function(){if(f("wrapped end"),n.decoder&&!n.ended){var t=n.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(r){(f("wrapped data"),n.decoder&&(r=n.decoder.write(r)),!n.objectMode||null!==r&&void 0!==r)&&((n.objectMode||r&&r.length)&&(e.push(r)||(i=!0,t.pause())))}),t)void 0===this[r]&&"function"==typeof t[r]&&(this[r]=function(e){return function(){return t[e].apply(t,arguments)}}(r));for(var a=0;a<v.length;a++)t.on(v[a],this.emit.bind(this,v[a]));return this._read=function(e){f("wrapped _read",e),i&&(i=!1,t.resume())},this},Object.defineProperty(y.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),y._fromList=M}).call(this,n(4),n(9))},function(t,e,n){(e=t.exports=n(62)).Stream=e,e.Readable=e,e.Writable=n(58),e.Duplex=n(12),e.Transform=n(55),e.PassThrough=n(282)},function(t,e,n){(function(t,i,r){var a=n(65),o=n(8),s=n(63),l=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(e,n,o,l){var c=this;if(s.Readable.call(c),c._mode=o,c.headers={},c.rawHeaders=[],c.trailers={},c.rawTrailers=[],c.on("end",function(){t.nextTick(function(){c.emit("close")})}),"fetch"===o){if(c._fetchResponse=n,c.url=n.url,c.statusCode=n.status,c.statusMessage=n.statusText,n.headers.forEach(function(t,e){c.headers[e.toLowerCase()]=t,c.rawHeaders.push(e,t)}),a.writableStream){var u=new WritableStream({write:function(t){return new Promise(function(e,n){c._destroyed?n():c.push(new r(t))?e():c._resumeFetch=e})},close:function(){i.clearTimeout(l),c._destroyed||c.push(null)},abort:function(t){c._destroyed||c.emit("error",t)}});try{return void n.body.pipeTo(u).catch(function(t){i.clearTimeout(l),c._destroyed||c.emit("error",t)})}catch(t){}}var d=n.body.getReader();!function t(){d.read().then(function(e){if(!c._destroyed){if(e.done)return i.clearTimeout(l),void c.push(null);c.push(new r(e.value)),t()}}).catch(function(t){i.clearTimeout(l),c._destroyed||c.emit("error",t)})}()}else{if(c._xhr=e,c._pos=0,c.url=e.responseURL,c.statusCode=e.status,c.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var n=e[1].toLowerCase();"set-cookie"===n?(void 0===c.headers[n]&&(c.headers[n]=[]),c.headers[n].push(e[2])):void 0!==c.headers[n]?c.headers[n]+=", "+e[2]:c.headers[n]=e[2],c.rawHeaders.push(e[1],e[2])}}),c._charset="x-user-defined",!a.overrideMimeType){var h=c.rawHeaders["mime-type"];if(h){var f=h.match(/;\s*charset=([^;])(;|$)/);f&&(c._charset=f[1].toLowerCase())}c._charset||(c._charset="utf-8")}}};o(c,s.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(){var t=this,e=t._xhr,n=null;switch(t._mode){case"text:vbarray":if(e.readyState!==l.DONE)break;try{n=new i.VBArray(e.responseBody).toArray()}catch(t){}if(null!==n){t.push(new r(n));break}case"text":try{n=e.responseText}catch(e){t._mode="text:vbarray";break}if(n.length>t._pos){var a=n.substr(t._pos);if("x-user-defined"===t._charset){for(var o=new r(a.length),s=0;s<a.length;s++)o[s]=255&a.charCodeAt(s);t.push(o)}else t.push(a,t._charset);t._pos=n.length}break;case"arraybuffer":if(e.readyState!==l.DONE||!e.response)break;n=e.response,t.push(new r(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=e.response,e.readyState!==l.LOADING||!n)break;t.push(new r(new Uint8Array(n)));break;case"ms-stream":if(n=e.response,e.readyState!==l.LOADING)break;var c=new i.MSStreamReader;c.onprogress=function(){c.result.byteLength>t._pos&&(t.push(new r(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(n)}t._xhr.readyState===l.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,n(9),n(4),n(13).Buffer)},function(t,e,n){(function(t){e.fetch=s(t.fetch)&&s(t.ReadableStream),e.writableStream=s(t.WritableStream),e.abortController=s(t.AbortController),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(t){}var n;function i(){if(void 0!==n)return n;if(t.XMLHttpRequest){n=new t.XMLHttpRequest;try{n.open("GET",t.XDomainRequest?"/":"https://example.com")}catch(t){n=null}}else n=null;return n}function r(t){var e=i();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}var a=void 0!==t.ArrayBuffer,o=a&&s(t.ArrayBuffer.prototype.slice);function s(t){return"function"==typeof t}e.arraybuffer=e.fetch||a&&r("arraybuffer"),e.msstream=!e.fetch&&o&&r("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&a&&r("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!i()&&s(i().overrideMimeType),e.vbArray=s(t.VBArray),n=null}).call(this,n(4))},function(t,e,n){(function(t){var i=n(288),r=n(64),a=n(280),o=n(279),s=n(54),l=e;l.request=function(e,n){e="string"==typeof e?s.parse(e):a(e);var r=-1===t.location.protocol.search(/^https?:$/)?"http:":"",o=e.protocol||r,l=e.hostname||e.host,c=e.port,u=e.path||"/";l&&-1!==l.indexOf(":")&&(l="["+l+"]"),e.url=(l?o+"//"+l:"")+(c?":"+c:"")+u,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var d=new i(e);return n&&d.on("response",n),d},l.get=function(t,e){var n=l.request(t,e);return n.end(),n},l.ClientRequest=i,l.IncomingMessage=r.IncomingMessage,l.Agent=function(){},l.Agent.defaultMaxSockets=4,l.globalAgent=new l.Agent,l.STATUS_CODES=o,l.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,n(4))},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e){t.exports=function(t){var e=new RegExp("<(?:.|\n)*?>","gm"),n=new RegExp(" +","gm");function i(t){return(t+"").replace(e," ").replace(n," ")}var r=new RegExp("'","gm");function a(t){return(t+"").replace(r,"'")}for(var o in t._waiAria={getAttributeString:function(t){var e=[" "];for(var n in t){var r=a(i(t[n]));e.push(n+"='"+r+"'")}return e.push(" "),e.join(" ")},getTimelineCellAttr:function(e){return t._waiAria.getAttributeString({"aria-label":e})},_taskCommonAttr:function(e,n){e.start_date&&e.end_date&&(n.setAttribute("aria-label",i(t.templates.tooltip_text(e.start_date,e.end_date,e))),e.$dataprocessor_class&&n.setAttribute("aria-busy",!0))},setTaskBarAttr:function(e,n){this._taskCommonAttr(e,n),n.setAttribute("role","img"),!t.isReadonly(e)&&t.config.drag_move&&(e.id!=t.getState("tasksDnd").drag_id?n.setAttribute("aria-grabbed",!1):n.setAttribute("aria-grabbed",!0))},taskRowAttr:function(e,n){this._taskCommonAttr(e,n),!t.isReadonly(e)&&t.config.order_branch&&n.setAttribute("aria-grabbed",!1),n.setAttribute("role","row"),n.setAttribute("aria-selected",t.isSelectedTask(e.id)?"true":"false"),n.setAttribute("aria-level",e.$level+1||1),t.hasChild(e.id)&&n.setAttribute("aria-expanded",e.$open?"true":"false")},linkAttr:function(e,n){var r=t.config.links,a=e.type==r.finish_to_start||e.type==r.start_to_start,o=e.type==r.start_to_start||e.type==r.start_to_finish,s=t.locale.labels.link+" "+t.templates.drag_link(e.source,o,e.target,a);n.setAttribute("role","img"),n.setAttribute("aria-label",i(s)),t.isReadonly(e)&&n.setAttribute("aria-readonly",!0)},gridSeparatorAttr:function(t){t.setAttribute("role","columnheader")},rowResizerAttr:function(t){t.setAttribute("role","row")},lightboxHiddenAttr:function(t){t.setAttribute("aria-hidden","true")},lightboxVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},lightboxAttr:function(t){t.setAttribute("role","dialog"),t.setAttribute("aria-hidden","true"),t.firstChild.setAttribute("role","heading"),t.firstChild.setAttribute("aria-level","1")},lightboxButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels[e],tabindex:"0"})},lightboxHeader:function(t,e){t.setAttribute("aria-label",e)},lightboxSelectAttrString:function(e){var n="";switch(e){case"%Y":n=t.locale.labels.years;break;case"%m":n=t.locale.labels.months;break;case"%d":n=t.locale.labels.days;break;case"%H:%i":n=t.locale.labels.hours+t.locale.labels.minutes}return t._waiAria.getAttributeString({"aria-label":n})},lightboxDurationInputAttrString:function(e){return this.getAttributeString({"aria-label":t.locale.labels.column_duration,"aria-valuemin":"0",role:"spinbutton"})},inlineEditorAttr:function(t){t.setAttribute("role","row")},gridAttrString:function(){return[" role='treegrid'",t.config.multiselect?"aria-multiselectable='true'":"aria-multiselectable='false'"," "].join(" ")},gridScaleRowAttrString:function(){return"role='row'"},gridScaleCellAttrString:function(e,n){var i="";if("add"==e.name)i=this.getAttributeString({role:"columnheader","aria-label":t.locale.labels.new_task});else{var r={role:"columnheader","aria-label":n};t._sort&&t._sort.name==e.name&&("asc"==t._sort.direction?r["aria-sort"]="ascending":r["aria-sort"]="descending"),i=this.getAttributeString(r)}return i},gridDataAttrString:function(){return"role='rowgroup'"},reorderMarkerAttr:function(t){t.setAttribute("role","grid"),t.firstChild.removeAttribute("aria-level"),t.firstChild.setAttribute("aria-grabbed","true")},gridCellAttrString:function(e,n,i){var r={role:"gridcell","aria-label":n};return e.editor&&!t.isReadonly(i)||(r["aria-readonly"]=!0),this.getAttributeString(r)},gridAddButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels.new_task})},messageButtonAttrString:function(t){return"tabindex='0' role='button' aria-label='"+t+"'"},messageInfoAttr:function(t){t.setAttribute("role","alert")},messageModalAttr:function(t,e){t.setAttribute("role","dialog"),e&&t.setAttribute("aria-labelledby",e)},quickInfoAttr:function(t){t.setAttribute("role","dialog")},quickInfoHeaderAttrString:function(){return" role='heading' aria-level='1' "},quickInfoHeader:function(t,e){t.setAttribute("aria-label",e)},quickInfoButtonAttrString:function(e){return t._waiAria.getAttributeString({role:"button","aria-label":e,tabindex:"0"})},tooltipAttr:function(t){t.setAttribute("role","tooltip")},tooltipVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},tooltipHiddenAttr:function(t){t.setAttribute("aria-hidden","true")}},t._waiAria)t._waiAria[o]=function(e){return function(){return t.config.wai_aria_attributes?e.apply(this,arguments):""}}(t._waiAria[o])}},function(t,e){t.exports=function(t){t._extend_to_optional=function(e){var n=e,i={render:n.render,focus:n.focus,set_value:function(e,r,a,o){var s=t._resolve_default_mapping(o);if(!a[s.start_date]||"start_date"==s.start_date&&this._isAllowedUnscheduledTask(a)){i.disable(e,o);var l={};for(var c in s)l[s[c]]=a[c];return n.set_value.call(t,e,r,l,o)}return i.enable(e,o),n.set_value.call(t,e,r,a,o)},get_value:function(e,i,r){return r.disabled?{start_date:null}:n.get_value.call(t,e,i,r)},update_block:function(e,n){if(t.callEvent("onSectionToggle",[t._lightbox_id,n]),e.style.display=n.disabled?"none":"block",n.button){var i=e.previousSibling.querySelector(".gantt_custom_button_label"),r=t.locale.labels,a=n.disabled?r[n.name+"_enable_button"]:r[n.name+"_disable_button"];i.innerHTML=a}t.resizeLightbox()},disable:function(t,e){e.disabled=!0,i.update_block(t,e)},enable:function(t,e){e.disabled=!1,i.update_block(t,e)},button_click:function(e,n,r,a){if(!1!==t.callEvent("onSectionButton",[t._lightbox_id,r])){var o=t._get_typed_lightbox_config()[e];o.disabled?i.enable(a,o):i.disable(a,o)}}};return i},t.form_blocks.duration_optional=t._extend_to_optional(t.form_blocks.duration),t.form_blocks.time_optional=t._extend_to_optional(t.form_blocks.time)}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(18)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(n){var i=t.config.types,r=t.locale.labels,a=[],o=n.filter||function(t,e){return!i.placeholder||e!==i.placeholder};for(var s in i)!1==!o(s,i[s])&&a.push({key:i[s],label:r["type_"+s]});n.options=a;var l=n.onchange;return n.onchange=function(){t.changeLightboxType(this.value),this.value===t.config.types.task&&(t._lightbox_new_type="task"),"function"==typeof l&&l.apply(this,arguments)},e.prototype.render.apply(this,arguments)},r}},function(t,e,n){var i=n(3),r=n(36);t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}function o(e){return!e||e===t.config.constraint_types.ASAP||e===t.config.constraint_types.ALAP}function s(t,e){for(var n=o(e),i=0;i<t.length;i++)t[i].disabled=n}return i(a,e),a.prototype.render=function(e){var n=(e.height||30)+"px",i="<div class='gantt_cal_ltext gantt_section_"+e.name+"' style='height:"+n+";'>",a=[];for(var o in t.config.constraint_types)a.push({key:t.config.constraint_types[o],label:t.locale.labels[t.config.constraint_types[o]]});return e.options=e.options||a,i+="<span data-constraint-type-select>"+r.getHtmlSelect(e.options,[{key:"data-type",value:"constraint-type"}])+"</span>",i+="<label data-constraint-time-select>"+(t.locale.labels.constraint_date||"Constraint date")+": "+t.form_blocks.getTimePicker.call(this,e)+"</label>",i+="</div>"},a.prototype.set_value=function(e,n,i,r){var a=e.querySelector("[data-constraint-type-select] select"),o=e.querySelectorAll("[data-constraint-time-select] select"),l=r._time_format_order,c=t._resolve_default_mapping(r);a._eventsInitialized||(a.addEventListener("change",function(t){s(o,t.target.value)}),a._eventsInitialized=!0);var u=i[c.constraint_date]||new Date;t.form_blocks._fill_lightbox_select(o,0,u,l,r);var d=i[c.constraint_type]||t.getConstraintType(i);a.value=d,s(o,d)},a.prototype.get_value=function(e,n,i){var r=e.querySelector("[data-constraint-type-select] select"),a=e.querySelectorAll("[data-constraint-time-select] select"),s=r.value,l=null;return o(s)||(l=t.form_blocks.getTimePickerValue(a,i)),{constraint_type:s,constraint_date:l}},a.prototype.focus=function(e){t._focus(e.querySelector("select"))},a}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(18)(t);function r(){return e.apply(this,arguments)||this}function a(e,n){var i=[],r=[];n&&(i=t.getTaskByTime(),e.allow_root&&i.unshift({id:t.config.root_id,text:e.root_label||""}),i=function(e,n,i){var r=n.filter||function(){return!0};e=e.slice(0);for(var a=0;a<e.length;a++){var o=e[a];(o.id==i||t.isChildOf(o.id,i)||!1===r(o.id,o))&&(e.splice(a,1),a--)}return e}(i,e,n),e.sort&&i.sort(e.sort));for(var a=e.template||t.templates.task_text,o=0;o<i.length;o++){var s=a.apply(t,[i[o].start_date,i[o].end_date,i[o]]);void 0===s&&(s=""),r.push({key:i[o].id,label:s})}return e.options=r,e.map_to=e.map_to||"parent",t.form_blocks.select.render.apply(this,arguments)}return i(r,e),r.prototype.render=function(t){return a(t,!1)},r.prototype.set_value=function(e,n,i,r){0===n&&(n="0");var o=document.createElement("div");o.innerHTML=a(r,i.id);var s=o.removeChild(o.firstChild);return e.onselect=null,e.parentNode.replaceChild(s,e),t.form_blocks.select.set_value.apply(t,[s,n,i,r])},r}},function(t,e,n){var i=n(3),r=n(44).default;t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}function o(t){return t.formatter||new r}function s(e,n){var i=e.getElementsByTagName("select"),r=n._time_format_order,a=0,o=0;if(t.defined(r[3])){var s=i[r[3]],l=parseInt(s.value,10);isNaN(l)&&s.hasAttribute("data-value")&&(l=parseInt(s.getAttribute("data-value"),10)),a=Math.floor(l/60),o=l%60}return new Date(i[r[2]].value,i[r[1]].value,i[r[0]].value,a,o)}function l(t,e){var n=t.getElementsByTagName("input")[1];return(n=o(e).parse(n.value))&&!window.isNaN(n)||(n=1),n<0&&(n*=-1),n}return i(a,e),a.prototype.render=function(e){var n="<div class='gantt_time_selects'>"+t.form_blocks.getTimePicker.call(this,e)+"</div>",i=" "+t.locale.labels[t.config.duration_unit+"s"]+" ",r=e.single_date?" style='display:none'":"",a=e.readonly?" disabled='disabled'":"",o=t._waiAria.lightboxDurationInputAttrString(e),s="gantt_duration_value";e.formatter&&(i="",s+=" gantt_duration_value_formatted");var l="<div class='gantt_duration' "+r+"><input type='button' class='gantt_duration_dec' value='−'"+a+"><input type='text' value='5days' class='"+s+"'"+a+" "+o+"><input type='button' class='gantt_duration_inc' value='+'"+a+">"+i+"<span></span></div>";return"<div style='height:"+(e.height||30)+"px;padding-top:0px;font-size:inherit;' class='gantt_section_time'>"+n+" "+l+"</div>"},a.prototype.set_value=function(e,n,i,r){var a,c,u,d,h=e.getElementsByTagName("select"),f=e.getElementsByTagName("input"),_=f[1],g=[f[0],f[2]],p=e.getElementsByTagName("span")[0],v=r._time_format_order;function m(){var n=s.call(t,e,r),a=l.call(t,e,r),o=t.calculateEndDate({start_date:n,duration:a,task:i}),c=t.templates.task_end_date||t.templates.task_date;p.innerHTML=c(o)}function y(t){var e=_.value;e=o(r).parse(e),window.isNaN(e)&&(e=0),(e+=t)<1&&(e=1),_.value=o(r).format(e),m()}g[0].onclick=t.bind(function(){y(-1*t.config.duration_step)},this),g[1].onclick=t.bind(function(){y(1*t.config.duration_step)},this),h[0].onchange=m,h[1].onchange=m,h[2].onchange=m,h[3]&&(h[3].onchange=m),_.onkeydown=t.bind(function(e){var n;return(n=(e=e||window.event).charCode||e.keyCode||e.which)==t.constants.KEY_CODES.DOWN?(y(-1*t.config.duration_step),!1):n==t.constants.KEY_CODES.UP?(y(1*t.config.duration_step),!1):void window.setTimeout(m,1)},this),_.onchange=t.bind(m,this),"string"==typeof(a=t._resolve_default_mapping(r))&&(a={start_date:a}),c=i[a.start_date]||new Date,u=i[a.end_date]||t.calculateEndDate({start_date:c,duration:1,task:i}),d=Math.round(i[a.duration])||t.calculateDuration({start_date:c,end_date:u,task:i}),d=o(r).format(d),t.form_blocks._fill_lightbox_select(h,0,c,v,r),_.value=d,m()},a.prototype.get_value=function(e,n,i){var r=s(e,i),a=l(e,i),o=t.calculateEndDate({start_date:r,duration:a,task:n});return"string"==typeof t._resolve_default_mapping(i)?r:{start_date:r,end_date:o,duration:a}},a.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},a}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(t){var e="<div class='gantt_cal_ltext' style='height:"+((t.height||"23")+"px")+";'>";if(t.options&&t.options.length)for(var n=0;n<t.options.length;n++)e+="<label><input type='radio' value='"+t.options[n].key+"' name='"+t.name+"'>"+t.options[n].label+"</label>";return e+="</div>"},r.prototype.set_value=function(t,e,n,i){var r;i.options&&i.options.length&&(r=t.querySelector("input[type=radio][value='"+e+"']")||t.querySelector("input[type=radio][value='"+i.default_value+"']"))&&(!t._dhx_onchange&&i.onchange&&(t.onchange=i.onchange,t._dhx_onchange=!0),r.checked=!0)},r.prototype.get_value=function(t,e){var n=t.querySelector("input[type=radio]:checked");return n?n.value:""},r.prototype.focus=function(e){t._focus(e.querySelector("input[type=radio]"))},r}},function(t,e,n){var i=n(2),r=n(3);t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}return r(a,e),a.prototype.render=function(t){var e="<div class='gantt_cal_ltext' style='height:"+((t.height||"23")+"px")+";'>";if(t.options&&t.options.length)for(var n=0;n<t.options.length;n++)e+="<label><input type='checkbox' value='"+t.options[n].key+"' name='"+t.name+"'>"+t.options[n].label+"</label>";else t.single_value=!0,e+="<label><input type='checkbox' name='"+t.name+"'></label>";return e+="</div>"},a.prototype.set_value=function(t,e,n,r){var a=Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]"));(!t._dhx_onchange&&r.onchange&&(t.onchange=r.onchange,t._dhx_onchange=!0),r.single_value)?a[0].checked=!!e:i.forEach(a,function(t){t.checked=!!e&&e.indexOf(t.value)>=0})},a.prototype.get_value=function(t,e,n){return n.single_value?t.querySelector("input[type=checkbox]").checked:i.arrayMap(Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]:checked")),function(t){return t.value})},a.prototype.focus=function(e){t._focus(e.querySelector("input[type=checkbox]"))},a}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(e){var n=t.form_blocks.getTimePicker.call(this,e),i="<div style='height:"+(e.height||30)+"px;padding-top:0px;font-size:inherit;text-align:center;' class='gantt_section_time'>";return i+=n,e.single_date?(n=t.form_blocks.getTimePicker.call(this,e,!0),i+="<span></span>"):i+="<span style='font-weight:normal; font-size:10pt;'> – </span>",i+=n,i+="</div>"},r.prototype.set_value=function(e,n,i,r){var a=r,o=e.getElementsByTagName("select"),s=r._time_format_order;if(a.auto_end_date)for(var l=function(){d=new Date(o[s[2]].value,o[s[1]].value,o[s[0]].value,0,0),h=t.calculateEndDate({start_date:d,duration:1,task:i}),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},c=0;c<4;c++)o[c].onchange=l;var u=t._resolve_default_mapping(r);"string"==typeof u&&(u={start_date:u});var d=i[u.start_date]||new Date,h=i[u.end_date]||t.calculateEndDate({start_date:d,duration:1,task:i});t.form_blocks._fill_lightbox_select(o,0,d,s,a),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},r.prototype.get_value=function(e,n,i){var r,a=e.getElementsByTagName("select"),o=i._time_format_order;return r=t.form_blocks.getTimePickerValue(a,i),"string"==typeof t._resolve_default_mapping(i)?r:{start_date:r,end_date:function(e,n,r){var a=t.form_blocks.getTimePickerValue(e,i,n.size);return a<=r&&(!1!==i.autofix_end||i.single_date)?t.date.add(r,t._get_timepicker_step(),"minute"):a}(a,o,r)}},r.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},r}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(t){return"<div class='gantt_cal_ltext' style='height:"+((t.height||"130")+"px")+";'><textarea></textarea></div>"},r.prototype.set_value=function(e,n){t.form_blocks.textarea._get_input(e).value=n||""},r.prototype.get_value=function(e){return t.form_blocks.textarea._get_input(e).value},r.prototype.focus=function(e){var n=t.form_blocks.textarea._get_input(e);t._focus(n,!0)},r.prototype._get_input=function(t){return t.querySelector("textarea")},r}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(t){return"<div class='gantt_cal_ltext gantt_cal_template' style='height:"+((t.height||"30")+"px")+";'></div>"},r.prototype.set_value=function(t,e){t.innerHTML=e||""},r.prototype.get_value=function(t){return t.innerHTML||""},r.prototype.focus=function(){},r}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){var e=n(1),r=n(2),a=n(78)(t),o=n(77)(t),s=n(76)(t),l=n(18)(t),c=n(75)(t),u=n(74)(t),d=n(73)(t),h=n(72)(t),f=n(18)(t),_=n(71)(t),g=n(70)(t);function p(e,n){var i,r,a="";for(r=0;r<e.length;r++)i=t.config._migrate_buttons[e[r]]?t.config._migrate_buttons[e[r]]:e[r],a+="<div "+t._waiAria.lightboxButtonAttrString(i)+" class='gantt_btn_set gantt_left_btn_set "+i+"_set'"+(n?" style='float:right;'":"")+"><div dhx_button='1' data-dhx-button='1' class='"+i+"'></div><div>"+t.locale.labels[i]+"</div></div>";return a}function v(e,n,i){var r,a,o,s,l,c,u="";switch(i.timeFormat[n]){case"%Y":for(e._time_format_order[2]=n,e._time_format_order.size++,e.year_range&&(isNaN(e.year_range)?e.year_range.push&&(o=e.year_range[0],s=e.year_range[1]):r=e.year_range),r=r||10,a=a||Math.floor(r/2),o=o||i.date.getFullYear()-a,s=s||t.getState().max_date.getFullYear()+a,l=o;l<s;l++)u+="<option value='"+l+"'>"+l+"</option>";break;case"%m":for(e._time_format_order[1]=n,e._time_format_order.size++,l=0;l<12;l++)u+="<option value='"+l+"'>"+t.locale.date.month_full[l]+"</option>";break;case"%d":for(e._time_format_order[0]=n,e._time_format_order.size++,l=1;l<32;l++)u+="<option value='"+l+"'>"+l+"</option>";break;case"%H:%i":for(e._time_format_order[3]=n,e._time_format_order.size++,l=i.first,c=i.date.getDate(),e._time_values=[];l<i.last;)u+="<option value='"+l+"'>"+t.templates.time_picker(i.date)+"</option>",e._time_values.push(l),i.date.setTime(i.date.valueOf()+60*t._get_timepicker_step()*1e3),l=24*(i.date.getDate()!=c?1:0)*60+60*i.date.getHours()+i.date.getMinutes()}return u}t._lightbox_methods={},t._lightbox_template="<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span></div><div class='gantt_cal_larea'></div>",t._lightbox_root=t.$root,t.$services.getService("state").registerProvider("lightbox",function(){return{lightbox:t._lightbox_id}}),t.showLightbox=function(t){if(this.callEvent("onBeforeLightbox",[t])){var e=this.getTask(t),n=this.getLightbox(this.getTaskType(e.type));this._center_lightbox(n),this.showCover(),this._fill_lightbox(t,n),this._waiAria.lightboxVisibleAttr(n),this.callEvent("onLightbox",[t])}},t._get_timepicker_step=function(){if(this.config.round_dnd_dates){var e;if(function(t){var e=t.$ui.getView("timeline");return!(!e||!e.isVisible())}(this)){var n=t.getScale();e=r.getSecondsInUnit(n.unit)*n.step/60}return(!e||e>=1440)&&(e=this.config.time_step),e}return this.config.time_step},t.getLabel=function(t,e){for(var n=this._get_typed_lightbox_config(),i=0;i<n.length;i++)if(n[i].map_to==t)for(var r=n[i].options,a=0;a<r.length;a++)if(r[a].key==e)return r[a].label;return""},t.updateCollection=function(e,n){n=n.slice(0);var i=t.serverList(e);if(!i)return!1;i.splice(0,i.length),i.push.apply(i,n||[]),t.resetLightbox()},t.getLightboxType=function(){return this.getTaskType(this._lightbox_type)},t.getLightbox=function(e){var n,i,r,a,o,s="";if(function(){var e=!0===t.config.csp,n=!!window.Sfdc||!!window.$A||window.Aura||"$shadowResolver$"in document.body;t._lightbox_root=e||n?t.$root:document.body}(),void 0===e&&(e=this.getLightboxType()),!this._lightbox||this.getLightboxType()!=this.getTaskType(e)){this._lightbox_type=this.getTaskType(e),n=document.createElement("div"),s="gantt_cal_light",i=this._is_lightbox_timepicker(),(t.config.wide_form||i)&&(s+=" gantt_cal_light_wide"),i&&(t.config.wide_form=!0,s+=" gantt_cal_light_full"),n.className=s,n.style.visibility="hidden",r=this._lightbox_template,r+=p(this.config.buttons_left),r+=p(this.config.buttons_right,!0),n.innerHTML=r,t._waiAria.lightboxAttr(n),t.config.drag_lightbox&&(n.firstChild.onmousedown=t._ready_to_dnd,n.firstChild.onselectstart=function(){return!1},n.firstChild.style.cursor="pointer",t._init_dnd_events()),this._lightbox&&this.resetLightbox(),t._lightbox_root.insertBefore(n,t._lightbox_root.firstChild),this._lightbox=n,a=this._get_typed_lightbox_config(e),r=this._render_sections(a);var l=(o=n.querySelector("div.gantt_cal_larea")).style.overflow;o.style.overflow="hidden",o.innerHTML=r,function(e){var n,i,r,a,o,s;for(s=0;s<e.length;s++)n=e[s],r=t._lightbox_root.querySelector("#"+n.id),n.id&&r&&(i=r.querySelector("label"),(a=r.nextSibling)&&(o=a.querySelector("input, select, textarea"))&&(o.id=o.id||"input_"+t.uid(),n.inputId=o.id,i.setAttribute("for",n.inputId)))}(a),this.resizeLightbox(),o.style.overflow=l,this._init_lightbox_events(this),n.style.display="none",n.style.visibility="visible"}return this._lightbox},t._render_sections=function(t){for(var e="",n=0;n<t.length;n++){var i=this.form_blocks[t[n].type];if(i){t[n].id="area_"+this.uid();var r=t[n].hidden?" style='display:none'":"",a="";t[n].button&&(a="<div class='gantt_custom_button' data-index='"+n+"'><div class='gantt_custom_button_"+t[n].button+"'></div><div class='gantt_custom_button_label'>"+this.locale.labels["button_"+t[n].button]+"</div></div>"),this.config.wide_form&&(e+="<div class='gantt_wrap_section' "+r+">"),e+="<div id='"+t[n].id+"' class='gantt_cal_lsection'><label>"+a+this.locale.labels["section_"+t[n].name]+"</label></div>"+i.render.call(this,t[n]),e+="</div>"}}return e},t.resizeLightbox=function(){if(this._lightbox){var t=this._lightbox.querySelector(".gantt_cal_larea");t.style.height="0px",t.style.height=t.scrollHeight+"px",this._lightbox.style.height=t.scrollHeight+this.config.lightbox_additional_height+"px",t.style.height=t.scrollHeight+"px"}},t._center_lightbox=function(e){if(e){e.style.display="block";var n=window.pageYOffset||t._lightbox_root.scrollTop||document.documentElement.scrollTop,i=window.pageXOffset||t._lightbox_root.scrollLeft||document.documentElement.scrollLeft,r=window.innerHeight||document.documentElement.clientHeight;e.style.top=n?Math.round(n+Math.max((r-e.offsetHeight)/2,0))+"px":Math.round(Math.max((r-e.offsetHeight)/2,0)+9)+"px",document.documentElement.scrollWidth>t._lightbox_root.offsetWidth?e.style.left=Math.round(i+(t._lightbox_root.offsetWidth-e.offsetWidth)/2)+"px":e.style.left=Math.round((t._lightbox_root.offsetWidth-e.offsetWidth)/2)+"px"}},t.showCover=function(){this._cover||(this._cover=document.createElement("DIV"),this._cover.className="gantt_cal_cover",(t._lightbox_root||t.$root).appendChild(this._cover))},t.event(window,"deviceorientation",function(){t.getState().lightbox&&t._center_lightbox(t.getLightbox())}),t._init_lightbox_events=function(){t.lightbox_events={},t.lightbox_events.gantt_save_btn=function(){t._save_lightbox()},t.lightbox_events.gantt_delete_btn=function(){t._lightbox_new_type=null,t.callEvent("onLightboxDelete",[t._lightbox_id])&&(t.isTaskExists(t._lightbox_id)?t.$click.buttons.delete(t._lightbox_id):t.hideLightbox())},t.lightbox_events.gantt_cancel_btn=function(){t._cancel_lightbox()},t.lightbox_events.default=function(n,i){if(i.getAttribute("data-dhx-button"))t.callEvent("onLightboxButton",[i.className,i,n]);else{var r,a,o=e.getClassName(i);if(-1!=o.indexOf("gantt_custom_button"))if(-1!=o.indexOf("gantt_custom_button_"))for(r=i.parentNode.getAttribute("data-index"),a=i;a&&-1==e.getClassName(a).indexOf("gantt_cal_lsection");)a=a.parentNode;else r=i.getAttribute("data-index"),a=i.parentNode,i=i.firstChild;var s=t._get_typed_lightbox_config();r&&(r*=1,t.form_blocks[s[1*r].type].button_click(r,i,a,a.nextSibling))}},this.event(t.getLightbox(),"click",function(n){n=n||window.event;var i=e.getTargetNode(n),r=e.getClassName(i);return r||(i=i.previousSibling,r=e.getClassName(i)),i&&r&&0===r.indexOf("gantt_btn_set")&&(i=i.firstChild,r=e.getClassName(i)),!(!i||!r)&&(t.defined(t.lightbox_events[i.className])?t.lightbox_events[i.className]:t.lightbox_events.default)(n,i)}),t.getLightbox().onkeydown=function(n){var i=n||window.event,r=n.target||n.srcElement,a=e.getClassName(r).indexOf("gantt_btn_set")>-1;switch((n||i).keyCode){case t.constants.KEY_CODES.SPACE:if((n||i).shiftKey)return;a&&r.click&&r.click();break;case t.keys.edit_save:if((n||i).shiftKey)return;a&&r.click?r.click():t._save_lightbox();break;case t.keys.edit_cancel:t._cancel_lightbox()}}},t._cancel_lightbox=function(){var e=this.getLightboxValues();this.callEvent("onLightboxCancel",[this._lightbox_id,e.$new]),t.isTaskExists(e.id)&&e.$new&&(this.silent(function(){t.$data.tasksStore.removeItem(e.id),t._update_flags(e.id,null)}),this.refreshData()),this.hideLightbox()},t._save_lightbox=function(){var e=this.getLightboxValues();this.callEvent("onLightboxSave",[this._lightbox_id,e,!!e.$new])&&(t.$data.tasksStore._skipTaskRecalculation="lightbox",e.$new?(delete e.$new,this.addTask(e,e.parent,this.getTaskIndex(e.id))):this.isTaskExists(e.id)&&(this.mixin(this.getTask(e.id),e,!0),this.refreshTask(e.id),this.updateTask(e.id)),t.$data.tasksStore._skipTaskRecalculation=!1,this.refreshData(),this.hideLightbox())},t._resolve_default_mapping=function(t){var e=t.map_to;return!{time:!0,time_optional:!0,duration:!0,duration_optional:!0}[t.type]?"constraint"===t.type&&(t.map_to&&"string"!=typeof t.map_to||(e={constraint_type:"constraint_type",constraint_date:"constraint_date"})):"auto"==t.map_to?e={start_date:"start_date",end_date:"end_date",duration:"duration"}:"string"==typeof t.map_to&&(e={start_date:t.map_to}),e},t.getLightboxValues=function(){var e={};t.isTaskExists(this._lightbox_id)&&(e=this.mixin({},this.getTask(this._lightbox_id)));for(var n=this._get_typed_lightbox_config(),r=0;r<n.length;r++){var a=t._lightbox_root.querySelector("#"+n[r].id);a=a?a.nextSibling:a;var o=this.form_blocks[n[r].type];if(o){var s=o.get_value.call(this,a,e,n[r]),l=t._resolve_default_mapping(n[r]);if("string"==typeof l&&"auto"!=l)e[l]=s;else if("object"==i(l))for(var c in l)l[c]&&(e[l[c]]=s[c])}}return"task"==t._lightbox_new_type&&(e.type=t.config.types.task,t._lightbox_new_type=null),e},t.hideLightbox=function(){var t=this.getLightbox();t&&(t.style.display="none"),this._waiAria.lightboxHiddenAttr(t),this._lightbox_id=null,this.hideCover(),this.callEvent("onAfterLightbox",[])},t.hideCover=function(){this._cover&&this._cover.parentNode.removeChild(this._cover),this._cover=null},t.resetLightbox=function(){t._lightbox&&!t._custom_lightbox&&t._lightbox.parentNode.removeChild(t._lightbox),t._lightbox=null,t.hideCover()},t._set_lightbox_values=function(e,n){var i=e,r=n.getElementsByTagName("span"),a=[];t.templates.lightbox_header?(a.push(""),a.push(t.templates.lightbox_header(i.start_date,i.end_date,i)),r[1].innerHTML="",r[2].innerHTML=t.templates.lightbox_header(i.start_date,i.end_date,i)):(a.push(this.templates.task_time(i.start_date,i.end_date,i)),a.push(String(this.templates.task_text(i.start_date,i.end_date,i)||"").substr(0,70)),r[1].innerHTML=this.templates.task_time(i.start_date,i.end_date,i),r[2].innerHTML=String(this.templates.task_text(i.start_date,i.end_date,i)||"").substr(0,70)),r[1].innerHTML=a[0],r[2].innerHTML=a[1],t._waiAria.lightboxHeader(n,a.join(" "));for(var o=this._get_typed_lightbox_config(this.getLightboxType()),s=0;s<o.length;s++){var l=o[s];if(this.form_blocks[l.type]){var c=t._lightbox_root.querySelector("#"+l.id).nextSibling,u=this.form_blocks[l.type],d=t._resolve_default_mapping(o[s]),h=this.defined(i[d])?i[d]:l.default_value;u.set_value.call(t,c,h,i,l),l.focus&&u.focus.call(t,c)}}t.isTaskExists(e.id)&&(t._lightbox_id=e.id)},t._fill_lightbox=function(t,e){var n=this.getTask(t);this._set_lightbox_values(n,e)},t.getLightboxSection=function(e){for(var n=this._get_typed_lightbox_config(),i=0;i<n.length&&n[i].name!=e;i++);var r=n[i];if(!r)return null;this._lightbox||this.getLightbox();var a=t._lightbox_root.querySelector("#"+r.id),o=a.nextSibling,s={section:r,header:a,node:o,getValue:function(e){return t.form_blocks[r.type].get_value.call(t,o,e||{},r)},setValue:function(e,n){return t.form_blocks[r.type].set_value.call(t,o,e,n||{},r)}},l=this._lightbox_methods["get_"+r.type+"_control"];return l?l(s):s},t._lightbox_methods.get_template_control=function(t){return t.control=t.node,t},t._lightbox_methods.get_select_control=function(t){return t.control=t.node.getElementsByTagName("select")[0],t},t._lightbox_methods.get_textarea_control=function(t){return t.control=t.node.getElementsByTagName("textarea")[0],t},t._lightbox_methods.get_time_control=function(t){return t.control=t.node.getElementsByTagName("select"),t},t._init_dnd_events=function(){var e=t._lightbox_root;this.event(e,"mousemove",t._move_while_dnd),this.event(e,"mouseup",t._finish_dnd)},t._move_while_dnd=function(e){if(t._dnd_start_lb){document.gantt_unselectable||(t._lightbox_root.className+=" gantt_unselectable",document.gantt_unselectable=!0);var n=t.getLightbox(),i=[e.pageX,e.pageY];n.style.top=t._lb_start[1]+i[1]-t._dnd_start_lb[1]+"px",n.style.left=t._lb_start[0]+i[0]-t._dnd_start_lb[0]+"px"}},t._ready_to_dnd=function(e){var n=t.getLightbox();t._lb_start=[parseInt(n.style.left,10),parseInt(n.style.top,10)],t._dnd_start_lb=[e.pageX,e.pageY]},t._finish_dnd=function(){t._lb_start&&(t._lb_start=t._dnd_start_lb=!1,t._lightbox_root.className=t._lightbox_root.className.replace(" gantt_unselectable",""),document.gantt_unselectable=!1)},t._focus=function(e,n){if(e&&e.focus)if(t.config.touch);else try{n&&e.select&&e.select(),e.focus()}catch(t){}},t.form_blocks={getTimePicker:function(e,n){var i,a,o,s="",l=this.config,c={first:0,last:1440,date:this.date.date_part(new Date(t._min_date.valueOf())),timeFormat:function(e){var n,i,a;if(e.time_format)return e.time_format;a=["%d","%m","%Y"],n=t.getScale(),i=n?n.unit:t.config.duration_unit,r.getSecondsInUnit(i)<r.getSecondsInUnit("day")&&a.push("%H:%i");return a}(e)};for(e._time_format_order={size:0},t.config.limit_time_select&&(c.first=60*l.first_hour,c.last=60*l.last_hour+1,c.date.setHours(l.first_hour)),i=0;i<c.timeFormat.length;i++)i>0&&(s+=" "),(a=v(e,i,c))&&(o=t._waiAria.lightboxSelectAttrString(c.timeFormat[i]),s+="<select "+(e.readonly?"disabled='disabled'":"")+(n?" style='display:none' ":"")+o+">"+a+"</select>");return s},getTimePickerValue:function(e,n,i){var r,a=n._time_format_order,o=t.defined(a[3]),s=0,l=0,c=i||0;return o&&(r=parseInt(e[a[3]+c].value,10),s=Math.floor(r/60),l=r%60),new Date(e[a[2]+c].value,e[a[1]+c].value,e[a[0]+c].value,s,l)},_fill_lightbox_select:function(e,n,i,r){if(e[n+r[0]].value=i.getDate(),e[n+r[1]].value=i.getMonth(),e[n+r[2]].value=i.getFullYear(),t.defined(r[3])){var a=60*i.getHours()+i.getMinutes();a=Math.round(a/t._get_timepicker_step())*t._get_timepicker_step();var o=e[n+r[3]];o.value=a,o.setAttribute("data-value",a)}},template:new a,textarea:new o,select:new l,time:new s,duration:new d,parent:new h,radio:new u,checkbox:new c,resources:new f,constraint:new _,typeselect:new g},t._is_lightbox_timepicker=function(){for(var t=this._get_typed_lightbox_config(),e=0;e<t.length;e++)if("time"==t[e].name&&"time"==t[e].type)return!0;return!1},t._simple_confirm=function(e,n,i,r){if(!e)return i();var a={text:e};n&&(a.title=n),r&&(a.ok=r),i&&(a.callback=function(t){t&&i()}),t.confirm(a)},t._get_typed_lightbox_config=function(e){void 0===e&&(e=this.getLightboxType());var n=function(t){for(var e in this.config.types)if(this.config.types[e]==t)return e;return"task"}.call(this,e);return t.config.lightbox[n+"_sections"]?t.config.lightbox[n+"_sections"]:t.config.lightbox.sections},t._silent_redraw_lightbox=function(t){var e=this.getLightboxType();if(this.getState().lightbox){var n=this.getState().lightbox,i=this.getLightboxValues(),r=this.copy(this.getTask(n));this.resetLightbox();var a=this.mixin(r,i,!0),o=this.getLightbox(t||void 0);this._center_lightbox(this.getLightbox()),this._set_lightbox_values(a,o),this.showCover()}else this.resetLightbox(),this.getLightbox(t||void 0);this.callEvent("onLightboxChange",[e,this.getLightboxType()])}}},function(t,e){t.exports=function(t){function e(e){var n=e.$config.scrollX?t.$ui.getView(e.$config.scrollX):null,i=e.$config.scrollY?t.$ui.getView(e.$config.scrollY):null,r={x:null,y:null};n&&(n.getScrollState().visible&&(r.x=n.$view.scrollLeft));i&&(i.getScrollState().visible&&(r.y=i.$view.scrollTop));return r}function n(){var e;return t.$ui.getView("timeline")&&(e=t.$ui.getView("timeline")._tasks_dnd),e}t.config.touch_drag=500,t.config.touch=!0,t.config.touch_feedback=!0,t.config.touch_feedback_duration=1,t._prevent_touch_scroll=!1,t._touch_feedback=function(){t.config.touch_feedback&&navigator.vibrate&&navigator.vibrate(t.config.touch_feedback_duration)},t.attachEvent("onGanttReady",t.bind(function(){if("force"!=this.config.touch&&(this.config.touch=this.config.touch&&(-1!=navigator.userAgent.indexOf("Mobile")||-1!=navigator.userAgent.indexOf("iPad")||-1!=navigator.userAgent.indexOf("Android")||-1!=navigator.userAgent.indexOf("Touch"))||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1),this.config.touch){var t=!0;try{document.createEvent("TouchEvent")}catch(e){t=!1}t?this._touch_events(["touchmove","touchstart","touchend"],function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:t.target,pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t},function(){return!1}):window.navigator.pointerEnabled?this._touch_events(["pointermove","pointerdown","pointerup"],function(t){return"mouse"==t.pointerType?null:t},function(t){return!t||"mouse"==t.pointerType}):window.navigator.msPointerEnabled&&this._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t},function(t){return!t||t.pointerType==t.MSPOINTER_TYPE_MOUSE})}},t));var i=[];t._touch_events=function(r,a,o){for(var s,l=0,c=!1,u=!1,d=null,h=null,f=null,_=[],g=null,p=0;p<i.length;p++)t.eventRemove(i[p][0],i[p][1],i[p][2]);(i=[]).push([t.$container,r[0],function(i){var r=n();if(!o(i)&&c){h&&clearTimeout(h);var f=a(i);if(r&&(r.drag.id||r.drag.start_drag))return r.on_mouse_move(f),i.preventDefault&&i.preventDefault(),i.cancelBubble=!0,!1;if(!t._prevent_touch_scroll){if(f&&d){var _=d.pageX-f.pageX,p=d.pageY-f.pageY;if(!u&&(Math.abs(_)>5||Math.abs(p)>5)&&(u=!0,l=0,s=g?e(g):t.getScrollState()),u){var m,y=s.x+_,k=s.y+p;if(g?(!function(e,n,i){var r=e.$config.scrollX?t.$ui.getView(e.$config.scrollX):null,a=e.$config.scrollY?t.$ui.getView(e.$config.scrollY):null;r&&r.scrollTo(n,null),a&&a.scrollTo(null,i)}(g,y,k),m=e(g)):(t.scrollTo(y,k),m=t.getScrollState()),s.x!=m.x&&p>2*_||s.y!=m.y&&_>2*p)return v(i)}}return v(i)}return!0}}]),i.push([this.$container,"contextmenu",function(t){if(c)return v(t)}]),i.push([this.$container,r[1],function(e){if(document&&document.body&&document.body.classList.add("gantt_touch_active"),!o(e))if(e.touches&&e.touches.length>1)c=!1;else{d=a(e),g=function(e){for(var n=t.$layout.getCellsByType("viewCell"),i=0;i<n.length;i++){var r=n[i].$view.getBoundingClientRect();if(e.clientX>=r.left&&e.clientX<=r.right&&e.clientY<=r.bottom&&e.clientY>=r.top)return n[i]}}(d),t._locate_css(d,"gantt_hor_scroll")||t._locate_css(d,"gantt_ver_scroll")||(c=!0);var i=n();h=setTimeout(function(){var e=t.locate(d);i&&e&&!t._locate_css(d,"gantt_link_control")&&!t._locate_css(d,"gantt_grid_data")&&(i.on_mouse_down(d),i.drag&&i.drag.start_drag&&(!function(e){var n=t._getTaskLayers(),i=t.getTask(e);if(i&&t.isTaskVisible(e)){f=e;for(var r=0;r<n.length;r++)if((i=n[r].rendered[e])&&i.getAttribute(t.config.task_attribute)&&i.getAttribute(t.config.task_attribute)==e){var a=i.cloneNode(!0);_.push(i),n[r].rendered[e]=a,i.style.display="none",a.className+=" gantt_drag_move ",i.parentNode.appendChild(a)}}}(e),i._start_dnd(d),t._touch_drag=!0,t.refreshTask(e),t._touch_feedback())),h=null},t.config.touch_drag)}}]),i.push([this.$container,r[2],function(e){if(document&&document.body&&document.body.classList.remove("gantt_touch_active"),!o(e)){h&&clearTimeout(h),t._touch_drag=!1,c=!1;var i=a(e),r=n();if(r&&r.on_mouse_up(i),f&&t.isTaskExists(f)&&(t.refreshTask(f),_.length&&(_.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)}),t._touch_feedback())),c=u=!1,_=[],f=null,d&&l){var s=new Date;if(s-l<500)t.$services.getService("mouseEvents").onDoubleClick(d),v(e);else l=s}else l=new Date}}]);for(p=0;p<i.length;p++)t.event(i[p][0],i[p][1],i[p][2]);function v(t){return t&&t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),r=n(5),a=["ctrlKey","altKey","shiftKey","metaKey"],o=[[{unit:"month",date:"%M",step:1},{unit:"day",date:"%d",step:1}],[{unit:"day",date:"%d %M",step:1}],[{unit:"day",date:"%d %M",step:1},{unit:"hour",date:"%H:00",step:8}],[{unit:"day",date:"%d %M",step:1},{unit:"hour",date:"%H:00",step:1}]],s=function(){function t(t){var e=this;this.zoomIn=function(){var t=e.getCurrentLevel()-1;t<0||e.setLevel(t)},this.zoomOut=function(){var t=e.getCurrentLevel()+1;t>e._levels.length-1||e.setLevel(t)},this.getCurrentLevel=function(){return e._activeLevelIndex},this.getLevels=function(){return e._levels},this.setLevel=function(t){var n=e._getZoomIndexByName(t);-1===n&&e.$gantt.assert(-1!==n,"Invalid zoom level for gantt.ext.zoom.setLevel. "+t+" is not an expected value."),e._setLevel(n,0)},this._getZoomIndexByName=function(t){var n=-1;if("string"==typeof t){if(!isNaN(Number(t))&&e._levels[Number(t)])n=Number(t);else for(var i=0;i<e._levels.length;i++)if(e._levels[i].name===t){n=i;break}}else n=t;return n},this._getVisibleDate=function(){if(!e.$gantt.$task)return null;var t=e.$gantt.getScrollState().x,n=e.$gantt.$task.offsetWidth;e._visibleDate=e.$gantt.dateFromPos(t+n/2)},this._setLevel=function(t,n){e._activeLevelIndex=t;var i=e.$gantt,r=i.copy(e._levels[e._activeLevelIndex]),a=i.copy(r);if(delete a.name,i.mixin(i.config,a,!0),!!i.$root&&!!i.$task){if(n){var o=e.$gantt.dateFromPos(n+e.$gantt.getScrollState().x);e.$gantt.render();var s=e.$gantt.posFromDate(o);e.$gantt.scrollTo(s-n)}else{var l=e.$gantt.$task.offsetWidth;e._visibleDate||e._getVisibleDate();var c=e._visibleDate;e.$gantt.render();s=e.$gantt.posFromDate(c);e.$gantt.scrollTo(s-l/2)}e.callEvent("onAfterZoom",[e._activeLevelIndex,r])}},this._attachWheelEvent=function(t){var n,r=i.isFF?"wheel":"mousewheel";(n="function"==typeof t.element?t.element():t.element)&&e._domEvents.attach(n,r,e.$gantt.bind(function(t){if(this._useKey){if(a.indexOf(this._useKey)<0)return!1;if(!t[this._useKey])return!1}if("function"==typeof this._handler)return this._handler.apply(this,[t]),!0},e),{passive:!1})},this._defaultHandler=function(t){var n=e.$gantt.$task.getBoundingClientRect().x,i=t.clientX-n,r=!1;(e.$gantt.env.isFF?-40*t.deltaY:t.wheelDelta)>0&&(r=!0),t.preventDefault(),t.stopPropagation(),e._setScaleSettings(r,i)},this._setScaleDates=function(){e._initialStartDate&&e._initialEndDate&&(e.$gantt.config.start_date=e._initialStartDate,e.$gantt.config.end_date=e._initialEndDate)},this.$gantt=t,this._domEvents=this.$gantt._createDomEventScope()}return t.prototype.init=function(t){var e=this;this.$gantt.env.isNode||(this._initialStartDate=t.startDate,this._initialEndDate=t.endDate,this._activeLevelIndex=t.activeLevelIndex?t.activeLevelIndex:0,this._levels=this._mapScales(t.levels||o),this._handler=t.handler||this._defaultHandler,this._minColumnWidth=t.minColumnWidth||60,this._maxColumnWidth=t.maxColumnWidth||240,this._widthStep=t.widthStep||3/8*t.minColumnWidth,this._useKey=t.useKey,this._initialized||(r(this),this.$gantt.attachEvent("onGanttScroll",function(){e._getVisibleDate()})),this._domEvents.detachAll(),"wheel"===t.trigger&&(this.$gantt.$root?this._attachWheelEvent(t):this.$gantt.attachEvent("onGanttReady",function(){e._attachWheelEvent(t)})),this._initialized=!0,this.setLevel(this._activeLevelIndex))},t.prototype._mapScales=function(t){return t.map(function(t){return Array.isArray(t)?{scales:t}:t})},t.prototype._setScaleSettings=function(t,e){t?this._stepUp(e):this._stepDown(e)},t.prototype._stepUp=function(t){if(!(this._activeLevelIndex>=this._levels.length-1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var n=this.$gantt.config.min_column_width+this._widthStep;n>this._maxColumnWidth&&(n=this._minColumnWidth,e++),this.$gantt.config.min_column_width=n}else e++;this._setLevel(e,t)}},t.prototype._stepDown=function(t){if(!(this._activeLevelIndex<1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var n=this.$gantt.config.min_column_width-this._widthStep;n<this._minColumnWidth&&(n=this._maxColumnWidth,e--),this.$gantt.config.min_column_width=n}else e--;this._setLevel(e,t)}},t}();e.default=s},function(t,e){window.dhtmlx&&(window.dhtmlx.attaches||(window.dhtmlx.attaches={}),window.dhtmlx.attaches.attachGantt=function(t,e,n){var i=document.createElement("DIV");n=n||window.gantt,i.id="gantt_"+n.uid(),i.style.width="100%",i.style.height="100%",i.cmp="grid",document.body.appendChild(i),this.attachObject(i.id),this.dataType="gantt",this.dataObj=n;var r=this.vs[this.av];r.grid=n,n.init(i.id,t,e),i.firstChild.style.border="none",r.gridId=i.id,r.gridObj=i;return this.vs[this._viewRestore()].grid}),void 0!==window.dhtmlXCellObject&&(window.dhtmlXCellObject.prototype.attachGantt=function(t,e,n){n=n||window.gantt;var i=document.createElement("DIV");return i.id="gantt_"+n.uid(),i.style.width="100%",i.style.height="100%",i.cmp="grid",document.body.appendChild(i),this.attachObject(i.id),this.dataType="gantt",this.dataObj=n,n.init(i.id,t,e),i.firstChild.style.border="none",i=null,this.callEvent("_onContentAttach",[]),this.dataObj}),t.exports=null},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}window.jQuery&&function(t){var e=[];t.fn.dhx_gantt=function(i){if("string"!=typeof(i=i||{})){var r=[];return this.each(function(){if(this&&this.getAttribute)if(this.gantt||window.gantt.$root==this)r.push("object"==n(this.gantt)?this.gantt:window.gantt);else{var t=window.gantt.$container&&window.Gantt?window.Gantt.getGanttInstance():window.gantt;for(var e in i)"data"!=e&&(t.config[e]=i[e]);t.init(this),i.data&&t.parse(i.data),r.push(t)}}),1===r.length?r[0]:r}if(e[i])return e[i].apply(this,[]);t.error("Method "+i+" does not exist on jQuery.dhx_gantt")}}(window.jQuery),t.exports=null},function(t,e,n){var i=n(1),r=n(15);t.exports=function(t){var e=50,n=30,a=10,o=50,s=null,l=!1,c=null,u={started:!1},d={};function h(e){return e&&i.isChildOf(e,t.$root)&&e.offsetHeight}function f(){var e=!!document.querySelector(".gantt_drag_marker"),n=!!document.querySelector(".gantt_drag_marker.gantt_grid_resize_area")||!!document.querySelector(".gantt_drag_marker.gantt_row_grid_resize_area"),i=!!document.querySelector(".gantt_link_direction"),r=t.getState(),a=r.autoscroll;return l=e&&!n&&!i,!(!r.drag_mode&&!e||n)||a}function _(e){if(c&&(clearTimeout(c),c=null),e){var n=t.config.autoscroll_speed;n&&n<10&&(n=10),c=setTimeout(function(){s=setInterval(v,n||o)},t.config.autoscroll_delay||a)}}function g(t){t?(_(!0),u.started||(u.x=d.x,u.y=d.y,u.started=!0)):(s&&(clearInterval(s),s=null),_(!1),u.started=!1)}function p(e){var n=f();if(!s&&!c||n||g(!1),!t.config.autoscroll||!n)return!1;d={x:e.clientX,y:e.clientY},"touchmove"==e.type&&(d.x=e.targetTouches[0].clientX,d.y=e.targetTouches[0].clientY),!s&&n&&g(!0)}function v(){if(!f())return g(!1),!1;var e=h(t.$task)?t.$task:h(t.$grid)?t.$grid:t.$root;if(e){var r=!1;[".gantt_drag_marker.gantt_grid_resize_area",".gantt_drag_marker .gantt_row.gantt_row_task",".gantt_drag_marker.gantt_grid_dnd_marker"].forEach(function(t){r=r||!!document.querySelector(t)}),r&&(e=t.$grid);var a=i.getNodePosition(e),o=d.x-a.x,s=d.y-a.y+window.scrollY,c=l?0:m(o,a.width,u.x-a.x),_=m(s,a.height,u.y-a.y+window.scrollY),p=t.getScrollState(),v=p.y,y=p.inner_height,k=p.height,b=p.x,x=p.inner_width,w=p.width;_&&!y?_=0:_<0&&!v?_=0:_>0&&v+y>=k+2&&(_=0),c&&!x?c=0:c<0&&!b?c=0:c>0&&b+x>=w&&(c=0);var S=t.config.autoscroll_step;S&&S<2&&(S=2),c*=S||n,_*=S||n,(c||_)&&function(e,n){var i=t.getScrollState(),r=null,a=null;e&&(r=i.x+e,r=Math.min(i.width,r),r=Math.max(0,r));n&&(a=i.y+n,a=Math.min(i.height,a),a=Math.max(0,a));t.scrollTo(r,a)}(c,_)}}function m(t,n,i){return t-e<0&&t<i?-1:t>n-e&&t>i?1:0}t.attachEvent("onGanttReady",function(){if(!r(t)){var e=i.getRootNode(t.$root)||document.body;t.eventRemove(e,"mousemove",p),t.event(e,"mousemove",p),t.eventRemove(e,"touchmove",p),t.event(e,"touchmove",p),t.eventRemove(e,"pointermove",p),t.event(e,"pointermove",p)}}),t.attachEvent("onDestroy",function(){g(!1)})}},function(t,e,n){t.exports=function(t){t.ext||(t.ext={});for(var e=[n(84),n(83),n(82)],i=0;i<e.length;i++)e[i]&&e[i](t);var r=n(81).default;t.ext.zoom=new r(t)}},function(t,e){t.exports=function(t){t.skins.contrast_white={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:100,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.contrast_black={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:100,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.material={config:{grid_width:411,row_height:34,task_height_offset:6,scale_height:36,link_line_width:2,link_arrow_size:6,lightbox_additional_height:80},_second_column_width:110,_third_column_width:75,_redefine_lightbox_buttons:{buttons_left:["dhx_delete_btn"],buttons_right:["dhx_save_btn","dhx_cancel_btn"]}},t.attachEvent("onAfterTaskDrag",function(e){var n=t.getTaskNode(e);n&&(n.className+=" gantt_drag_animation",setTimeout(function(){var t=n.className.indexOf(" gantt_drag_animation");t>-1&&(n.className=n.className.slice(0,t))},200))})}},function(t,e){t.exports=function(t){t.skins.broadway={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:1,link_arrow_size:7,lightbox_additional_height:86},_second_column_width:90,_third_column_width:80,_lightbox_template:"<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span><div class='gantt_cancel_btn'></div></div><div class='gantt_cal_larea'></div>",_config_buttons_left:{},_config_buttons_right:{gantt_delete_btn:"icon_delete",gantt_save_btn:"icon_save"}}}},function(t,e){t.exports=function(t){t.skins.terrace={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:90,_third_column_width:70}}},function(t,e){t.exports=function(t){t.skins.meadow={config:{grid_width:350,row_height:27,scale_height:30,link_line_width:2,link_arrow_size:6,lightbox_additional_height:72},_second_column_width:95,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.skyblue={config:{grid_width:350,row_height:27,scale_height:27,link_line_width:1,link_arrow_size:8,lightbox_additional_height:75},_second_column_width:95,_third_column_width:80}}},function(t,e){function n(t,e){var n=e.skin;if(!n||t)for(var i=document.getElementsByTagName("link"),r=0;r<i.length;r++){var a=i[r].href.match("dhtmlxgantt_([a-z_]+).css");if(a&&(e.skins[a[1]]||!n)){n=a[1];break}}e.skin=n||"terrace";var o=e.skins[e.skin]||e.skins.terrace;!function(t,e,n){for(var i in e)(void 0===t[i]||n)&&(t[i]=e[i])}(e.config,o.config,t);var s=e.getGridColumns();s[1]&&!e.defined(s[1].width)&&(s[1].width=o._second_column_width),s[2]&&!e.defined(s[2].width)&&(s[2].width=o._third_column_width);for(r=0;r<s.length;r++){var l=s[r];"add"==l.name&&(l.width||(l.width=44),e.defined(l.min_width)&&e.defined(l.max_width)||(l.min_width=l.min_width||l.width,l.max_width=l.max_width||l.width),l.min_width&&(l.min_width=+l.min_width),l.max_width&&(l.max_width=+l.max_width),l.width&&(l.width=+l.width,l.width=l.min_width&&l.min_width>l.width?l.min_width:l.width,l.width=l.max_width&&l.max_width<l.width?l.max_width:l.width))}o.config.task_height&&(e.config.task_height=o.config.task_height||"full"),o.config.bar_height&&(e.config.bar_height=o.config.bar_height||"full"),o._lightbox_template&&(e._lightbox_template=o._lightbox_template),o._redefine_lightbox_buttons&&(e.config.buttons_right=o._redefine_lightbox_buttons.buttons_right,e.config.buttons_left=o._redefine_lightbox_buttons.buttons_left),e.resetLightbox()}t.exports=function(t){t.resetSkin||(t.resetSkin=function(){this.skin="",n(!0,this)},t.skins={},t.attachEvent("onGanttLayoutReady",function(){n(!1,this)}))}},function(t,e){t.exports=function(){function t(t){return t.$ui.getView("timeline")}function e(t){return t.$ui.getView("grid")}function n(n){var i=t(n);if(i&&!i.$config.hidden)return i;var r=e(n);return r&&!r.$config.hidden?r:null}function i(t){var i=null,r=!1;return[".gantt_drag_marker.gantt_grid_resize_area",".gantt_drag_marker .gantt_row.gantt_row_task",".gantt_drag_marker.gantt_grid_dnd_marker"].forEach(function(t){r=r||!!document.querySelector(t)}),(i=r?e(t):n(t))?a(t,i,"scrollY"):null}function r(t){var e=n(t);return e&&"grid"!=e.id?a(t,e,"scrollX"):null}function a(t,e,n){var i=e.$config[n];return t.$ui.getView(i)}var o="DEFAULT_VALUE";function s(t,e,n,i){var r=t(this);return r&&r.isVisible()?r[e].apply(r,n):i?i():o}return{getColumnIndex:function(t){var n=s.call(this,e,"getColumnIndex",[t]);return n===o?0:n},dateFromPos:function(e){var n=s.call(this,t,"dateFromPos",Array.prototype.slice.call(arguments));return n===o?this.getState().min_date:n},posFromDate:function(e){var n=s.call(this,t,"posFromDate",[e]);return n===o?0:n},getRowTop:function(n){var i=this,r=s.call(i,t,"getRowTop",[n],function(){return s.call(i,e,"getRowTop",[n])});return r===o?0:r},getTaskTop:function(n){var i=this,r=s.call(i,t,"getItemTop",[n],function(){return s.call(i,e,"getItemTop",[n])});return r===o?0:r},getTaskPosition:function(e,n,i){var r=s.call(this,t,"getItemPosition",[e,n,i]);return r===o?{left:0,top:this.getTaskTop(e.id),height:this.getTaskBarHeight(e.id),width:0}:r},getTaskBarHeight:function(n,i){var r=this,a=s.call(r,t,"getBarHeight",[n,i],function(){return s.call(r,e,"getItemHeight",[n])});return a===o?0:a},getTaskHeight:function(n){var i=this,r=s.call(i,t,"getItemHeight",[n],function(){return s.call(i,e,"getItemHeight",[n])});return r===o?0:r},columnIndexByDate:function(e){var n=s.call(this,t,"columnIndexByDate",[e]);return n===o?0:n},roundTaskDates:function(){s.call(this,t,"roundTaskDates",[])},getScale:function(){var e=s.call(this,t,"getScale",[]);return e===o?null:e},getTaskNode:function(e){var n=t(this);if(n&&n.isVisible()){var i=n._taskRenderer.rendered[e];if(!i){var r=n.$config.item_attribute;i=n.$task_bars.querySelector("["+r+"='"+e+"']")}return i||null}return null},getLinkNode:function(e){var n=t(this);return n.isVisible()?n._linkRenderer.rendered[e]:null},scrollTo:function(t,e){var n=i(this),a=r(this),o={position:0},s={position:0};n&&(s=n.getScrollState()),a&&(o=a.getScrollState());var l=a&&1*t==t,c=n&&1*e==e;if(l&&c)for(var u=n._getLinkedViews(),d=a._getLinkedViews(),h=[],f=0;f<u.length;f++)for(var _=0;_<d.length;_++)u[f].$config.id&&d[_].$config.id&&u[f].$config.id===d[_].$config.id&&h.push(u[f].$config.id);l&&(h&&h.forEach(function(t){this.$ui.getView(t).$config.$skipSmartRenderOnScroll=!0}.bind(this)),a.scroll(t),h&&h.forEach(function(t){this.$ui.getView(t).$config.$skipSmartRenderOnScroll=!1}.bind(this))),c&&n.scroll(e);var g={position:0},p={position:0};n&&(g=n.getScrollState()),a&&(p=a.getScrollState()),this.callEvent("onGanttScroll",[o.position,s.position,p.position,g.position])},showDate:function(t){var e=this.posFromDate(t),n=Math.max(e-this.config.task_scroll_offset,0);this.scrollTo(n)},showTask:function(n){var i=this.getTaskPosition(this.getTask(n)),r=i.left;this.config.rtl&&(r=i.left+i.width);var o,s=Math.max(r-this.config.task_scroll_offset,0),l=this._scroll_state().y;o=l?i.top-(l-this.getTaskBarHeight(n))/2:i.top,this.scrollTo(s,o);var c=e(this),u=t(this);c&&u&&c.$config.scrollY!=u.$config.scrollY&&a(this,c,"scrollY").scrollTo(null,o)},_scroll_state:function(){var t={x:!1,y:!1,x_pos:0,y_pos:0,scroll_size:this.config.scroll_size+1,x_inner:0,y_inner:0},e=i(this),n=r(this);if(n){var a=n.getScrollState();a.visible&&(t.x=a.size,t.x_inner=a.scrollSize),t.x_pos=a.position||0}if(e){var o=e.getScrollState();o.visible&&(t.y=o.size,t.y_inner=o.scrollSize),t.y_pos=o.position||0}return t},getScrollState:function(){var t=this._scroll_state();return{x:t.x_pos,y:t.y_pos,inner_width:t.x,inner_height:t.y,width:t.x_inner,height:t.y_inner}},getLayoutView:function(t){return this.$ui.getView(t)},scrollLayoutCell:function(t,e,n){var i=this.$ui.getView(t);if(!i)return!1;if(null!==e){var r=this.$ui.getView(i.$config.scrollX);r&&r.scrollTo(e,null)}if(null!==n){var a=this.$ui.getView(i.$config.scrollY);a&&a.scrollTo(null,n)}}}}},function(t,e){t.exports=function(t){delete t.addTaskLayer,delete t.addLinkLayer}},function(t,e,n){var i=n(1),r=function(t){return{getVerticalScrollbar:function(){return t.$ui.getView("scrollVer")},getHorizontalScrollbar:function(){return t.$ui.getView("scrollHor")},_legacyGridResizerClass:function(t){for(var e=t.getCellsByType("resizer"),n=0;n<e.length;n++){var i=e[n],r=!1,a=i.$parent.getPrevSibling(i.$id);if(a&&a.$config&&"grid"===a.$config.id)r=!0;else{var o=i.$parent.getNextSibling(i.$id);o&&o.$config&&"grid"===o.$config.id&&(r=!0)}r&&(i.$config.css=(i.$config.css?i.$config.css+" ":"")+"gantt_grid_resize_wrap")}},onCreated:function(e){var n=!0;this._legacyGridResizerClass(e),e.attachEvent("onBeforeResize",function(){var r=t.$ui.getView("timeline");r&&(r.$config.hidden=r.$parent.$config.hidden=!t.config.show_chart);var a=t.$ui.getView("grid");if(a){var o=a._getColsTotalWidth(),s=!t.config.show_grid||!t.config.grid_width||0===o;if(n&&!s&&!1!==o&&(t.config.grid_width=o),a.$config.hidden=a.$parent.$config.hidden=s,!a.$config.hidden){var l=a._getGridWidthLimits();if(l[0]&&t.config.grid_width<l[0]&&(t.config.grid_width=l[0]),l[1]&&t.config.grid_width>l[1]&&(t.config.grid_width=l[1]),r&&t.config.show_chart){if(a.$config.width=t.config.grid_width-1,!a.$config.scrollable&&a.$config.scrollY&&t.$root.offsetWidth){var c=a.$gantt.$layout.$container.offsetWidth,u=t.$ui.getView(a.$config.scrollY).$config.width,d=c-(a.$config.width+u);d<0&&(a.$config.width+=d,t.config.grid_width+=d)}if(n)a.$parent.$config.width=t.config.grid_width,a.$parent.$config.group&&t.$layout._syncCellSizes(a.$parent.$config.group,{value:a.$parent.$config.width,isGravity:!1});else if(r&&!i.isChildOf(r.$task,e.$view)){if(!a.$config.original_grid_width){var h=t.skins[t.skin];h&&h.config&&h.config.grid_width?a.$config.original_grid_width=h.config.grid_width:a.$config.original_grid_width=0}t.config.grid_width=a.$config.original_grid_width,a.$parent.$config.width=t.config.grid_width}else a.$parent._setContentSize(a.$config.width,null),t.$layout._syncCellSizes(a.$parent.$config.group,{value:t.config.grid_width,isGravity:!1})}else r&&i.isChildOf(r.$task,e.$view)&&(a.$config.original_grid_width=t.config.grid_width),n||(a.$parent.$config.width=0)}n=!1}}),this._initScrollStateEvents(e)},_initScrollStateEvents:function(e){t._getVerticalScrollbar=this.getVerticalScrollbar,t._getHorizontalScrollbar=this.getHorizontalScrollbar;var n=this.getVerticalScrollbar(),i=this.getHorizontalScrollbar();n&&n.attachEvent("onScroll",function(e,n,i){var r=t.getScrollState();t.callEvent("onGanttScroll",[r.x,e,r.x,n])}),i&&i.attachEvent("onScroll",function(e,n,i){var r=t.getScrollState();t.callEvent("onGanttScroll",[e,r.y,n,r.y]);var a=t.$ui.getView("grid");a&&a.$grid_data&&!a.$config.scrollable&&(a.$grid_data.style.left=a.$grid.scrollLeft+"px",a.$grid_data.scrollLeft=a.$grid.scrollLeft)}),e.attachEvent("onResize",function(){n&&!t.$scroll_ver&&(t.$scroll_ver=n.$scroll_ver),i&&!t.$scroll_hor&&(t.$scroll_hor=i.$scroll_hor)})},_findGridResizer:function(t,e){for(var n,i=t.getCellsByType("resizer"),r=!0,a=0;a<i.length;a++){var o=i[a];o._getSiblings();var s=o._behind,l=o._front;if(s&&s.$content===e||s.isChild&&s.isChild(e)){n=o,r=!0;break}if(l&&l.$content===e||l.isChild&&l.isChild(e)){n=o,r=!1;break}}return{resizer:n,gridFirst:r}},onInitialized:function(e){var n=t.$ui.getView("grid"),i=this._findGridResizer(e,n);if(i.resizer){var r,a=i.gridFirst,o=i.resizer;if("x"!==o.$config.mode)return;o.attachEvent("onResizeStart",function(e,n){var i=t.$ui.getView("grid"),o=i?i.$parent:null;if(o){var s=i._getGridWidthLimits();i.$config.scrollable||(o.$config.minWidth=s[0]),o.$config.maxWidth=s[1]}return r=a?e:n,t.callEvent("onGridResizeStart",[r])}),o.attachEvent("onResize",function(e,n){var i=a?e:n;return t.callEvent("onGridResize",[r,i])}),o.attachEvent("onResizeEnd",function(e,n,i,r){var o=a?e:n,s=a?i:r,l=t.$ui.getView("grid"),c=l?l.$parent:null;c&&(c.$config.minWidth=void 0);var u=t.callEvent("onGridResizeEnd",[o,s]);return u&&0!==s&&(t.config.grid_width=s),u})}},onDestroyed:function(t){}}};t.exports=r},function(t,e,n){var i=n(1),r=function(t,e){var n,r,a,o,s,l=10,c=18;function u(){return{link_source_id:o,link_target_id:r,link_from_start:s,link_to_start:a,link_landing_area:n}}var d=e.$services,h=d.getService("state"),f=d.getService("dnd");h.registerProvider("linksDnD",u);var _=new f(t.$task_bars,{sensitivity:0,updates_per_second:60,mousemoveContainer:e.$root,selector:".gantt_link_point",preventDefault:!0});function g(n,i,r,a,o){var s=function(n,i,r){var a=i(n),o={x:a.left,y:a.top,width:a.width,height:a.height};r.rtl?(o.xEnd=o.x,o.x=o.xEnd+o.width):o.xEnd=o.x+o.width;if(o.yEnd=o.y+o.height,e.getTaskType(n.type)==e.config.types.milestone){var s=function(e){var n=t.getBarHeight(e,!0);return Math.round(Math.sqrt(2*n*n))-2}(n.id);o.x+=(r.rtl?1:-1)*(s/2),o.xEnd+=(r.rtl?-1:1)*(s/2),o.width=a.xEnd-a.x}return o}(n,function(t){return e.getTaskPosition(t)},a),l={x:s.x,y:s.y};i||(l.x=s.xEnd),l.y+=e.getTaskHeight(n.id)/2;var c=function(t){return e.getTaskType(t.type)==e.config.types.milestone}(n)&&o?2:0;return r=r||0,a.rtl&&(r*=-1),l.x+=(i?-1:1)*r-c,l}function p(t,n){var i=_.getPosition(t),r=function(t){var e=0,n=0;return t&&(e=t.offsetWidth||0,n=t.offsetHeight||0),{width:e,height:n}}(n),a=function(){var t=e.$root;return{right:t.offsetWidth,bottom:t.offsetHeight}}(),o=e.config.tooltip_offset_x||l,s=e.config.tooltip_offset_y||l,u=e.config.scroll_size||c,d=e.$container.getBoundingClientRect().y+window.scrollY,h={y:i.y+s,x:i.x+o,bottom:i.y+r.height+s+u,right:i.x+r.width+o+u};return h.bottom>a.bottom+d&&(h.y=a.bottom+d-r.height-s),h.right>a.right&&(h.x=a.right-r.width-o),h}function v(t){var n=u(),i=["gantt_link_tooltip"];n.link_source_id&&n.link_target_id&&(e.isLinkAllowed(n.link_source_id,n.link_target_id,n.link_from_start,n.link_to_start)?i.push("gantt_allowed_link"):i.push("gantt_invalid_link"));var r=e.templates.drag_link_class(n.link_source_id,n.link_from_start,n.link_target_id,n.link_to_start);r&&i.push(r);var a="<div class='"+r+"'>"+e.templates.drag_link(n.link_source_id,n.link_from_start,n.link_target_id,n.link_to_start)+"</div>";t.innerHTML=a}function m(){o=s=r=null,a=!0}function y(n,i,r,a){var o=function(){_._direction&&_._direction.parentNode||(_._direction=document.createElement("div"),t.$task_links.appendChild(_._direction));return _._direction}(),s=u(),l=["gantt_link_direction"];e.templates.link_direction_class&&l.push(e.templates.link_direction_class(s.link_source_id,s.link_from_start,s.link_target_id,s.link_to_start));var c=Math.sqrt(Math.pow(r-n,2)+Math.pow(a-i,2));if(c=Math.max(0,c-3)){o.className=l.join(" ");var d=(a-i)/(r-n),h=Math.atan(d);2==k(n,r,i,a)?h+=Math.PI:3==k(n,r,i,a)&&(h-=Math.PI);var f=Math.sin(h),g=Math.cos(h),p=Math.round(i),v=Math.round(n),m=["-webkit-transform: rotate("+h+"rad)","-moz-transform: rotate("+h+"rad)","-ms-transform: rotate("+h+"rad)","-o-transform: rotate("+h+"rad)","transform: rotate("+h+"rad)","width:"+Math.round(c)+"px"];if(-1!=window.navigator.userAgent.indexOf("MSIE 8.0")){m.push('-ms-filter: "'+function(t,e){return"progid:DXImageTransform.Microsoft.Matrix(M11 = "+e+",M12 = -"+t+",M21 = "+t+",M22 = "+e+",SizingMethod = 'auto expand')"}(f,g)+'"');var y=Math.abs(Math.round(n-r)),b=Math.abs(Math.round(a-i));switch(k(n,r,i,a)){case 1:p-=b;break;case 2:v-=y,p-=b;break;case 3:v-=y}}m.push("top:"+p+"px"),m.push("left:"+v+"px"),o.style.cssText=m.join(";")}}function k(t,e,n,i){return e>=t?i<=n?1:4:i<=n?2:3}_.attachEvent("onBeforeDragStart",e.bind(function(n,r){var a=r.target||r.srcElement;if(m(),e.getState("tasksDnd").drag_id)return!1;if(i.locateClassName(a,"gantt_link_point")){i.locateClassName(a,"task_start_date")&&(s=!0);var l=e.locate(r);o=l;var c=e.getTask(l);if(e.isReadonly(c))return m(),!1;return this._dir_start=g(c,!!s,0,t.$getConfig(),!0),!0}return!1},this)),_.attachEvent("onAfterDragStart",e.bind(function(t,n){e.config.touch&&e.refreshData(),v(_.config.marker)},this)),_.attachEvent("onDragMove",e.bind(function(o,s){var l=_.config,c=p(s,l.marker);!function(t,e){t.style.left=e.x+"px",t.style.top=e.y+"px"}(l.marker,c);var u=!!i.locateClassName(s,"gantt_link_control"),d=r,h=n,f=a,m=e.locate(s),k=!0,b=i.getTargetNode(s);if(i.isChildOf(b,e.$root)||(u=!1,m=null),u&&(k=!i.locateClassName(s,"task_end_date"),u=!!m),r=m,n=u,a=k,u){var x=e.getTask(m),w=t.$getConfig(),S=i.locateClassName(s,"gantt_link_control"),T=0;S&&(T=Math.floor(S.offsetWidth/2)),this._dir_end=g(x,!!a,T,w)}else this._dir_end=i.getRelativeEventPosition(s,t.$task_data),e.env.isEdge&&(this._dir_end.y+=window.scrollY);var $=!(h==u&&d==m&&f==k);return $&&(d&&e.refreshTask(d,!1),m&&e.refreshTask(m,!1)),$&&v(l.marker),y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),_.attachEvent("onDragEnd",e.bind(function(){var t=u();if(t.link_source_id&&t.link_target_id&&t.link_source_id!=t.link_target_id){var n=e._get_link_type(t.link_from_start,t.link_to_start),i={source:t.link_source_id,target:t.link_target_id,type:n};i.type&&e.isLinkAllowed(i)&&e.callEvent("onLinkCreated",[i])&&e.addLink(i)}m(),e.config.touch?e.refreshData():(t.link_source_id&&e.refreshTask(t.link_source_id,!1),t.link_target_id&&e.refreshTask(t.link_target_id,!1)),_._direction&&(_._direction.parentNode&&_._direction.parentNode.removeChild(_._direction),_._direction=null)},this)),e.attachEvent("onGanttRender",e.bind(function(){_._direction&&y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y)},this))};t.exports={createLinkDND:function(){return{init:r}}}},function(t,e,n){var i=n(1),r=n(0),a=n(50),o=n(2);t.exports={createTaskDND:function(){var t;return{extend:function(e){e.roundTaskDates=function(e){t.round_task_dates(e)}},init:function(e,n){return t=function(t,e){var n=e.$services;return{drag:null,dragMultiple:{},_events:{before_start:{},before_finish:{},after_finish:{}},_handlers:{},init:function(){this._domEvents=e._createDomEventScope(),this.clear_drag_state();var t=e.config.drag_mode;this.set_actions(),n.getService("state").registerProvider("tasksDnd",r.bind(function(){return{drag_id:this.drag?this.drag.id:void 0,drag_mode:this.drag?this.drag.mode:void 0,drag_from_start:this.drag?this.drag.left:void 0}},this));var i={before_start:"onBeforeTaskDrag",before_finish:"onBeforeTaskChanged",after_finish:"onAfterTaskDrag"};for(var a in this._events)for(var o in t)this._events[a][o]=i[a];this._handlers[t.move]=this._move,this._handlers[t.resize]=this._resize,this._handlers[t.progress]=this._resize_progress},set_actions:function(){var n=t.$task_data;this._domEvents.attach(n,"mousemove",e.bind(function(t){this.on_mouse_move(t)},this)),this._domEvents.attach(n,"mousedown",e.bind(function(t){this.on_mouse_down(t)},this)),this._domEvents.attach(document.body,"mouseup",e.bind(function(t){this.on_mouse_up(t)},this))},clear_drag_state:function(){this.drag={id:null,mode:null,pos:null,start_x:null,start_y:null,obj:null,left:null},this.dragMultiple={}},_resize:function(n,i,r){var a=t.$getConfig(),o=this._drag_task_coords(n,r);r.left?(n.start_date=e.dateFromPos(o.start+i),n.start_date||(n.start_date=new Date(e.getState().min_date))):(n.end_date=e.dateFromPos(o.end+i),n.end_date||(n.end_date=new Date(e.getState().max_date)));var s=this._calculateMinDuration(a.min_duration,a.duration_unit);n.end_date-n.start_date<a.min_duration&&(r.left?n.start_date=e.calculateEndDate(n.end_date,-s,a.duration_unit,n):n.end_date=e.calculateEndDate(n.start_date,s,a.duration_unit,n)),e._init_task_timing(n)},_calculateMinDuration:function(t,e){return Math.ceil(t/{minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:31356e6}[e])},_resize_progress:function(e,n,i){var r=this._drag_task_coords(e,i),a=t.$getConfig().rtl?r.start-i.pos.x:i.pos.x-r.start,o=Math.max(0,a);e.progress=Math.min(1,o/Math.abs(r.end-r.start))},_find_max_shift:function(t,n){var i;for(var r in t){var a=t[r],o=e.getTask(a.id),s=this._drag_task_coords(o,a),l=e.posFromDate(new Date(e.getState().min_date)),c=e.posFromDate(new Date(e.getState().max_date));if(s.end+n>c){var u=c-s.end;(u<i||void 0===i)&&(i=u)}else if(s.start+n<l){var d=l-s.start;(d>i||void 0===i)&&(i=d)}}return i},_move:function(t,n,i,r){var a=this._drag_task_coords(t,i),o=null,s=null;r?(o=new Date(+i.obj.start_date+r),s=new Date(+i.obj.end_date+r)):(o=e.dateFromPos(a.start+n),s=e.dateFromPos(a.end+n)),o?s?(t.start_date=o,t.end_date=s):(t.end_date=new Date(e.getState().max_date),t.start_date=e.dateFromPos(e.posFromDate(t.end_date)-(a.end-a.start))):(t.start_date=new Date(e.getState().min_date),t.end_date=e.dateFromPos(e.posFromDate(t.start_date)+(a.end-a.start)))},_drag_task_coords:function(t,n){return{start:n.obj_s_x=n.obj_s_x||e.posFromDate(t.start_date),end:n.obj_e_x=n.obj_e_x||e.posFromDate(t.end_date)}},_mouse_position_change:function(t,e){var n=t.x-e.x,i=t.y-e.y;return Math.sqrt(n*n+i*i)},_is_number:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},on_mouse_move:function(t){if(this.drag.start_drag){var n=i.getRelativeEventPosition(t,e.$task_data),r=this.drag.start_drag.start_x,o=this.drag.start_drag.start_y;(Date.now()-this.drag.timestamp>50||this._is_number(r)&&this._is_number(o)&&this._mouse_position_change({x:r,y:o},n)>20)&&this._start_dnd(t)}if(this.drag.mode){if(!a(this,40))return;this._update_on_move(t)}},_update_item_on_move:function(t,n,i,r,a,o){var s=e.getTask(n),l=e.mixin({},s),c=e.mixin({},s);this._handlers[i].apply(this,[c,t,r,o]),e.mixin(s,c,!0),e.callEvent("onTaskDrag",[s.id,i,c,l,a]),e.mixin(s,c,!0),e.refreshTask(n)},_update_on_move:function(n){var a=this.drag,o=t.$getConfig();if(a.mode){var s=i.getRelativeEventPosition(n,t.$task_data);if(a.pos&&a.pos.x==s.x)return;a.pos=s;var l=e.dateFromPos(s.x);if(!l||isNaN(l.getTime()))return;var c=s.x-a.start_x,u=e.getTask(a.id);if(this._handlers[a.mode]){if(a.mode===o.drag_mode.move){var d={};this._isMultiselect()&&e.getSelectedTasks().indexOf(a.id)>=0&&(d=this.dragMultiple);var h=!1;if(e.isSummaryTask(u)&&e.config.drag_project){var f={};f[a.id]=r.copy(a),h=!0,d=r.mixin(f,this.dragMultiple)}var _=this._find_max_shift(d,c);for(var g in void 0!==_&&(c=_),this._update_item_on_move(c,a.id,a.mode,a,n),d){var p=d[g];if(h&&p.id!=a.id&&(e._bulk_dnd=!0),void 0===_&&(h||Object.keys(d).length>1))var v=l-e.dateFromPos(a.start_x);this._update_item_on_move(c,p.id,p.mode,p,n,v)}e._bulk_dnd=!1}else this._update_item_on_move(c,a.id,a.mode,a,n);e._update_parents(a.id)}}},on_mouse_down:function(n,r){if(2!=n.button||void 0===n.button){var a=t.$getConfig(),o=e.locate(n),s=null;if(e.isTaskExists(o)&&(s=e.getTask(o)),!e.isReadonly(s)&&!this.drag.mode){this.clear_drag_state(),r=r||n.target||n.srcElement;var l=i.getClassName(r),c=this._get_drag_mode(l,r);if(!l||!c)return r.parentNode?this.on_mouse_down(n,r.parentNode):void 0;if(c)if(c.mode&&c.mode!=a.drag_mode.ignore&&a["drag_"+c.mode]){if(o=e.locate(r),s=e.copy(e.getTask(o)||{}),e.isReadonly(s))return this.clear_drag_state(),!1;if(e.isSummaryTask(s)&&!a.drag_project&&c.mode!=a.drag_mode.progress)return void this.clear_drag_state();c.id=o;var u=i.getRelativeEventPosition(n,e.$task_data);c.start_x=u.x,c.start_y=u.y,c.obj=s,this.drag.start_drag=c,this.drag.timestamp=Date.now()}else this.clear_drag_state();else if(e.checkEvent("onMouseDown")&&e.callEvent("onMouseDown",[l.split(" ")[0]])&&r.parentNode)return this.on_mouse_down(n,r.parentNode)}}},_fix_dnd_scale_time:function(n,i){var r=t.$getConfig(),a=e.getScale().unit,o=e.getScale().step;function s(n){if(e.config.correct_work_time){var i=t.$getConfig();e.isWorkTime(n.start_date,void 0,n)||(n.start_date=e.calculateEndDate({start_date:n.start_date,duration:-1,unit:i.duration_unit,task:n}))}}r.round_dnd_dates||(a="minute",o=r.time_step),i.mode==r.drag_mode.resize?i.left?(n.start_date=e.roundDate({date:n.start_date,unit:a,step:o}),s(n)):(n.end_date=e.roundDate({date:n.end_date,unit:a,step:o}),function(n){if(e.config.correct_work_time){var i=t.$getConfig();e.isWorkTime(new Date(n.end_date-1),void 0,n)||(n.end_date=e.calculateEndDate({start_date:n.end_date,duration:1,unit:i.duration_unit,task:n}))}}(n)):i.mode==r.drag_mode.move&&(n.start_date=e.roundDate({date:n.start_date,unit:a,step:o}),s(n),n.end_date=e.calculateEndDate(n))},_fix_working_times:function(n,i){var r=t.$getConfig();(i=i||{mode:r.drag_mode.move}).mode==r.drag_mode.resize?i.left?n.start_date=e.getClosestWorkTime({date:n.start_date,dir:"future",task:n}):n.end_date=e.getClosestWorkTime({date:n.end_date,dir:"past",task:n}):i.mode==r.drag_mode.move&&e.correctTaskWorkTime(n)},_finalize_mouse_up:function(t,n,i,r){var a=e.getTask(t);if(n.work_time&&n.correct_work_time&&this._fix_working_times(a,i),this._fix_dnd_scale_time(a,i),this._fireEvent("before_finish",i.mode,[t,i.mode,e.copy(i.obj),r])){var o=t;e._init_task_timing(a),this.clear_drag_state(),e.updateTask(a.id),this._fireEvent("after_finish",i.mode,[o,i.mode,r])}else this.clear_drag_state(),t==i.id&&(i.obj._dhx_changed=!1,e.mixin(a,i.obj,!0)),e.refreshTask(a.id)},on_mouse_up:function(n){var i=this.drag;if(i.mode&&i.id){var r=t.$getConfig(),a=e.getTask(i.id),o=this.dragMultiple,s=!1,l=0;i.mode===r.drag_mode.move&&(e.isSummaryTask(a)&&r.drag_project||this._isMultiselect())&&(s=!0,l=Object.keys(o).length);var c=function(){if(s)for(var t in o)this._finalize_mouse_up(o[t].id,r,o[t],n);this._finalize_mouse_up(i.id,r,i,n)};s&&l>10?e.batchUpdate(function(){c.call(this)}.bind(this)):c.call(this)}this.clear_drag_state()},_get_drag_mode:function(e,n){var i=t.$getConfig().drag_mode,r={mode:null,left:null};switch((e||"").split(" ")[0]){case"gantt_task_line":case"gantt_task_content":r.mode=i.move;break;case"gantt_task_drag":r.mode=i.resize;var a=n.getAttribute("data-bind-property");r.left="start_date"==a;break;case"gantt_task_progress_drag":r.mode=i.progress;break;case"gantt_link_control":case"gantt_link_point":r.mode=i.ignore;break;default:r=null}return r},_start_dnd:function(n){var i=this.drag=this.drag.start_drag;delete i.start_drag;var r=t.$getConfig(),a=i.id;if(r["drag_"+i.mode]&&e.callEvent("onBeforeDrag",[a,i.mode,n])&&this._fireEvent("before_start",i.mode,[a,i.mode,n])){delete i.start_drag;var s=e.getTask(a);if(e.isReadonly(s))return void this.clear_drag_state();if(this._isMultiselect()){var l=e.getSelectedTasks();l.indexOf(i.id)>=0&&o.forEach(l,e.bind(function(t){var n=e.getTask(t);e.isSummaryTask(n)&&e.config.drag_project&&i.mode==r.drag_mode.move&&this._addSubtasksToDragMultiple(n.id),this.dragMultiple[t]=e.mixin({id:n.id,obj:e.copy(n)},this.drag)},this))}e.isSummaryTask(s)&&e.config.drag_project&&i.mode==r.drag_mode.move&&this._addSubtasksToDragMultiple(s.id),e.callEvent("onTaskDragStart",[])}else this.clear_drag_state()},_fireEvent:function(t,n,i){e.assert(this._events[t],"Invalid stage:{"+t+"}");var r=this._events[t][n];return e.assert(r,"Unknown after drop mode:{"+n+"}"),e.assert(i,"Invalid event arguments"),!e.checkEvent(r)||e.callEvent(r,i)},round_task_dates:function(e){var n=this.drag,i=t.$getConfig();n||(n={mode:i.drag_mode.move}),this._fix_dnd_scale_time(e,n)},destructor:function(){this._domEvents.detachAll()},_isMultiselect:function(){return e.config.drag_multiple&&!!(e.getSelectedTasks&&e.getSelectedTasks().length>0)},_addSubtasksToDragMultiple:function(t){e.eachTask(function(t){this.dragMultiple[t.id]=e.mixin({id:t.id,obj:e.copy(t)},this.drag)},t,this)}}}(e,n),e._tasks_dnd=t,t.init(n)},destructor:function(){t&&(t.destructor(),t=null)}}}}},function(t,e,n){var i=n(0),r=n(98),a=n(97),o=n(1),s=function(t){var e=t.$services;return{onCreated:function(e){var o=e.$config;o.bind=i.defined(o.bind)?o.bind:"task",o.bindLinks=i.defined(o.bindLinks)?o.bindLinks:"link",e._linksDnD=a.createLinkDND(),e._tasksDnD=r.createTaskDND(),e._tasksDnD.extend(e),this._mouseDelegates=n(31)(t)},onInitialized:function(e){this._attachDomEvents(t),this._attachStateProvider(t,e),e._tasksDnD.init(e,t),e._linksDnD.init(e,t),"timeline"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){this._clearDomEvents(t),this._clearStateProvider(t),e._tasksDnD&&e._tasksDnD.destructor()},extendDom:function(e){t.$task=e.$task,t.$task_scale=e.$task_scale,t.$task_data=e.$task_data,t.$task_bg=e.$task_bg,t.$task_links=e.$task_links,t.$task_bars=e.$task_bars},_clearDomEvents:function(){this._mouseDelegates.destructor(),this._mouseDelegates=null},_attachDomEvents:function(t){function e(e,n){if(e&&this.callEvent("onLinkDblClick",[e,n])){var i=this.getLink(e);if(this.isReadonly(i))return;var r=this.locale.labels.link+" "+this.templates.link_description(this.getLink(e))+" "+this.locale.labels.confirm_link_deleting;window.setTimeout(function(){t._simple_confirm(r,"",function(){t.deleteLink(e)})},this.config.touch?300:1)}}this._mouseDelegates.delegate("click","gantt_task_link",t.bind(function(t,e){var n=this.locate(t,this.config.link_attribute);n&&this.callEvent("onLinkClick",[n,t])},t),this.$task),this._mouseDelegates.delegate("click","gantt_scale_cell",t.bind(function(e,n){var i=o.getRelativeEventPosition(e,t.$task_data),r=t.dateFromPos(i.x),a=Math.floor(t.columnIndexByDate(r)),s=t.getScale().trace_x[a];t.callEvent("onScaleClick",[e,s])},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_task_link",t.bind(function(n,i,r){i=this.locate(n,t.config.link_attribute),e.call(this,i,n)},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_link_point",t.bind(function(t,n,i){n=this.locate(t);var r=this.getTask(n),a=null;return i.parentNode&&o.getClassName(i.parentNode)&&(a=o.getClassName(i.parentNode).indexOf("_left")>-1?r.$target[0]:r.$source[0]),a&&e.call(this,a,t),!1},t),this.$task)},_attachStateProvider:function(t,n){var i=n;e.getService("state").registerProvider("tasksTimeline",function(){return{scale_unit:i._tasks?i._tasks.unit:void 0,scale_step:i._tasks?i._tasks.step:void 0}})},_clearStateProvider:function(){e.getService("state").unregisterProvider("tasksTimeline")}}};t.exports=s},function(t,e,n){var i=n(1);function r(t,e){var n=i.getNodePosition(e.$grid_data);return t.x+=n.x+e.$grid.scrollLeft,t.y+=n.y-e.$grid_data.scrollTop,t}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=i.getNodePosition(t.$root);return e>r.width&&(e=r.width-n-2),e}t.exports={removeLineHighlight:function(t){t.markerLine&&t.markerLine.parentNode&&t.markerLine.parentNode.removeChild(t.markerLine),t.markerLine=null},highlightPosition:function(t,e,n){var o=function(t,e){var n=i.getNodePosition(e.$grid_data),r=i.getRelativeEventPosition(t,e.$grid_data),o=n.x+e.$grid.scrollLeft,s=r.y-10,l=e.getItemHeight(t.targetId);s<n.y&&(s=n.y);var c=e.getTotalHeight();return s>n.y+c-l&&(s=n.y+c-l),n.x=o,n.y=s,n.width=a(e.$gantt,n.width,9),n}(t,n);e.marker.style.left=o.x+9+"px",e.marker.style.width=o.width+"px",e.marker.style.overflow="hidden";var s=e.markerLine;s||((s=document.createElement("div")).className="gantt_drag_marker gantt_grid_dnd_marker",s.innerHTML="<div class='gantt_grid_dnd_marker_line'></div>",s.style.pointerEvents="none"),t.child?function(t,e,n){var i=t.targetParent,o=r({x:0,y:n.getItemTop(i)},n),s=n.$grid_data.getBoundingClientRect().bottom+window.scrollY,l=a(n.$gantt,n.$grid_data.offsetWidth);e.innerHTML="<div class='gantt_grid_dnd_marker_folder'></div>",e.style.width=l+"px",e.style.top=o.y+"px",e.style.left=o.x+"px",e.style.height=n.getItemHeight(i)+"px",o.y>s&&(e.style.top=s+"px")}(t,s,n):function(t,e,n){var i=function(t,e){var n=e.$config.rowStore,i={x:0,y:0},o=e.$grid_data.querySelector(".gantt_tree_indent"),s=15,l=0;if(o&&(s=o.offsetWidth),t.targetId!==n.$getRootId()){var c=e.getItemTop(t.targetId),u=e.getItemHeight(t.targetId);if(l=n.exists(t.targetId)?n.calculateItemLevel(n.getItem(t.targetId)):0,t.prevSibling)i.y=c;else if(t.nextSibling){var d=0;n.eachItem(function(t){-1!==n.getIndexById(t.id)&&d++},t.targetId),i.y=c+u+d*u}else i.y=c+u,l+=1}return i.x=40+l*s,i.width=a(e.$gantt,Math.max(e.$grid_data.offsetWidth-i.x,0),i.x),r(i,e)}(t,n),o=n.$grid_data.getBoundingClientRect().bottom+window.scrollY;e.innerHTML="<div class='gantt_grid_dnd_marker_line'></div>",e.style.left=i.x+"px",e.style.height="4px";var s=i.y-2;e.style.top=s+"px",e.style.width=i.width+"px",s>o&&(e.style.top=o+"px")}(t,s,n),e.markerLine||(document.body.appendChild(s),e.markerLine=s)}}},function(t,e,n){var i=n(24);t.exports=function(t,e,n,r,a){var o;if(e!==a.$getRootId())o=n<.25?i.prevSiblingTarget(t,e,a):!(n>.6)||a.hasChild(e)&&a.getItem(e).$open?i.firstChildTarget(t,e,a):i.nextSiblingTarget(t,e,a);else{var s=a.$getRootId();o=a.hasChild(s)&&r>=0?i.lastChildTarget(t,s,a):i.firstChildTarget(t,s,a)}return o}},function(t,e,n){var i=n(24);function r(t,e,n,r,a){for(var o=e;r.exists(o);){var s=r.calculateItemLevel(r.getItem(o));if((s===n||s===n-1)&&r.getBranchIndex(o)>-1)break;o=a?r.getPrev(o):r.getNext(o)}return r.exists(o)?r.calculateItemLevel(r.getItem(o))===n?a?i.nextSiblingTarget(t,o,r):i.prevSiblingTarget(t,o,r):i.firstChildTarget(t,o,r):null}function a(t,e,n,i){return r(t,e,n,i,!0)}function o(t,e,n,i){return r(t,e,n,i,!1)}t.exports=function(t,e,n,r,s,l){var c;if(e!==s.$getRootId()){var u=s.getItem(e),d=s.calculateItemLevel(u);if(d===l){var h=s.getPrevSibling(e);n<.5&&!h?c=i.prevSiblingTarget(t,e,s):(n<.5&&(e=h),c=i.nextSiblingTarget(t,e,s))}else if(d>l)s.eachParent(function(t){s.calculateItemLevel(t)===l&&(e=t.id)},u),c=a(t,e,l,s);else{var f=a(t,e,l,s),_=o(t,e,l,s);c=n<.5?f:_}}else{var g=s.$getRootId(),p=s.getChildren(g);c=i.createDropTargetObject(),c=p.length&&r>=0?a(t,function(t){for(var e=t.getNext();t.exists(e);){var n=t.getNext(e);if(!t.exists(n))return e;e=n}return null}(s),l,s):o(t,g,l,s)}return c}},function(t,e,n){var i=n(1),r=n(24),a=n(102),o=n(101),s=n(100),l=n(16);t.exports={init:function(t,e){var n=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var c=new n(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(c.config.sensitivity=e.$getConfig().dnd_sensitivity),c.attachEvent("onBeforeDragStart",t.bind(function(n,r){var a=u(r);if(!a)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),i.closest(r.target,".gantt_grid_editor_placeholder"))return!1;var o=a.getAttribute(e.$config.item_attribute),s=e.$config.rowStore.getItem(o);return!t.isReadonly(s)&&!d(o)&&(c.config.initial_open_state=s.$open,!!t.callEvent("onRowDragStart",[o,r.target||r.srcElement,r])&&void 0)},t)),c.attachEvent("onAfterDragStart",t.bind(function(t,n){var i=u(n);c.config.marker.innerHTML=i.outerHTML;var a=c.config.marker.firstChild;a&&(c.config.marker.style.opacity=.4,a.style.position="static",a.style.pointerEvents="none"),c.config.id=i.getAttribute(e.$config.item_attribute);var o=e.$config.rowStore,s=o.getItem(c.config.id);c.config.level=o.calculateItemLevel(s),c.config.drop_target=r.createDropTargetObject({targetParent:o.getParent(s.id),targetIndex:o.getBranchIndex(s.id),targetId:s.id,nextSibling:!0}),s.$open=!1,s.$transparent=!0,this.refreshData()},t)),c.attachEvent("onDragMove",t.bind(function(n,i){var a=h(i);return a&&!1!==t.callEvent("onBeforeRowDragMove",[c.config.id,a.targetParent,a.targetIndex])||(a=r.createDropTargetObject(c.config.drop_target)),s.highlightPosition(a,c.config,e),c.config.drop_target=a,t._waiAria.reorderMarkerAttr(c.config.marker),this.callEvent("onRowDragMove",[c.config.id,a.targetParent,a.targetIndex]),!0},t)),c.attachEvent("onDragEnd",t.bind(function(){var n=e.$config.rowStore,i=n.getItem(c.config.id);s.removeLineHighlight(c.config),i.$transparent=!1,i.$open=c.config.initial_open_state;var r=c.config.drop_target;!1===this.callEvent("onBeforeRowDragEnd",[c.config.id,r.targetParent,r.targetIndex])?i.$drop_target=null:(n.move(c.config.id,r.targetIndex,r.targetParent),t.render(),this.callEvent("onRowDragEnd",[c.config.id,r.targetParent,r.targetIndex])),n.refresh(i.id)},t))}function u(t){return i.locateAttribute(t,e.$config.item_attribute)}function d(n){return l(n,t,t.getDatastore(e.$config.bind))}function h(n){var r,s=function(n){var r=i.getRelativeEventPosition(n,e.$grid_data).y,a=e.$config.rowStore;document.doctype||(r+=window.scrollY),r=r||0;var o=e.$state.scrollTop||0,s=t.$grid_data.getBoundingClientRect().height+o+window.scrollY,l=o,u=e.getItemIndexByTopPosition(e.$state.scrollTop);if(a.exists(u)||(u=a.countVisible()-1),u<0)return a.$getRootId();var h=a.getIdByIndex(u),f=e.$state.scrollTop/e.getItemHeight(h),_=f-Math.floor(f);_>.1&&_<.9&&(s-=e.getItemHeight(h)*_,l+=e.getItemHeight(h)*(1-_));var g=i.getNodePosition(e.$grid_data),p=g.y+g.height,v=c.config.marker.offsetHeight;r+v+window.scrollY>=s&&(c.config.marker.style.top=p-v+"px"),r>=s?r=s:r<=l&&(r=l,c.config.marker.style.top=g.y+"px");var m=e.getItemIndexByTopPosition(r);if(m>a.countVisible()-1||m<0)return a.$getRootId();var y=a.getIdByIndex(m);return d(y)?a.getPrevSibling(y):a.getIdByIndex(m)}(n),l=null,u=e.$config.rowStore,h=!e.$getConfig().order_branch_free,f=i.getRelativeEventPosition(n,e.$grid_data).y;return document.doctype||(f+=window.scrollY),s!==u.$getRootId()&&(l=(f-e.getItemTop(s))/e.getItemHeight(s)),h?(r=a(c.config.id,s,l,f,u,c.config.level))&&r.targetParent&&d(r.targetParent)&&(s=u.getPrevSibling(r.targetParent),r=a(c.config.id,s,l,f,u,c.config.level)):r=o(c.config.id,s,l,f,u),r}}}},function(t,e,n){var i=n(1),r=n(16);t.exports={init:function(t,e){var n=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var a=new n(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(a.config.sensitivity=e.$getConfig().dnd_sensitivity),a.attachEvent("onBeforeDragStart",t.bind(function(n,r){var c=o(r);if(!c)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),i.closest(r.target,".gantt_grid_editor_placeholder"))return!1;var u=c.getAttribute(e.$config.item_attribute);if(l(u))return!1;var d=s().getItem(u);return!t.isReadonly(d)&&(a.config.initial_open_state=d.$open,!!t.callEvent("onRowDragStart",[u,r.target||r.srcElement,r])&&void 0)},t)),a.attachEvent("onAfterDragStart",t.bind(function(t,n){var i=o(n);a.config.marker.innerHTML=i.outerHTML;var r=a.config.marker.firstChild;r&&(r.style.position="static"),a.config.id=i.getAttribute(e.$config.item_attribute);var l=s(),c=l.getItem(a.config.id);a.config.index=l.getBranchIndex(a.config.id),a.config.parent=c.parent,c.$open=!1,c.$transparent=!0,this.refreshData()},t)),a.lastTaskOfLevel=function(t){for(var e=null,n=s().getItems(),i=0,r=n.length;i<r;i++)n[i].$level==t&&(e=n[i]);return e?e.id:null},a._getGridPos=t.bind(function(t){var n=i.getNodePosition(e.$grid_data),r=n.x+e.$grid.scrollLeft,o=t.pos.y-10,s=e.getItemHeight(a.config.id);o<n.y&&(o=n.y);var l=e.getTotalHeight();o>n.y+l-s&&(o=n.y+l-s);var c=n.y+n.height;return o>c-s&&(o=c-s),n.x=r,n.y=o,n},t),a._getTargetY=t.bind(function(n){var r=i.getNodePosition(e.$grid_data),a=e.$state.scrollTop||0,o=t.$grid_data.getBoundingClientRect().height+a,s=n.pageY-r.y+a;return s>o?s=o:s<a&&(s=a),s},t),a._getTaskByY=t.bind(function(t,n){var i=s();t=t||0;var r=e.getItemIndexByTopPosition(t);return(r=n<r?r-1:r)>i.countVisible()-1?null:i.getIdByIndex(r)},t),a.attachEvent("onDragMove",t.bind(function(n,r){var o=t.$grid_data.getBoundingClientRect(),c=o.height+o.y+(e.$state.scrollTop||0)+window.scrollY,u=a.config,d=a._getGridPos(r);t._waiAria.reorderMarkerAttr(u.marker);var h=e.$getConfig(),f=s();d.y<c?u.marker.style.top=d.y+"px":u.marker.style.top=c+"px",u.marker.style.left=d.x+10+"px";var _=i.getNodePosition(t.$root);d.width>_.width&&(u.marker.style.width=_.width-10-2+"px",u.marker.style.overflow="hidden");var g=f.getItem(a.config.id),p=a._getTargetY(r),v=a._getTaskByY(p,f.getIndexById(g.id));function m(t,e){return!f.isChildOf(y.id,e.id)&&(t.$level==e.$level||h.order_branch_free)}if(f.exists(v)||(v=a.lastTaskOfLevel(h.order_branch_free?g.$level:0))==a.config.id&&(v=null),f.exists(v)){var y=f.getItem(v),k=e.getItemTop(y.id),b=e.getItemHeight(y.id);if(k+b/2<p){var x=f.getIndexById(y.id),w=f.getNext(y.id),S=f.getItem(w);if(l(w)){var T=f.getPrev(S.id);S=f.getItem(T)}if(S){if(S.id==g.id)return h.order_branch_free&&f.isChildOf(g.id,y.id)&&1==f.getChildren(y.id).length?void f.move(g.id,f.getBranchIndex(y.id)+1,f.getParent(y.id)):void 0;y=S}else if(w=f.getIdByIndex(x),S=f.getItem(w),l(w)&&(T=f.getPrev(S.id),S=f.getItem(T)),m(S,g)&&S.id!=g.id)return void f.move(g.id,-1,f.getParent(S.id))}else if(h.order_branch_free&&y.id!=g.id&&m(y,g)&&!l(y.id)){if(!f.hasChild(y.id))return y.$open=!0,void f.move(g.id,-1,y.id);if(f.getIndexById(y.id)||b/3<p)return}x=f.getIndexById(y.id),T=f.getIdByIndex(x-1);for(var $=f.getItem(T),C=1;(!$||$.id==y.id)&&x-C>=0;)T=f.getIdByIndex(x-C),$=f.getItem(T),C++;if(g.id==y.id||l(y.id))return;m(y,g)&&g.id!=y.id?f.move(g.id,0,0,y.id):y.$level!=g.$level-1||f.getChildren(y.id).length?$&&m($,g)&&g.id!=$.id&&f.move(g.id,-1,f.getParent($.id)):f.move(g.id,0,y.id)}return!0},t)),a.attachEvent("onDragEnd",t.bind(function(){var e=s(),n=e.getItem(a.config.id);n.$transparent=!1,n.$open=a.config.initial_open_state,!1===this.callEvent("onBeforeRowDragEnd",[a.config.id,a.config.parent,a.config.index])?(e.move(a.config.id,a.config.index,a.config.parent),n.$drop_target=null):this.callEvent("onRowDragEnd",[a.config.id,n.$drop_target]),t.render(),this.refreshData()},t))}function o(t){return i.locateAttribute(t,e.$config.item_attribute)}function s(){return t.getDatastore(e.$config.bind)}function l(e){return r(e,t,s())}}}},function(t,e,n){var i=n(0),r=n(104),a=n(103),o=function(t){return{onCreated:function(e){e.$config=i.mixin(e.$config,{bind:"task"}),"grid"==e.$config.id&&(this.extendGantt(e),t.ext.inlineEditors=t.ext._inlineEditors.createEditors(e),t.ext.inlineEditors.init()),this._mouseDelegates=n(31)(t)},onInitialized:function(e){var n=e.$getConfig();n.order_branch&&("marker"==n.order_branch?a.init(e.$gantt,e):r.init(e.$gantt,e)),this.initEvents(e,t),"grid"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){"grid"==e.$config.id&&t.ext.inlineEditors.destructor(),this.clearEvents(e,t)},initEvents:function(t,e){this._mouseDelegates.delegate("click","gantt_row",e.bind(function(n,i,r){var a=t.$getConfig();if(null!==i){var o=this.getTask(i);a.scroll_on_click&&!e._is_icon_open_click(n)&&this.showDate(o.start_date),e.callEvent("onTaskRowClick",[i,r])}},e),t.$grid),this._mouseDelegates.delegate("click","gantt_grid_head_cell",e.bind(function(n,i,r){var a=r.getAttribute("data-column-id");if(e.callEvent("onGridHeaderClick",[a,n])){var o=t.$getConfig();if("add"!=a){if(o.sort&&a){for(var s,l=a,c=0;c<o.columns.length;c++)if(o.columns[c].name==a){s=o.columns[c];break}if(s&&void 0!==s.sort&&!0!==s.sort&&!(l=s.sort))return;var u=this._sort&&this._sort.direction&&this._sort.name==a?this._sort.direction:"desc";u="desc"==u?"asc":"desc",this._sort={name:a,direction:u},this.sort(l,"desc"==u)}}else e.$services.getService("mouseEvents").callHandler("click","gantt_add",t.$grid,[n,o.root_id])}},e),t.$grid),this._mouseDelegates.delegate("click","gantt_add",e.bind(function(n,i,r){if(!t.$getConfig().readonly)return this.createTask({},i||e.config.root_id),!1},e),t.$grid)},clearEvents:function(t,e){this._mouseDelegates.destructor(),this._mouseDelegates=null},extendDom:function(e){t.$grid=e.$grid,t.$grid_scale=e.$grid_scale,t.$grid_data=e.$grid_data},extendGantt:function(e){t.getGridColumns=t.bind(e.getGridColumns,e),e.attachEvent("onColumnResizeStart",function(){return t.callEvent("onColumnResizeStart",arguments)}),e.attachEvent("onColumnResize",function(){return t.callEvent("onColumnResize",arguments)}),e.attachEvent("onColumnResizeEnd",function(){return t.callEvent("onColumnResizeEnd",arguments)}),e.attachEvent("onColumnResizeComplete",function(e,n){t.config.grid_width=n}),e.attachEvent("onBeforeRowResize",function(){return t.callEvent("onBeforeRowResize",arguments)}),e.attachEvent("onRowResize",function(){return t.callEvent("onRowResize",arguments)}),e.attachEvent("onBeforeRowResizeEnd",function(){return t.callEvent("onBeforeRowResizeEnd",arguments)}),e.attachEvent("onAfterRowResize",function(){return t.callEvent("onAfterRowResize",arguments)})}}};t.exports=o},function(t,e,n){var i=n(30),r=n(6);t.exports=function(t){return{render:function(e,n,i){var r=n.$getConfig(),a=document.createElement("div");return a.className="gantt_task_grid_row_resize_wrap",a.style.top=n.getItemTop(e.id)+n.getItemHeight(e.id)+"px",a.innerHTML="<div class='gantt_task_grid_row_resize' role='cell'></div>",a.setAttribute(r.task_grid_row_resizer_attribute,e.id),t._waiAria.rowResizerAttr(a),a},update:null,getRectangle:i,getVisibleRange:r}}},function(t,e,n){var i=n(27),r=n(6),a=n(26),o=n(25),s=n(37);function l(t,e,n,i){var r=100*(1-(1*t||0)),a=i.posFromDate(e),o=i.posFromDate(n),s=document.createElement("div");return s.className="gantt_histogram_hor_bar",s.style.top=r+"%",s.style.left=a+"px",s.style.width=o-a+1+"px",s}function c(t,e,n){if(t===e)return null;var i=1-Math.max(t,e),r=Math.abs(t-e),a=document.createElement("div");return a.className="gantt_histogram_vert_bar",a.style.top=100*i+"%",a.style.height=100*r+"%",a.style.left=n+"px",a}t.exports=function(t){var e=s(t),n={},u={},d={};function h(t,e){var i=n[t];i&&i[e]&&i[e].parentNode&&i[e].parentNode.removeChild(i[e])}function f(e,n,i,r,o,s,u){var h=d[e.id];h&&h.parentNode&&h.parentNode.removeChild(h);var f=function(e,n,i,r){for(var o=n.getScale(),s=document.createElement("div"),u=a(o,r),d=u.start;d<=u.end;d++){var h=o.trace_x[d],f=o.trace_x[d+1]||t.date.add(h,o.step,o.unit),_=o.trace_x[d].valueOf(),g=Math.min(e[_]/i,1)||0;if(g<0)return null;var p=Math.min(e[f.valueOf()]/i,1)||0,v=l(g,h,f,n);v&&s.appendChild(v);var m=c(g,p,n.posFromDate(f));m&&s.appendChild(m)}return s}(i,o,s,u);return f&&n&&(f.setAttribute("data-resource-id",e.id),f.setAttribute(o.$config.item_attribute,e.id),f.style.position="absolute",f.style.top=n.top+1+"px",f.style.height=o.getItemHeight(e.id)-1+"px",f.style.left=0),f}function _(t,e,n,i,r,a,o){var s=r.histogram_cell_class(a.start_date,a.end_date,t,a.tasks,a.assignments),l=r.histogram_cell_label(a.start_date,a.end_date,t,a.tasks,a.assignments),c=r.histogram_cell_allocated(a.start_date,a.end_date,t,a.tasks,a.assignments),u=o.getItemHeight(t.id)-1;if(s||l){var d=document.createElement("div");return d.className=["gantt_histogram_cell",s].join(" "),d.setAttribute(o.$config.item_attribute,t.id),d.style.cssText=["left:"+e.left+"px","width:"+e.width+"px","height:"+u+"px","line-height:"+u+"px","top:"+(e.top+1)+"px"].join(";"),l&&(l="<div class='gantt_histogram_label'>"+l+"</div>"),c&&(l="<div class='gantt_histogram_fill' style='height:"+100*Math.min(c/n||0,1)+"%;'></div>"+l),l&&(d.innerHTML=l),d}return null}return{render:function(i,r,s,l){var c=r.$getTemplates(),h=r.getScale(),g=e(i,s.resource_property,h,r),p=[],v={},m=i.capacity||r.$config.capacity||24;n[i.id]={},u[i.id]=null,d[i.id]=null;for(var y=!!l,k=a(h,l),b=k.start;b<=k.end;b++){var x=g[b];if(x&&(!y||o(b,h,l,t))){var w=c.histogram_cell_capacity(x.start_date,x.end_date,i,x.tasks,x.assignments);v[x.start_date.valueOf()]=w||0;var S=r.getItemPosition(i,x.start_date,x.end_date),T=_(i,S,m,0,c,x,r);T&&(p.push(T),n[i.id][b]=T)}}var $=null;if(p.length){$=document.createElement("div");for(var C=0;C<p.length;C++)$.appendChild(p[C]);var E=f(i,S,v,0,r,m,l);E&&($.appendChild(E),d[i.id]=E),u[i.id]=$}return $},update:function(i,r,s,l,c){var u=s.$getTemplates(),g=s.getScale(),p=e(i,l.resource_property,g,s),v=i.capacity||s.$config.capacity||24,m={},y=!!c,k=a(g,c),b={};if(n&&n[i.id])for(var x in n[i.id])b[x]=x;for(var w=k.start;w<=k.end;w++){var S=p[w];if(b[w]=!1,S){var T=u.histogram_cell_capacity(S.start_date,S.end_date,i,S.tasks,S.assignments);m[S.start_date.valueOf()]=T||0;var $=s.getItemPosition(i,S.start_date,S.end_date);if(!y||o(w,g,c,t)){var C=n[i.id];if(C&&C[w])C&&C[w]&&!C[w].parentNode&&r.appendChild(C[w]);else{var E=_(i,$,v,0,u,S,s);E&&(r.appendChild(E),n[i.id][w]=E)}}else h(i.id,w)}}for(var x in b)!1!==b[x]&&h(i.id,x);var A=f(i,$,m,0,s,v,c);A&&(r.appendChild(A),d[i.id]=A)},getRectangle:i,getVisibleRange:r}}},function(t,e,n){var i=n(27),r=n(6),a=n(26),o=n(25),s=n(37);t.exports=function(t){var e=s(t),n={};function l(t,e,n,i,r){var a=n.resource_cell_class(e.start_date,e.end_date,t,e.tasks,e.assignments),o=n.resource_cell_value(e.start_date,e.end_date,t,e.tasks,e.assignments),s=r.getItemHeight(t.id)-1;if(a||o){var l=r.getItemPosition(t,e.start_date,e.end_date),c=document.createElement("div");return c.setAttribute(r.$config.item_attribute,t.id),c.className=["gantt_resource_marker",a].join(" "),c.style.cssText=["left:"+l.left+"px","width:"+l.width+"px","height:"+s+"px","line-height:"+s+"px","top:"+l.top+"px"].join(";"),o&&(c.innerHTML=o),c}return null}function c(t,e){n[t]&&n[t][e]&&n[t][e].parentNode&&n[t][e].parentNode.removeChild(n[t][e])}return{render:function(i,r,s,c){var u=r.$getTemplates(),d=r.getScale(),h=e(i,s.resource_property,r.getScale(),r),f=!!c,_=[];n[i.id]={};for(var g=a(d,c),p=g.start;p<=g.end;p++){var v=h[p];if(v&&(!f||o(p,d,c,t))){var m=l(i,v,u,0,r);m&&(_.push(m),n[i.id][p]=m)}}var y=null;if(_.length){y=document.createElement("div");for(var k=0;k<_.length;k++)y.appendChild(_[k])}return y},update:function(i,r,s,u,d){var h=s.$getTemplates(),f=s.getScale(),_=e(i,u.resource_property,s.getScale(),s),g=a(f,d),p={};if(n&&n[i.id])for(var v in n[i.id])p[v]=v;for(var m=g.start;m<=g.end;m++){var y=_[m];if(p[m]=!1,y)if(o(m,f,d,t))if(n[i.id]&&n[i.id][m])n[i.id]&&n[i.id][m]&&!n[i.id][m].parentNode&&r.appendChild(n[i.id][m]);else{var k=l(i,y,h,0,s);k&&(r.appendChild(k),n[i.id][m]=k)}else c(i.id,m)}for(var v in p)!1!==p[v]&&c(i.id,v)},getRectangle:i,getVisibleRange:r}}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(2),a=n(30),o=n(6);t.exports=function(t){return{render:function(e,n,i,a){for(var o=n.getGridColumns(),s=n.$getTemplates(),l=n.$config.rowStore,c=[],u=0;u<o.length;u++){var d,h,f,_=u==o.length-1,g=o[u];"add"==g.name?(h="<div "+(b=t._waiAria.gridAddButtonAttrString(g))+" class='gantt_add'></div>",f=""):(h=g.template?g.template(e):e[g.name],r.isDate(h)&&(h=s.date_grid(h,e,g.name)),null!==h&&void 0!==h||(h=""),f=h,h="<div class='gantt_tree_content'>"+h+"</div>");var p="gantt_cell"+(_?" gantt_last_cell":""),v=[];if(g.tree){p+=" gantt_cell_tree";for(var m=0;m<e.$level;m++)v.push(s.grid_indent(e));!l.hasChild(e.id)||t.isSplitTask(e)&&!t.config.open_split_tasks?(v.push(s.grid_blank(e)),v.push(s.grid_file(e))):(v.push(s.grid_open(e)),v.push(s.grid_folder(e)))}var y="width:"+(g.width-(_?1:0))+"px;";if(this.defined(g.align)){var k={right:"flex-end",left:"flex-start",center:"center"}[g.align];y+="text-align:"+g.align+";justify-content:"+k+";"}var b=t._waiAria.gridCellAttrString(g,f,e);v.push(h),d="<div class='"+p+"' data-column-index='"+u+"' data-column-name='"+g.name+"' style='"+y+"' "+b+">"+v.join("")+"</div>",c.push(d)}switch(p="",l.$config.name){case"task":p=t.getGlobalTaskIndex(e.id)%2==0?"":" odd";break;case"resource":p=l.visibleOrder.indexOf(e.id)%2==0?"":" odd"}if(p+=e.$transparent?" gantt_transparent":"",p+=e.$dataprocessor_class?" "+e.$dataprocessor_class:"",s.grid_row_class){var x=s.grid_row_class.call(t,e.start_date,e.end_date,e);x&&(p+=" "+x)}l.isSelected(e.id)&&(p+=" gantt_selected");var w=document.createElement("div");w.className="gantt_row"+p+" gantt_row_"+t.getTaskType(e.type);var S=n.getItemHeight(e.id);return w.style.height=S+"px",w.style.lineHeight=S+"px",i.smart_rendering&&(w.style.position="absolute",w.style.left="0px",w.style.top=n.getItemTop(e.id)+"px"),n.$config.item_attribute&&(w.setAttribute(n.$config.item_attribute,e.id),w.setAttribute(n.$config.bind+"_id",e.id)),t._waiAria.taskRowAttr(e,w),w.innerHTML=c.join(""),w},update:null,getRectangle:a,getVisibleRange:o,onrender:function(e,n,r){for(var a=r.getGridColumns(),o=0;o<a.length;o++){var s=a[o];if(s.onrender){var l=n.querySelector("[data-column-name="+s.name+"]");if(l){var c=s.onrender(e,l);if(c&&"string"==typeof c)l.innerHTML=c;else if(c&&"object"===i(c)&&t.config.external_render){var u=t.config.external_render;u.isElement(c)&&u.renderElement(c,l)}}}}}}}},function(t,e,n){var i=n(39),r=n(40);t.exports=function(t){var e={current_pos:null,dirs:{left:"left",right:"right",up:"up",down:"down"},path:[],clear:function(){this.current_pos=null,this.path=[]},point:function(e){this.current_pos=t.copy(e)},get_lines:function(t){this.clear(),this.point(t[0]);for(var e=1;e<t.length;e++)this.line_to(t[e]);return this.get_path()},line_to:function(e){var n=t.copy(e),i=this.current_pos,r=this._get_line(i,n);this.path.push(r),this.current_pos=n},get_path:function(){return this.path},get_wrapper_sizes:function(t,e,n){var i,r=e.$getConfig().link_wrapper_width,a=t.y-r/2;switch(t.direction){case this.dirs.left:i={top:a,height:r,lineHeight:r,left:t.x-t.size-r/2,width:t.size+r};break;case this.dirs.right:i={top:a,lineHeight:r,height:r,left:t.x-r/2,width:t.size+r};break;case this.dirs.up:i={top:a-t.size,lineHeight:t.size+r,height:t.size+r,left:t.x-r/2,width:r};break;case this.dirs.down:i={top:a,lineHeight:t.size+r,height:t.size+r,left:t.x-r/2,width:r}}return i},get_line_sizes:function(t,e){var n,i=e.$getConfig(),r=i.link_line_width,a=i.link_wrapper_width,o=t.size+r;switch(t.direction){case this.dirs.left:case this.dirs.right:n={height:r,width:o,marginTop:(a-r)/2,marginLeft:(a-r)/2};break;case this.dirs.up:case this.dirs.down:n={height:o,width:r,marginTop:(a-r)/2,marginLeft:(a-r)/2}}return n},render_line:function(t,e,n,i){var r=this.get_wrapper_sizes(t,n,i),a=document.createElement("div");a.style.cssText=["top:"+r.top+"px","left:"+r.left+"px","height:"+r.height+"px","width:"+r.width+"px"].join(";"),a.className="gantt_line_wrapper";var o=this.get_line_sizes(t,n),s=document.createElement("div");return s.style.cssText=["height:"+o.height+"px","width:"+o.width+"px","margin-top:"+o.marginTop+"px","margin-left:"+o.marginLeft+"px"].join(";"),s.className="gantt_link_line_"+t.direction,a.appendChild(s),a},_get_line:function(t,e){var n=this.get_direction(t,e),i={x:t.x,y:t.y,direction:this.get_direction(t,e)};return n==this.dirs.left||n==this.dirs.right?i.size=Math.abs(t.x-e.x):i.size=Math.abs(t.y-e.y),i},get_direction:function(t,e){return e.x<t.x?this.dirs.left:e.x>t.x?this.dirs.right:e.y>t.y?this.dirs.down:this.dirs.up}},n={path:[],clear:function(){this.path=[]},current:function(){return this.path[this.path.length-1]},point:function(e){return e?(this.path.push(t.copy(e)),e):this.current()},point_to:function(n,i,r){r=r?{x:r.x,y:r.y}:t.copy(this.point());var a=e.dirs;switch(n){case a.left:r.x-=i;break;case a.right:r.x+=i;break;case a.up:r.y-=i;break;case a.down:r.y+=i}return this.point(r)},get_points:function(n,i,r,a){var o=this.get_endpoint(n,i,r,a),s=t.config,l=o.e_y-o.y,c=o.e_x-o.x,u=e.dirs,d=i.getItemHeight(n.source);this.clear(),this.point({x:o.x,y:o.y});var h=2*s.link_arrow_size,f=this.get_line_type(n,i.$getConfig()),_=o.e_x>o.x;if(f.from_start&&f.to_start)this.point_to(u.left,h),_?(this.point_to(u.down,l),this.point_to(u.right,c)):(this.point_to(u.right,c),this.point_to(u.down,l)),this.point_to(u.right,h);else if(!f.from_start&&f.to_start)if(_=o.e_x>o.x+2*h,this.point_to(u.right,h),_)c-=h,this.point_to(u.down,l),this.point_to(u.right,c);else{c-=2*h;var g=l>0?1:-1;this.point_to(u.down,g*(d/2)),this.point_to(u.right,c),this.point_to(u.down,g*(Math.abs(l)-d/2)),this.point_to(u.right,h)}else f.from_start||f.to_start?f.from_start&&!f.to_start&&(_=o.e_x>o.x-2*h,this.point_to(u.left,h),_?(c+=2*h,g=l>0?1:-1,this.point_to(u.down,g*(d/2)),this.point_to(u.right,c),this.point_to(u.down,g*(Math.abs(l)-d/2)),this.point_to(u.left,h)):(c+=h,this.point_to(u.down,l),this.point_to(u.right,c))):(this.point_to(u.right,h),_?(this.point_to(u.right,c),this.point_to(u.down,l)):(this.point_to(u.down,l),this.point_to(u.right,c)),this.point_to(u.left,h));return this.path},get_line_type:function(e,n){var i=n.links,r=!1,a=!1;return e.type==i.start_to_start?r=a=!0:e.type==i.finish_to_finish?r=a=!1:e.type==i.finish_to_start?(r=!1,a=!0):e.type==i.start_to_finish?(r=!0,a=!1):t.assert(!1,"Invalid link type"),n.rtl&&(r=!r,a=!a),{from_start:r,to_start:a}},get_endpoint:function(t,e,n,i){var r=e.$getConfig(),o=this.get_line_type(t,r),s=o.from_start,l=o.to_start,c=a(n,e,r),u=a(i,e,r);return{x:s?c.left:c.left+c.width,e_x:l?u.left:u.left+u.width,y:c.top+c.rowHeight/2-1,e_y:u.top+u.rowHeight/2-1}}};function a(e,n,i){var r=n.getItemPosition(e);if(t.getTaskType(e.type)==i.types.milestone){var a=n.getBarHeight(e.id,!0),o=Math.sqrt(2*a*a);r.left-=o/2,r.width=o}return r}return{render:function(i,r,a){var o=t.getTask(i.source);if(!o.hide_bar){var s=t.getTask(i.target);if(!s.hide_bar){var l=n.get_endpoint(i,r,o,s),c=l.e_y-l.y;if(!(l.e_x-l.x||c))return null;var u=n.get_points(i,r,o,s),d=e.get_lines(u,r),h=document.createElement("div"),f="gantt_task_link";i.color&&(f+=" gantt_link_inline_color");var _=t.templates.link_class?t.templates.link_class(i):"";_&&(f+=" "+_),a.highlight_critical_path&&t.isCriticalLink&&t.isCriticalLink(i)&&(f+=" gantt_critical_link"),h.className=f,r.$config.link_attribute&&(h.setAttribute(r.$config.link_attribute,i.id),h.setAttribute("link_id",i.id));for(var g=0;g<d.length;g++){g==d.length-1&&(d[g].size-=a.link_arrow_size);var p=e.render_line(d[g],d[g+1],r,i.source);i.color&&(p.firstChild.style.backgroundColor=i.color),h.appendChild(p)}var v=d[d.length-1].direction,m=function(t,n,i,r){var a=i.$getConfig(),o=document.createElement("div"),s=t.y,l=t.x,c=a.link_arrow_size,u="gantt_link_arrow gantt_link_arrow_"+n;switch(n){case e.dirs.right:s-=c/2,l-=c;break;case e.dirs.left:s-=c/2;break;case e.dirs.up:l-=c;break;case e.dirs.down:s+=2*c,l-=c}return o.style.cssText=["top:"+s+"px","left:"+l+"px"].join(";"),o.className=u,o}(u[u.length-1],v,r,i.source);return i.color&&(m.style.borderColor=i.color),h.appendChild(m),t._waiAria.linkAttr(i,h),h}}},update:null,isInViewPort:i,getVisibleRange:r()}}},function(t,e){t.exports=function(t,e){var n=e.config.timeline_placeholder;if(t=t||[],n&&0===t.filter(function(t){return"timeline_placeholder_task"===t.id}).length){var i=e.getState(),r=null,a=i.min_date,o=i.max_date;t.length&&(r=t[t.length-1].id);var s={start_date:a,end_date:o,row_height:n.height||0,id:"timeline_placeholder_task",unscheduled:!0,lastTaskId:r,calendar_id:n.calendar||"global",$source:[],$target:[]};t.push(s)}}},function(t,e,n){var i=n(27),r=n(20),a=n(6),o=n(26),s=n(25),l=n(111);t.exports=function(t){var e={},n={};function c(t,n){return!(!e[t.id][n]||!e[t.id][n].parentNode)}function u(t,n){e[t]&&e[t][n]&&e[t][n].parentNode&&e[t][n].parentNode.removeChild(e[t][n])}function d(t){var e,n=t.$getTemplates();return void 0!==n.task_cell_class?(e=n.task_cell_class,(console.warn||console.log)("gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.")):e=n.timeline_cell_class,e}function h(t){return t.$getTemplates().timeline_cell_content}function f(i,r,a,o,l,c,u,d){var h=i.width[r],f="";if(s(r,i,o,t)){var _=c(a,i.trace_x[r]),g="";if(u&&(g=u(a,i.trace_x[r])),d.static_background){var p=!(!_&&!g);if(!d.static_background_cells||!p)return null}if(e[a.id][r])return n[a.id][r]=r,e[a.id][r];var v=document.createElement("div");return v.style.width=h+"px",f="gantt_task_cell"+(r==l-1?" gantt_last_cell":""),_&&(f+=" "+_),v.className=f,g&&(v.innerHTML=g),v.style.position="absolute",v.style.left=i.left[r]+"px",e[a.id][r]=v,n[a.id][r]=r,v}return null}return{render:function(i,a,s,l){var c=a.$getTemplates(),u=a.getScale(),_=u.count;if(s.static_background&&!s.static_background_cells)return null;var g,p=document.createElement("div"),v=d(a),m=h(a);if(g=l&&s.smart_rendering&&!r(t)?o(u,l.x):{start:0,end:_-1},s.show_task_cells){e[i.id]={},n[i.id]={};for(var y=g.start;y<=g.end;y++){var k=f(u,y,i,l,_,v,m,s);k&&p.appendChild(k)}}var b=a.$config.rowStore,x=b.getIndexById(i.id)%2!=0,w=c.task_row_class(i.start_date,i.end_date,i),S="gantt_task_row"+(x?" odd":"")+(w?" "+w:"");if(b.isSelected(i.id)&&(S+=" gantt_selected"),p.className=S,s.smart_rendering?(p.style.position="absolute",p.style.top=a.getItemTop(i.id)+"px",p.style.width="100%"):p.style.position="relative",p.style.height=a.getItemHeight(i.id)+"px","timeline_placeholder_task"==i.id){var T=0;i.lastTaskId&&(T=a.getItemTop(i.lastTaskId)+a.getItemHeight(i.lastTaskId));var $=(i.row_height||a.$task_data.offsetHeight)-T;$<0&&($=0),s.smart_rendering&&(p.style.top=T+"px"),p.style.height=$+"px"}return a.$config.item_attribute&&(p.setAttribute(a.$config.item_attribute,i.id),p.setAttribute(a.$config.bind+"_id",i.id)),p},update:function(t,i,r,a,s){var l=r.getScale(),_=l.count,g=d(r),p=h(r);if(a.show_task_cells){e[t.id]||(e[t.id]={}),n[t.id]||(n[t.id]={});var v=o(l,s);for(var m in n[t.id]){var y=n[t.id][m];(Number(y)<v.start||Number(y)>v.end)&&u(t.id,y)}n[t.id]={};for(var k=v.start;k<=v.end;k++){var b=f(l,k,t,s,_,g,p,a);!b&&c(t,k)?u(t.id,k):b&&!b.parentNode&&i.appendChild(b)}}},getRectangle:i,getVisibleRange:a,prepareData:l}}},function(t,e,n){var i=n(28),r=n(19),a=n(6);t.exports=function(t){var e=i(t),n={};function o(t,e,n,i,a){var o=!0;return i.smart_rendering&&(o=r(t,e,n,i,a)),o}function s(n,i,r,a){var o=t.copy(t.getTask(i.id));if(o.$rendered_at=n.id,!1!==t.callEvent("onBeforeRollupTaskDisplay",[o.id,o,n.id])){var s=e(o,r);if(s){var l=r.getBarHeight(n.id,i.type==t.config.types.milestone),c=Math.floor((r.getItemHeight(n.id)-l)/2);return s.style.top=a.top+c+"px",s.classList.add("gantt_rollup_child"),s.setAttribute("data-rollup-parent-id",n.id),s}}}function l(t,e){return t+"_"+e}return{render:function(e,i,r,a){if(!1!==e.rollup&&e.$rollup&&e.$rollup.length){var c=document.createElement("div"),u=t.getTaskPosition(e);return a.y=0,a.y_end=t.$task_bg.scrollHeight,e.$rollup.forEach(function(d){if(t.isTaskExists(d)){var h=t.getTask(d);if(o(h,a,i,r,t)){var f=s(e,h,i,u);f?(n[l(h.id,e.id)]=f,c.appendChild(f)):n[l(h.id,e.id)]=!1}}}),c}return!1},update:function(e,i,r,a,c){var u=document.createElement("div"),d=t.getTaskPosition(e);c.y=0,c.y_end=t.$task_bg.scrollHeight,e.$rollup.forEach(function(h){var f=t.getTask(h),_=l(f.id,e.id),g=o(f,c,r,a,t);if(g!==!!n[_])if(g){var p=s(e,f,r,d);n[_]=p||!1}else n[_]=!1;n[_]&&u.appendChild(n[_]),i.innerHTML="",i.appendChild(u)})},isInViewPort:r,getVisibleRange:a}}},function(t,e,n){var i=n(19);t.exports=function(t,e,n,r,a){if(!a.isSplitTask(t))return!1;var o=a.getSubtaskDates(t.id);return i({id:t.id,start_date:o.start_date,end_date:o.end_date,parent:t.parent},e,n,a)}},function(t,e,n){var i=n(28),r=n(6),a=n(114),o=n(19);t.exports=function(t){var e=i(t),n={};function s(t,e,n,i,r){var a=!t.hide_bar;return i.smart_rendering&&a&&(a=o(t,e,n,i,r)),a}function l(n,i,r,a){if(!i.hide_bar){var o=t.isSummaryTask(i);o&&t.resetProjectDates(i);var s=t.copy(t.getTask(i.id));if(s.$rendered_at=n.id,!1!==t.callEvent("onBeforeSplitTaskDisplay",[s.id,s,n.id])){var l=e(s,r);if(l){var c=r.getBarHeight(n.id,i.type==t.config.types.milestone),u=Math.floor((r.getItemHeight(n.id)-c)/2);return l.style.top=a.top+u+"px",l.classList.add("gantt_split_child"),o&&l.classList.add("gantt_split_subproject"),l}}}}function c(t,e){return t+"_"+e}function u(e,n){return t.isSplitTask(e)&&(n.open_split_tasks&&!e.$open||!n.open_split_tasks)&&t.hasChild(e.id)}return{render:function(e,i,r,a){if(u(e,r)){var o=document.createElement("div"),d=t.getTaskPosition(e);return t.hasChild(e.id)&&t.eachTask(function(u){if(s(u,a,i,r,t)){var h=l(e,u,i,d);h?(n[c(u.id,e.id)]=h,o.appendChild(h)):n[c(u.id,e.id)]=!1}},e.id),o}return!1},update:function(e,i,r,a,o){if(u(e,a)){var d=document.createElement("div"),h=t.getTaskPosition(e);t.eachTask(function(u){var f=c(u.id,e.id),_=s(u,o,r,a,t);if(_!==!!n[f])if(_){var g=l(e,u,r,h);n[f]=g||!1}else n[f]=!1;n[f]&&d.appendChild(n[f]),i.innerHTML="",i.appendChild(d)},e.id)}},isInViewPort:a,getVisibleRange:r}}},function(t,e,n){var i=n(19),r=n(6),a=n(28);t.exports=function(t){return{render:a(t),update:null,isInViewPort:i,getVisibleRange:r}}},function(t,e){t.exports=function(t){return function(n,i,r){"keepDates"==r?function(e,n){"duration"==n?e.end_date=t.calculateEndDate(e):"end_date"!=n&&"start_date"!=n||(e.duration=t.calculateDuration(e))}(n,i):"keepDuration"==r?function(n,i){"end_date"==i?n.start_date=e(n):"start_date"!=i&&"duration"!=i||(n.end_date=t.calculateEndDate(n))}(n,i):function(n,i){t.config.schedule_from_end?"end_date"==i||"duration"==i?n.start_date=e(n):"start_date"==i&&(n.duration=t.calculateDuration(n)):"start_date"==i||"duration"==i?n.end_date=t.calculateEndDate(n):"end_date"==i&&(n.duration=t.calculateDuration(n))}(n,i)};function e(e){return t.calculateEndDate({start_date:e.end_date,duration:-e.duration,task:e})}}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}function a(e){return e.formatter||t.ext.formatters.durationFormatter()}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r="<div role='cell'><input type='text' name='".concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=r},set_value:function(t,e,n,i){this.get_input(i).value=a(n.editor).format(t)},get_value:function(t,e,n){return a(e.editor).parse(this.get_input(n).value||"")}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}function a(e){return e.formatter||t.ext.formatters.linkFormatter()}function o(t,e){for(var n=(t||"").split(e.delimiter||","),i=0;i<n.length;i++){var r=n[i].trim();r?n[i]=r:(n.splice(i,1),i--)}return n.sort(),n}function s(t,e,n){for(var i=t.$target,r=[],o=0;o<i.length;o++){var s=n.getLink(i[o]);r.push(a(e).format(s))}return r.join((e.delimiter||",")+" ")}function l(t){return t.source+"_"+t.target+"_"+t.type+"_"+(t.lag||0)}function c(e,n,i){var r=function(e,n,i){var r=[];return n.forEach(function(n){var o=a(i).parse(n);o&&(o.target=e,o.id="predecessor_generated",t.isLinkAllowed(o)&&(o.id=void 0,r.push(o)))}),r}(e.id,n,i),o={};e.$target.forEach(function(e){var n=t.getLink(e);o[l(n)]=n.id});var s=[];r.forEach(function(t){var e=l(t);o[e]?delete o[e]:s.push(t)});var c=[];for(var u in o)c.push(o[u]);return{add:s,remove:c}}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r="<div role='cell'><input type='text' name='".concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=r},hide:function(){},set_value:function(e,n,i,r){this.get_input(r).value=s(e,i.editor,t)},get_value:function(t,e,n){return o(this.get_input(n).value||"",e.editor)},save:function(e,n,i){var r=c(t.getTask(e),this.get_value(e,n,i),n.editor);(r.add.length||r.remove.length)&&t.batchUpdate(function(){r.add.forEach(function(e){t.addLink(e)}),r.remove.forEach(function(e){t.deleteLink(e)}),t.autoSchedule&&t.autoSchedule()})},is_changed:function(e,n,i,r){var a=this.get_value(n,i,r),l=o(s(e,i.editor,t),i.editor);return a.join()!==l.join()}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0),r="%Y-%m-%d",a=null,o=null;function s(){return e.apply(this,arguments)||this}return n(3)(s,e),i.mixin(s.prototype,{show:function(e,n,i,s){a||(a=t.date.date_to_str(r)),o||(o=t.date.str_to_date(r));var l=null,c=null;l="function"==typeof i.min?i.min(e,n):i.min,c="function"==typeof i.max?i.max(e,n):i.max;var u=l?" min='"+a(l)+"' ":"",d=c?" max='"+a(c)+"' ":"",h="<div style='width:140px' role='cell'><input type='date' ".concat(u," ").concat(d," name='").concat(n.name,"' title='").concat(n.name,"'></div>");s.innerHTML=h},set_value:function(t,e,n,i){t&&t.getFullYear?this.get_input(i).value=a(t):this.get_input(i).value=t},is_valid:function(t,e,n,i){return!(!t||isNaN(t.getTime()))},get_value:function(t,e,n){var i;try{i=o(this.get_input(n).value||"")}catch(t){i=null}return i}},!0),s}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){for(var r="<div role='cell'><select name='".concat(e.name,"' title='").concat(e.name,"'>"),a=[],o=n.options||[],s=0;s<o.length;s++)a.push("<option value='"+n.options[s].key+"'>"+o[s].label+"</option>");r+=a.join("")+"</select></div>",i.innerHTML=r},get_input:function(t){return t.querySelector("select")}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r=n.min||0,a=n.max||100,o="<div role='cell'><input type='number' min='".concat(r,"' max='").concat(a,"' name='").concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=o},get_value:function(t,e,n){return this.get_input(n).value||""},is_valid:function(t,e,n,i){return!isNaN(parseInt(t,10))}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r="<div role='cell'><input type='text' name='".concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=r}},!0),r}},function(t,e){t.exports={init:function(t,e){var n=t,i=e.$gantt,r=null,a=i.ext.keyboardNavigation;a.attachEvent("onBeforeFocus",function(e){var i=t.locateCell(e);if(clearTimeout(r),i){var a=i.columnName,o=i.id,s=n.getState();if(n.isVisible()&&s.id==o&&s.columnName===a)return!1}return!0}),a.attachEvent("onFocus",function(e){var i=t.locateCell(e),a=t.getState();return clearTimeout(r),!i||i.id==a.id&&i.columnName==a.columnName||n.isVisible()&&n.save(),!0}),t.attachEvent("onHide",function(){clearTimeout(r)}),a.attachEvent("onBlur",function(){return r=setTimeout(function(){n.save()}),!0}),i.attachEvent("onTaskDblClick",function(e,n){var i=t.getState(),r=t.locateCell(n.target);return!r||!t.isVisible()||r.columnName!=i.columnName}),i.attachEvent("onTaskClick",function(e,n){if(i._is_icon_open_click(n))return!0;var r=t.getState(),a=t.locateCell(n.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),i.attachEvent("onEmptyClick",function(){return n.save(),!0}),a.attachEvent("onKeyDown",function(e,r){var o=t.locateCell(r.target),s=!!o&&t.getEditorConfig(o.columnName),l=t.getState(),c=i.constants.KEY_CODES,u=r.keyCode,d=!1;switch(u){case c.ENTER:t.isVisible()?(t.save(),r.preventDefault(),d=!0):s&&!(r.ctrlKey||r.metaKey||r.shiftKey)&&(n.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.ESC:t.isVisible()&&(t.hide(),r.preventDefault(),d=!0);break;case c.UP:case c.DOWN:break;case c.LEFT:case c.RIGHT:(s&&t.isVisible()||"date"===l.editorType)&&(d=!0);break;case c.SPACE:t.isVisible()&&(d=!0),s&&!t.isVisible()&&(n.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.DELETE:s&&!t.isVisible()?(n.startEdit(o.id,o.columnName),d=!0):s&&t.isVisible()&&(d=!0);break;case c.TAB:if(t.isVisible()){r.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);var h=t.getState();h.id&&a.focus({type:"taskCell",id:h.id,column:h.columnName}),r.preventDefault(),d=!0}break;default:if(t.isVisible())d=!0;else if(u>=48&&u<=57||u>95&&u<112||u>=64&&u<=91||u>185&&u<193||u>218&&u<223){var f=e.modifiers,_=f.alt||f.ctrl||f.meta||f.shift;f.alt||_&&a.getCommandHandler(e,"taskCell")||s&&!t.isVisible()&&(n.startEdit(o.id,o.columnName),d=!0)}}return!d})},onShow:function(t,e,n){},onHide:function(t,e,n){n.$gantt.focus()},destroy:function(){}}},function(t,e){t.exports={init:function(t,e){var n=e.$gantt;n.attachEvent("onTaskClick",function(e,i){if(n._is_icon_open_click(i))return!0;var r=t.getState(),a=t.locateCell(i.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),n.attachEvent("onEmptyClick",function(){return t.isVisible()&&t.isChanged()?t.save():t.hide(),!0}),n.attachEvent("onTaskDblClick",function(e,n){var i=t.getState(),r=t.locateCell(n.target);return!r||!t.isVisible()||r.columnName!=i.columnName})},onShow:function(t,e,n){var i=n.$gantt;i.ext&&i.ext.keyboardNavigation&&i.ext.keyboardNavigation.attachEvent("onKeyDown",function(e,n){var r=i.constants.KEY_CODES,a=!1;switch(n.keyCode){case r.SPACE:t.isVisible()&&(a=!0)}return!a});e.onkeydown=function(e){e=e||window.event;var n=i.constants.KEY_CODES;if(!(e.defaultPrevented||e.shiftKey&&e.keyCode!=n.TAB)){var r=!0;switch(e.keyCode){case i.keys.edit_save:t.save();break;case i.keys.edit_cancel:t.hide();break;case n.UP:case n.DOWN:t.isVisible()&&(t.hide(),r=!1);break;case n.TAB:e.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);break;default:r=!1}r&&e.preventDefault()}}},onHide:function(){},destroy:function(){}}},function(t,e,n){var i=n(125),r=n(124);t.exports=function(t){var e=null;return{setMapping:function(t){e=t},getMapping:function(){return e||(t.config.keyboard_navigation_cells&&t.ext.keyboardNavigation?r:i)}}}},function(t,e,n){var i=n(126),r=n(123),a=n(122),o=n(121),s=n(120),l=n(119),c=n(118),u=n(0),d=n(1),h=n(5),f=n(117);function _(t){t.config.editor_types={text:new(r(t)),number:new(a(t)),select:new(o(t)),date:new(s(t)),predecessor:new(l(t)),duration:new(c(t))}}t.exports=function(t){var e=i(t),n={};h(n);var r={init:_,createEditors:function(i){function r(e,n){var r=i.$getConfig(),a=function(t,e){for(var n=i.$getConfig(),r=i.getItemTop(t),a=i.getItemHeight(t),o=i.getGridColumns(),s=0,l=0,c=0,u=0;u<o.length;u++){if(o[u].name==e){c=o[u].width;break}n.rtl?l+=o[u].width:s+=o[u].width}return n.rtl?{top:r,right:l,height:a,width:c}:{top:r,left:s,height:a,width:c}}(e,n),o=document.createElement("div");o.className="gantt_grid_editor_placeholder",o.setAttribute(i.$config.item_attribute,e),o.setAttribute(i.$config.bind+"_id",e),o.setAttribute("data-column-name",n);var s=function(t,e){for(var n=t.getGridColumns(),i=0;i<n.length;i++)if(n[i].name==e)return i;return 0}(i,n);return o.setAttribute("data-column-index",s),t._waiAria.inlineEditorAttr(o),r.rtl?o.style.cssText=["top:"+a.top+"px","right:"+a.right+"px","width:"+a.width+"px","height:"+a.height+"px"].join(";"):o.style.cssText=["top:"+a.top+"px","left:"+a.left+"px","width:"+a.width+"px","height:"+a.height+"px"].join(";"),o}var a=f(t),o=[],s=[],l=null,c={_itemId:null,_columnName:null,_editor:null,_editorType:null,_placeholder:null,locateCell:function(t){if(!d.isChildOf(t,i.$grid))return null;var e=d.locateAttribute(t,i.$config.item_attribute),n=d.locateAttribute(t,"data-column-name");if(e&&n){var r=n.getAttribute("data-column-name");return{id:e.getAttribute(i.$config.item_attribute),columnName:r}}return null},getEditorConfig:function(t){return i.getColumn(t).editor},init:function(){var n=e.getMapping();n.init&&n.init(this,i),l=i.$gantt.getDatastore(i.$config.bind);var r=this;o.push(l.attachEvent("onIdChange",function(t,e){r._itemId==t&&(r._itemId=e)})),o.push(l.attachEvent("onStoreUpdated",function(){i.$gantt.getState("batchUpdate").batch_update||r.isVisible()&&!l.isVisible(r._itemId)&&r.hide()})),s.push(t.attachEvent("onDataRender",function(){r._editor&&r._placeholder&&!d.isChildOf(r._placeholder,t.$root)&&i.$grid_data.appendChild(r._placeholder)})),this.init=function(){}},getState:function(){return{editor:this._editor,editorType:this._editorType,placeholder:this._placeholder,id:this._itemId,columnName:this._columnName}},startEdit:function(e,n){if(this.isVisible()&&this.save(),l.exists(e)){var i={id:e,columnName:n};t.isReadonly(l.getItem(e))?this.callEvent("onEditPrevent",[i]):!1!==this.callEvent("onBeforeEditStart",[i])?(this.show(i.id,i.columnName),this.setValue(),this.callEvent("onEditStart",[i])):this.callEvent("onEditPrevent",[i])}},isVisible:function(){return!(!this._editor||!d.isChildOf(this._placeholder,t.$root))},show:function(t,n){this.isVisible()&&this.save();var a={id:t,columnName:n},o=i.getColumn(a.columnName),s=this.getEditorConfig(o.name);if(s){var l=i.$getConfig().editor_types[s.type],c=r(a.id,a.columnName);i.$grid_data.appendChild(c),l.show(a.id,o,s,c),this._editor=l,this._placeholder=c,this._itemId=a.id,this._columnName=a.columnName,this._editorType=s.type;var u=e.getMapping();u.onShow&&u.onShow(this,c,i)}},setValue:function(){var t=this.getState(),e=t.id,n=t.columnName,r=i.getColumn(n),a=l.getItem(e),o=this.getEditorConfig(n);if(o){var s=a[o.map_to];"auto"==o.map_to&&(s=l.getItem(e)),this._editor.set_value(s,e,r,this._placeholder),this.focus()}},focus:function(){this._editor.focus(this._placeholder)},getValue:function(){var t=i.getColumn(this._columnName);return this._editor.get_value(this._itemId,t,this._placeholder)},_getItemValue:function(){var e=this.getEditorConfig(this._columnName);if(e){var n=t.getTask(this._itemId)[e.map_to];return"auto"==e.map_to&&(n=l.getItem(this._itemId)),n}},isChanged:function(){var t=i.getColumn(this._columnName),e=this._getItemValue();return this._editor.is_changed(e,this._itemId,t,this._placeholder)},hide:function(){if(this._itemId){var t=this._itemId,n=this._columnName,r=e.getMapping();r.onHide&&r.onHide(this,this._placeholder,i),this._itemId=null,this._columnName=null,this._editorType=null,this._placeholder&&(this._editor&&this._editor.hide&&this._editor.hide(this._placeholder),this._editor=null,this._placeholder.parentNode&&this._placeholder.parentNode.removeChild(this._placeholder),this._placeholder=null,this.callEvent("onEditEnd",[{id:t,columnName:n}]))}},save:function(){if(this.isVisible()&&l.exists(this._itemId)&&this.isChanged()){var e=this._itemId,n=this._columnName;if(l.exists(e)){var r=l.getItem(e),o=this.getEditorConfig(n),s={id:e,columnName:n,newValue:this.getValue(),oldValue:this._getItemValue()};if(!1!==this.callEvent("onBeforeSave",[s])&&(!this._editor.is_valid||this._editor.is_valid(s.newValue,s.id,i.getColumn(n),this._placeholder))){var c=o.map_to,u=s.newValue;"auto"!=c?(r[c]=u,a(r,c,t.config.inline_editors_date_processing),l.updateItem(e)):this._editor.save(e,i.getColumn(n),this._placeholder),this.callEvent("onSave",[s])}this.hide()}}else this.hide()},_findEditableCell:function(t,e){var n=t,r=i.getGridColumns()[n],a=r?r.name:null;if(a){for(;a&&!this.getEditorConfig(a);)a=this._findEditableCell(t+e,e);return a}return null},getNextCell:function(t){return this._findEditableCell(i.getColumnIndex(this._columnName,!0)+t,t)},getFirstCell:function(){return this._findEditableCell(0,1)},getLastCell:function(){return this._findEditableCell(i.getGridColumns().length-1,-1)},editNextCell:function(t){var e=this.getNextCell(1);if(e){var n=this.getNextCell(1);n&&this.getEditorConfig(n)&&this.startEdit(this._itemId,n)}else if(t&&this.moveRow(1)){var i=this.moveRow(1);(e=this.getFirstCell())&&this.getEditorConfig(e)&&this.startEdit(i,e)}},editPrevCell:function(t){var e=this.getNextCell(-1);if(e){var n=this.getNextCell(-1);n&&this.getEditorConfig(n)&&this.startEdit(this._itemId,n)}else if(t&&this.moveRow(-1)){var i=this.moveRow(-1);(e=this.getLastCell())&&this.getEditorConfig(e)&&this.startEdit(i,e)}},moveRow:function(e){for(var n=e>0?t.getNext:t.getPrev,i=(n=t.bind(n,t))(this._itemId);t.isTaskExists(i)&&t.isReadonly(t.getTask(i));)i=n(i);return i},editNextRow:function(e){var n=this.getState().id;if(t.isTaskExists(n)){var i=null;i=e?this.moveRow(1):t.getNext(n),t.isTaskExists(i)&&this.startEdit(i,this._columnName)}},editPrevRow:function(e){var n=this.getState().id;if(t.isTaskExists(n)){var i=null;i=e?this.moveRow(-1):t.getPrev(n),t.isTaskExists(i)&&this.startEdit(i,this._columnName)}},destructor:function(){o.forEach(function(t){l.detachEvent(t)}),s.forEach(function(e){t.detachEvent(e)}),o=[],s=[],l=null,this.hide(),this.detachAllEvents()}};return u.mixin(c,e),u.mixin(c,n),c}};return u.mixin(r,e),u.mixin(r,n),r}},function(t,e){t.exports={create:function(){return{render:function(){},destroy:function(){}}}}},function(t,e,n){var i=n(3),r=n(1),a=n(0),o=n(11),s=function(t){"use strict";var e=["altKey","shiftKey","metaKey"];function n(e,n,i,r){var o=t.apply(this,arguments)||this;this.$config=a.mixin(n,{scroll:"x"}),o._scrollHorizontalHandler=a.bind(o._scrollHorizontalHandler,o),o._scrollVerticalHandler=a.bind(o._scrollVerticalHandler,o),o._outerScrollVerticalHandler=a.bind(o._outerScrollVerticalHandler,o),o._outerScrollHorizontalHandler=a.bind(o._outerScrollHorizontalHandler,o),o._mouseWheelHandler=a.bind(o._mouseWheelHandler,o),this.$config.hidden=!0;var s=r.config.scroll_size;return r.env.isIE&&(s+=1),this._isHorizontal()?(o.$config.height=s,o.$parent.$config.height=s):(o.$config.width=s,o.$parent.$config.width=s),this.$config.scrollPosition=0,o.$name="scroller",o}return i(n,t),n.prototype.init=function(t){t.innerHTML=this.$toHTML(),this.$view=t.firstChild,this.$view||this.init(),this._isVertical()?this._initVertical():this._initHorizontal(),this._initMouseWheel(),this._initLinkedViews()},n.prototype.$toHTML=function(){return"<div class='gantt_layout_cell "+(this._isHorizontal()?"gantt_hor_scroll":"gantt_ver_scroll")+"'><div style='"+(this._isHorizontal()?"width:2000px":"height:2000px")+"'></div></div>"},n.prototype._getRootParent=function(){for(var t=this.$parent;t&&t.$parent;)t=t.$parent;if(t)return t},n.prototype._eachView=function(){var t=[];return function t(e,n){if(n.push(e),e.$cells)for(var i=0;i<e.$cells.length;i++)t(e.$cells[i],n)}(this._getRootParent(),t),t},n.prototype._getLinkedViews=function(){for(var t=this._eachView(),e=[],n=0;n<t.length;n++)t[n].$config&&(this._isVertical()&&t[n].$config.scrollY==this.$id||this._isHorizontal()&&t[n].$config.scrollX==this.$id)&&e.push(t[n]);return e},n.prototype._initHorizontal=function(){this.$scroll_hor=this.$view,this.$domEvents.attach(this.$view,"scroll",this._scrollHorizontalHandler)},n.prototype._initLinkedViews=function(){for(var t=this._getLinkedViews(),e=this._isVertical()?"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical":"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal",n=0;n<t.length;n++)r.addClassName(t[n].$view||t[n].getNode(),e)},n.prototype._initVertical=function(){this.$scroll_ver=this.$view,this.$domEvents.attach(this.$view,"scroll",this._scrollVerticalHandler)},n.prototype._updateLinkedViews=function(){},n.prototype._initMouseWheel=function(){o.isFF?this.$domEvents.attach(this._getRootParent().$view,"wheel",this._mouseWheelHandler,{passive:!1}):this.$domEvents.attach(this._getRootParent().$view,"mousewheel",this._mouseWheelHandler,{passive:!1})},n.prototype.scrollHorizontally=function(t){if(!this._scrolling){this._scrolling=!0,this.$scroll_hor.scrollLeft=t,this.$config.codeScrollLeft=t,t=this.$scroll_hor.scrollLeft;for(var e=this._getLinkedViews(),n=0;n<e.length;n++)e[n].scrollTo&&e[n].scrollTo(t,void 0);var i=this.$config.scrollPosition;this.$config.scrollPosition=t,this.callEvent("onScroll",[i,t,this.$config.scroll]),this._scrolling=!1}},n.prototype.scrollVertically=function(t){if(!this._scrolling){this._scrolling=!0,this.$scroll_ver.scrollTop=t,t=this.$scroll_ver.scrollTop;for(var e=this._getLinkedViews(),n=0;n<e.length;n++)e[n].scrollTo&&e[n].scrollTo(void 0,t);var i=this.$config.scrollPosition;this.$config.scrollPosition=t,this.callEvent("onScroll",[i,t,this.$config.scroll]),this._scrolling=!1}},n.prototype._isVertical=function(){return"y"==this.$config.scroll},n.prototype._isHorizontal=function(){return"x"==this.$config.scroll},n.prototype._scrollHorizontalHandler=function(t){if(!this._isVertical()&&!this._scrolling){if(new Date-(this._wheel_time||0)<100)return!0;var e=this.$scroll_hor.scrollLeft;this.scrollHorizontally(e),this._oldLeft=this.$scroll_hor.scrollLeft}},n.prototype._outerScrollHorizontalHandler=function(t){this._isVertical()},n.prototype.show=function(){this.$parent.show()},n.prototype.hide=function(){this.$parent.hide()},n.prototype._getScrollSize=function(){for(var t,e=0,n=0,i=this._isHorizontal(),r=this._getLinkedViews(),a=i?"scrollWidth":"scrollHeight",o=i?"contentX":"contentY",s=i?"x":"y",l=this._getScrollOffset(),c=0;c<r.length;c++)if((t=r[c])&&t.$content&&t.$content.getSize&&!t.$config.hidden){var u,d=t.$content.getSize();if(u=d.hasOwnProperty(a)?d[a]:d[o],l)d[o]>d[s]&&d[o]>e&&u>d[s]-l+2&&(e=u+(i?0:2),n=d[s]);else{var h=Math.max(d[o]-u,0);(u+=h)>Math.max(d[s]-h,0)&&u>e&&(e=u,n=d[s])}}return{outerScroll:n,innerScroll:e}},n.prototype.scroll=function(t){this._isHorizontal()?this.scrollHorizontally(t):this.scrollVertically(t)},n.prototype.getScrollState=function(){return{visible:this.isVisible(),direction:this.$config.scroll,size:this.$config.outerSize,scrollSize:this.$config.scrollSize||0,position:this.$config.scrollPosition||0}},n.prototype.setSize=function(e,n){t.prototype.setSize.apply(this,arguments);var i=this._getScrollSize(),r=(this._isVertical()?n:e)-this._getScrollOffset()+(this._isHorizontal()?1:0);i.innerScroll&&r>i.outerScroll&&(i.innerScroll+=r-i.outerScroll),this.$config.scrollSize=i.innerScroll,this.$config.width=e,this.$config.height=n,this._setScrollSize(i.innerScroll)},n.prototype.isVisible=function(){return!(!this.$parent||!this.$parent.$view.parentNode)},n.prototype.shouldShow=function(){var t=this._getScrollSize();return!(!t.innerScroll&&this.$parent&&this.$parent.$view.parentNode)&&!(!t.innerScroll||this.$parent&&this.$parent.$view.parentNode)},n.prototype.shouldHide=function(){return!(this._getScrollSize().innerScroll||!this.$parent||!this.$parent.$view.parentNode)},n.prototype.toggleVisibility=function(){this.shouldHide()?this.hide():this.shouldShow()&&this.show()},n.prototype._getScaleOffset=function(t){var e=0;return!t||"timeline"!=t.$config.view&&"grid"!=t.$config.view||(e=t.$content.$getConfig().scale_height),e},n.prototype._getScrollOffset=function(){var t=0;if(this._isVertical()){var e=this.$parent.$parent;t=Math.max(this._getScaleOffset(e.getPrevSibling(this.$parent.$id)),this._getScaleOffset(e.getNextSibling(this.$parent.$id)))}else for(var n=this._getLinkedViews(),i=0;i<n.length;i++){var r=n[i].$parent.$cells,a=r[r.length-1];if(a&&"scrollbar"==a.$config.view&&!1===a.$config.hidden){t=a.$config.width;break}}return t||0},n.prototype._setScrollSize=function(t){var e=this._isHorizontal()?"width":"height",n=this._isHorizontal()?this.$scroll_hor:this.$scroll_ver,i=this._getScrollOffset(),a=n.firstChild;i?this._isVertical()?(this.$config.outerSize=this.$config.height-i+3,n.style.height=this.$config.outerSize+"px",n.style.top=i-1+"px",r.addClassName(n,this.$parent._borders.top),r.addClassName(n.parentNode,"gantt_task_vscroll")):(this.$config.outerSize=this.$config.width-i+1,n.style.width=this.$config.outerSize+"px"):(n.style.top="auto",r.removeClassName(n,this.$parent._borders.top),r.removeClassName(n.parentNode,"gantt_task_vscroll"),this.$config.outerSize=this.$config.height),a.style[e]=t+"px"},n.prototype._scrollVerticalHandler=function(t){if(!this._scrollHorizontalHandler()&&!this._scrolling){var e=this.$scroll_ver.scrollTop;e!=this._oldTop&&(this.scrollVertically(e),this._oldTop=this.$scroll_ver.scrollTop)}},n.prototype._outerScrollVerticalHandler=function(t){this._scrollHorizontalHandler()},n.prototype._checkWheelTarget=function(t){for(var e=this._getLinkedViews().concat(this),n=0;n<e.length;n++){var i=e[n].$view;if(r.isChildOf(t,i))return!0}return!1},n.prototype._mouseWheelHandler=function(t){var n=t.target||t.srcElement;if(this._checkWheelTarget(n)){this._wheel_time=new Date;var i={},r={x:1,y:1},a=this.$gantt.config.wheel_scroll_sensitivity;"number"==typeof a&&a?r={x:a,y:a}:"[object Object]"=={}.toString.apply(a)&&(r={x:a.x,y:a.y});var s=o.isFF,l=s?t.deltaX:t.wheelDeltaX,c=s?t.deltaY:t.wheelDelta,u=-20;s&&(u=0!==t.deltaMode?-40:-10);var d=s?l*u*r.x:2*l*r.x,h=s?c*u*r.y:c*r.y,f=this.$gantt.config.horizontal_scroll_key;if(!1!==f&&e.indexOf(f)>=0&&(!t[f]||t.deltaX||t.wheelDeltaX||(d=2*h,h=0)),d&&Math.abs(d)>Math.abs(h)){if(this._isVertical())return;if(i.x)return!0;if(!this.$scroll_hor||!this.$scroll_hor.offsetWidth)return!0;var _=d/-40,g=this._oldLeft,p=g+30*_;if(this.scrollHorizontally(p),this.$scroll_hor.scrollLeft=p,g==this.$scroll_hor.scrollLeft)return!0;this._oldLeft=this.$scroll_hor.scrollLeft}else{if(this._isHorizontal())return;if(i.y)return!0;if(!this.$scroll_ver||!this.$scroll_ver.offsetHeight)return!0;_=h/-40;void 0===h&&(_=t.detail);var v=this._oldTop,m=this.$scroll_ver.scrollTop+30*_;if(this.scrollVertically(m),this.$scroll_ver.scrollTop=m,v==this.$scroll_ver.scrollTop)return!0;this._oldTop=this.$scroll_ver.scrollTop}return t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1}},n}(n(14));t.exports=s},function(t,e){t.exports=null},function(t,e,n){var i=n(3),r=n(0),a=function(t){"use strict";function e(e,n,i){var a=t.apply(this,arguments)||this;if(n.view){n.id&&(this.$id=r.uid());var o=r.copy(n);if(delete o.config,delete o.templates,this.$content=this.$factory.createView(n.view,this,o,this),!this.$content)return!1}return a.$name="viewCell",a}return i(e,t),e.prototype.destructor=function(){this.clear(),t.prototype.destructor.call(this)},e.prototype.clear=function(){if(this.$initialized=!1,this.$content){var e=this.$content.unload||this.$content.destructor;e&&e.call(this.$content)}t.prototype.clear.call(this)},e.prototype.scrollTo=function(e,n){this.$content&&this.$content.scrollTo?this.$content.scrollTo(e,n):t.prototype.scrollTo.call(this,e,n)},e.prototype._setContentSize=function(t,e){var n=this._getBorderSizes();if("number"==typeof t){var i=t+n.horizontal;this.$config.width=i}if("number"==typeof e){var r=e+n.vertical;this.$config.height=r}},e.prototype.setSize=function(e,n){if(t.prototype.setSize.call(this,e,n),!this.$preResize&&this.$content&&!this.$initialized){this.$initialized=!0;var i=this.$view.childNodes[0],r=this.$view.childNodes[1];r||(r=i),this.$content.init(r)}},e.prototype.setContentSize=function(){!this.$preResize&&this.$content&&this.$initialized&&this.$content.setSize(this.$lastSize.contentX,this.$lastSize.contentY)},e.prototype.getContentSize=function(){var e=t.prototype.getContentSize.call(this);if(this.$content&&this.$initialized){var n=this.$content.getSize();e.width=void 0===n.contentX?n.width:n.contentX,e.height=void 0===n.contentY?n.height:n.contentY}var i=this._getBorderSizes();return e.width+=i.horizontal,e.height+=i.vertical,e},e}(n(14));t.exports=a},function(t,e,n){var i=n(3),r=n(38),a=n(14),o=function(t){"use strict";function e(e,n,i){for(var r=t.apply(this,arguments)||this,a=0;a<r.$cells.length;a++)r.$cells[a].$config.hidden=0!==a;return r.$cell=r.$cells[0],r.$name="viewLayout",r}return i(e,t),e.prototype.cell=function(e){var n=t.prototype.cell.call(this,e);return n.$view||this.$fill(null,this),n},e.prototype.moveView=function(t){var e=this.$view;this.$cell&&(this.$cell.$config.hidden=!0,e.removeChild(this.$cell.$view)),this.$cell=t,e.appendChild(t.$view)},e.prototype.setSize=function(t,e){a.prototype.setSize.call(this,t,e)},e.prototype.setContentSize=function(){var t=this.$lastSize;this.$cell.setSize(t.contentX,t.contentY)},e.prototype.getSize=function(){var e=t.prototype.getSize.call(this);if(this.$cell){var n=this.$cell.getSize();if(this.$config.byMaxSize)for(var i=0;i<this.$cells.length;i++){var r=this.$cells[i].getSize();for(var a in n)n[a]=Math.max(n[a],r[a])}for(var o in e)e[o]=e[o]||n[o];e.gravity=Math.max(e.gravity,n.gravity)}return e},e}(r);t.exports=o},function(t,e){t.exports=function(t,e,n){if(!t.start_date||!t.end_date)return null;var i=e.posFromDate(t.start_date),r=e.posFromDate(t.end_date),a=Math.min(i,r)-200,o=Math.max(i,r)+200;return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:a,width:o-a}}},function(t,e,n){var i=n(133);t.exports=function(t,e,n,r){if(!r.isTaskExists(t.source))return null;if(!r.isTaskExists(t.target))return null;var a=i(r.getTask(t.source),e,r),o=i(r.getTask(t.target),e,r);if(!a||!o)return null;var s=Math.min(a.left,o.left)-100,l=Math.max(a.left+a.width,o.left+o.width)+100,c=Math.min(a.top,o.top)-100,u=Math.max(a.top+a.height,o.top+o.height)+100;return{top:c,height:u-c,bottom:u,left:s,width:l-s,right:l}}},function(t,e){t.exports=function(t,e){return!!e&&(!(e.left>t.x_end||e.left+e.width<t.x)&&!(e.top>t.y_end||e.top+e.height<t.y))}},function(t,e,n){var i=n(135),r=n(20),a=n(30),o=n(6);t.exports=function(t){var e={},n={};function s(e){var n=null;return"string"==typeof e.view?n=t.$ui.getView(e.view):e.view&&(n=e.view),n}function l(l,c,u){if(n[l])return n[l];c.renderer||t.assert(!1,"Invalid renderer call");var d=null,h=null,f=null,_=null,g=null;"function"==typeof c.renderer?(d=c.renderer,f=a):(d=c.renderer.render,h=c.renderer.update,_=c.renderer.onrender,c.renderer.isInViewPort?g=c.renderer.isInViewPort:f=c.renderer.getRectangle,f||null===f||(f=a));var p=c.filter;return u&&u.setAttribute(t.config.layer_attribute,!0),n[l]={render_item:function(e,n,a,o,l){if(n=n||u,!p||p(e)){var h=o||s(c),v=l||(h?h.$getConfig():null),m=a;!m&&v&&v.smart_rendering&&(m=h.getViewPort());var y=null;!r(t)&&(f||g)&&m?(g?g(e,m,h,v,t):i(m,f(e,h,v,t)))&&(y=d.call(t,e,h,v,m)):y=d.call(t,e,h,v,m),this.append(e,y,n);var k=11==n.nodeType;_&&!k&&y&&_.call(t,e,y,h)}else this.remove_item(e.id)},clear:function(t){this.rendered=e[l]={},c.append||this.clear_container(t)},clear_container:function(t){(t=t||u)&&(t.innerHTML="")},get_visible_range:function(e){var n,i,r=s(c),a=r?r.$getConfig():null;return a&&a.smart_rendering&&(n=r.getViewPort()),r&&n&&("function"==typeof c.renderer?i=o(t,r,a,e,n):c.renderer&&c.renderer.getVisibleRange&&(i=c.renderer.getVisibleRange(t,r,a,e,n))),i||(i={start:0,end:e.count()}),i},prepare_data:function(e){if(c.renderer&&c.renderer.prepareData)return c.renderer.prepareData(e,t,c)},render_items:function(e,n){n=n||u;var i=document.createDocumentFragment();this.clear(n);var r=null,a=s(c),o=a?a.$getConfig():null;o&&o.smart_rendering&&(r=a.getViewPort());for(var l=0,d=e.length;l<d;l++)this.render_item(e[l],i,r,a,o);n.appendChild(i,n);var h={};e.forEach(function(t){h[t.id]=t});var f={};if(_){var g={};for(var l in this.rendered)f[l]||(g[l]=this.rendered[l],_.call(t,h[l],this.rendered[l],a))}},update_items:function(e,n){var a=s(c),o=a?a.$getConfig():null;if(a&&a.$getConfig().smart_rendering&&!r(t)&&this.rendered&&(f||g)){n=n||u;var l=document.createDocumentFragment(),d=null;a&&(d=a.getViewPort());var p={};e.forEach(function(t){p[t.id]=t});var v={},m={};for(var y in this.rendered)m[y]=!0,v[y]=!0;for(var k={},b=(y=0,e.length);y<b;y++){var x=e[y],w=this.rendered[x.id];m[x.id]=!1,w&&w.parentNode?(g?g(x,d,a,o,t):i(d,f(x,a,o,t)))?(h&&h.call(t,x,w,a,o,d),this.restore(x,l)):m[x.id]=!0:(k[e[y].id]=!0,this.render_item(e[y],l,d,a,o))}for(var y in m)m[y]&&this.hide(y);if(l.childNodes.length&&n.appendChild(l,n),_){var S={};for(var y in this.rendered)v[y]&&!k[y]||(S[y]=this.rendered[y],_.call(t,p[y],this.rendered[y],a))}}},append:function(t,e,n){this.rendered&&(e?(this.rendered[t.id]&&this.rendered[t.id].parentNode?this.replace_item(t.id,e):n.appendChild(e),this.rendered[t.id]=e):this.rendered[t.id]&&this.remove_item(t.id))},replace_item:function(t,e){var n=this.rendered[t];n&&n.parentNode&&n.parentNode.replaceChild(e,n),this.rendered[t]=e},remove_item:function(t){this.hide(t),delete this.rendered[t]},hide:function(t){var e=this.rendered[t];e&&e.parentNode&&e.parentNode.removeChild(e)},restore:function(t,e){var n=this.rendered[t.id];n?n.parentNode||this.append(t,n,e||u):this.render_item(t,e||u)},change_id:function(t,e){this.rendered[e]=this.rendered[t],delete this.rendered[t]},rendered:e[l],node:u,destructor:function(){this.clear(),delete n[l],delete e[l]}},n[l]}return{getRenderer:l,clearRenderers:function(){for(var t in n)l(t).destructor()}}}},function(t,e,n){var i=n(136),r=n(0),a=n(1),o=n(20);function s(t){return t instanceof Array||(t=Array.prototype.slice.call(arguments,0)),function(e){for(var n=!0,i=0,r=t.length;i<r;i++){var a=t[i];a&&(n=n&&!1!==a(e.id,e))}return n}}t.exports=function(t){var e=i(t);return{createGroup:function(n,i,l,c){var u={tempCollection:[],renderers:{},container:n,filters:[],getLayers:function(){this._add();var t=[];for(var e in this.renderers)t.push(this.renderers[e]);return t},getLayer:function(t){return this.renderers[t]},_add:function(n){n&&(n.id=n.id||r.uid(),this.tempCollection.push(n));for(var o=this.container(),s=this.tempCollection,l=0;l<s.length;l++)if(n=s[l],this.container()||n&&n.container&&a.isChildOf(n.container,document.body)){var u=n.container,d=n.id,h=n.topmost;if(!u.parentNode)if(h)o.appendChild(u);else{var f=i?i():o.firstChild;f&&f.parentNode==o?o.insertBefore(u,f):o.appendChild(u)}this.renderers[d]=e.getRenderer(d,n,u),c&&c(n,t),this.tempCollection.splice(l,1),l--}},addLayer:function(e){if(e){"function"==typeof e&&(e={renderer:e}),void 0===e.filter?e.filter=s(l||[]):e.filter instanceof Array&&(e.filter.push(l),e.filter=s(e.filter)),e.container||(e.container=document.createElement("div"));var n=this;e.requestUpdate=function(){t.config.smart_rendering&&!o(t)&&n.renderers[e.id]&&n.onUpdateRequest(n.renderers[e.id])}}return this._add(e),e?e.id:void 0},onUpdateRequest:function(t){},eachLayer:function(t){for(var e in this.renderers)t(this.renderers[e])},removeLayer:function(t){this.renderers[t]&&(this.renderers[t].destructor(),delete this.renderers[t])},clear:function(){for(var t in this.renderers)this.renderers[t].destructor();this.renderers={}}};return t.attachEvent("onDestroy",function(){u.clear(),u=null}),u}}}},function(t,e,n){var i=n(137),r=n(6),a=n(40),o=n(39);function s(t,e){if(t.view){var n=t.view;"string"==typeof n&&(n=e.$ui.getView(n)),n&&n.attachEvent&&n.attachEvent("onScroll",function(){e.$services.getService("state").getState("batchUpdate").batch_update||n.$config.$skipSmartRenderOnScroll||t.requestUpdate&&t.requestUpdate()})}}t.exports=function(t){var e=i(t);return{getDataRender:function(e){return t.$services.getService("layer:"+e)||null},createDataRender:function(n){var i=n.name,r=n.defaultContainer,a=n.defaultContainerSibling,o=e.createGroup(r,a,function(t,e){if(!o.filters)return!0;for(var n=0;n<o.filters.length;n++)if(!1===o.filters[n](t,e))return!1},s);return t.$services.setService("layer:"+i,function(){return o}),t.attachEvent("onGanttReady",function(){o.addLayer()}),o},init:function(){var e=this.createDataRender({name:"task",defaultContainer:function(){return t.$task_data?t.$task_data:t.$ui.getView("timeline")?t.$ui.getView("timeline").$task_data:void 0},defaultContainerSibling:function(){return t.$task_links?t.$task_links:t.$ui.getView("timeline")?t.$ui.getView("timeline").$task_links:void 0},filter:function(t){}},t),n=this.createDataRender({name:"link",defaultContainer:function(){return t.$task_data?t.$task_data:t.$ui.getView("timeline")?t.$ui.getView("timeline").$task_data:void 0}},t);return{addTaskLayer:function(t){var n=r;return"function"==typeof t?t={renderer:{render:t,getVisibleRange:n}}:t.renderer&&!t.renderer.getVisibleRange&&(t.renderer.getVisibleRange=n),t.view="timeline",e.addLayer(t)},_getTaskLayers:function(){return e.getLayers()},removeTaskLayer:function(t){e.removeLayer(t)},_clearTaskLayers:function(){e.clear()},addLinkLayer:function(t){var e=a();return"function"==typeof t?t={renderer:{render:t,getVisibleRange:e}}:t.renderer&&!t.renderer.getVisibleRange&&(t.renderer.getVisibleRange=e),t.view="timeline",t&&t.renderer&&(t.renderer.getRectangle||t.renderer.isInViewPort||(t.renderer.isInViewPort=o)),n.addLayer(t)},_getLinkLayers:function(){return n.getLayers()},removeLinkLayer:function(t){n.removeLayer(t)},_clearLinkLayers:function(){n.clear()}}}}}},function(t,e,n){var i=function(t){return function(e){var n={click:{},doubleclick:{},contextMenu:{}};function i(t,e,i,r){n[t][e]||(n[t][e]=[]),n[t][e].push({handler:i,root:r})}function r(t){t=t||window.event;var i=e.locate(t),r=o(t,n.click),a=!0;if(null!==i?a=!e.checkEvent("onTaskClick")||e.callEvent("onTaskClick",[i,t]):e.callEvent("onEmptyClick",[t]),a){if(!s(r,t,i))return;switch(t.target.nodeName){case"SELECT":case"INPUT":return}i&&e.getTask(i)&&!e._multiselect&&e.config.select_task&&e.selectTask(i)}}function a(t){var n=(t=t||window.event).target||t.srcElement,i=e.locate(n),r=e.locate(n,e.config.link_attribute),a=!e.checkEvent("onContextMenu")||e.callEvent("onContextMenu",[i,r,t]);return a||(t.preventDefault?t.preventDefault():t.returnValue=!1),a}function o(e,n){for(var i=e.target||e.srcElement,r=[];i;){var a=t.getClassName(i);if(a){a=a.split(" ");for(var o=0;o<a.length;o++)if(a[o]&&n[a[o]])for(var s=n[a[o]],l=0;l<s.length;l++)s[l].root&&!t.isChildOf(i,s[l].root)||r.push(s[l].handler)}i=i.parentNode}return r}function s(t,n,i){for(var r=!0,a=0;a<t.length;a++){var o=t[a].call(e,n,i,n.target||n.srcElement);r=r&&!(void 0!==o&&!0!==o)}return r}function l(t){t=t||window.event;var i=e.locate(t),r=o(t,n.doubleclick),a=!e.checkEvent("onTaskDblClick")||null===i||e.callEvent("onTaskDblClick",[i,t]);if(a){if(!s(r,t,i))return;null!==i&&e.getTask(i)&&a&&e.config.details_on_dblclick&&!e.isReadonly(i)&&e.showLightbox(i)}}function c(t){if(e.checkEvent("onMouseMove")){var n=e.locate(t);e._last_move_event=t,e.callEvent("onMouseMove",[n,t])}}var u=e._createDomEventScope();function d(t){u.detachAll(),t&&(u.attach(t,"click",r),u.attach(t,"dblclick",l),u.attach(t,"mousemove",c),u.attach(t,"contextmenu",a))}return{reset:d,global:function(t,e,n){i(t,e,n,null)},delegate:i,detach:function(t,e,i,r){if(n[t]&&n[t][e]){for(var a=n[t],o=a[e],s=0;s<o.length;s++)o[s].root==r&&(o.splice(s,1),s--);o.length||delete a[e]}},callHandler:function(t,e,i,r){var a=n[t][e];if(a)for(var o=0;o<a.length;o++)(i||a[o].root)&&a[o].root!==i||a[o].handler.apply(this,r)},onDoubleClick:l,onMouseMove:c,onContextMenu:a,onClick:r,destructor:function(){d(),n=null,u=null}}}}(n(1));t.exports={init:i}},function(t,e,n){var i=n(0);function r(t,e){var n=this.$config[t];return n?(n.$extendedConfig||(n.$extendedConfig=!0,Object.setPrototypeOf(n,e)),n):e}t.exports=function(t,e){i.mixin(t,function(t){var e,n;return{$getConfig:function(){return e||(e=t?t.$getConfig():this.$gantt.config),this.$config.config?r.call(this,"config",e):e},$getTemplates:function(){return n||(n=t?t.$getTemplates():this.$gantt.templates),this.$config.templates?r.call(this,"templates",n):n}}}(e))}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(0),a=n(140);t.exports={createFactory:function(t){var e={};var n={};function o(o,s,l,c){var u=e[o];if(!u||!u.create)return!1;"resizer"!=o||l.mode||(c.$config.cols?l.mode="x":l.mode="y"),"viewcell"!=o||"scrollbar"!=l.view||l.scroll||(c.$config.cols?l.scroll="y":l.scroll="x"),(l=r.copy(l)).id||n[l.view]||(l.id=l.view),l.id&&!l.css&&(l.css=l.id+"_cell");var d=new u.create(s,l,this,t);return u.configure&&u.configure(d),a(d,c),d.$id||(d.$id=l.id||t.uid()),d.$parent||"object"!=i(s)||(d.$parent=s),d.$config||(d.$config=l),n[d.$id]&&(d.$id=t.uid()),n[d.$id]=d,d}return{initUI:function(t,e){var n="cell";return t.view?n="viewcell":t.resizer?n="resizer":t.rows||t.cols?n="layout":t.views&&(n="multiview"),o.call(this,n,null,t,e)},reset:function(){n={}},registerView:function(t,n,i){e[t]={create:n,configure:i}},createView:o,getView:function(t){return n[t]}}}}},function(t,e,n){var i=n(141),r=n(139),a=n(138),o=n(14),s=n(38),l=n(132),c=n(131),u=n(130),d=n(129),h=n(29),f=n(32),_=n(32),g=n(29),p=n(29),v=n(127),m=n(116),y=n(115),k=n(113),b=n(112),x=n(110),w=n(109),S=n(108),T=n(107),$=n(106),C=n(105),E=n(99),A=n(96);t.exports={init:function(t){function e(e,n){var i=n(t);i.onCreated&&i.onCreated(e),e.attachEvent("onReady",function(){i.onInitialized&&i.onInitialized(e)}),e.attachEvent("onDestroy",function(){i.onDestroyed&&i.onDestroyed(e)})}var n=i.createFactory(t);n.registerView("cell",o),n.registerView("resizer",u),n.registerView("scrollbar",d),n.registerView("layout",s,function(t){"main"===(t.$config?t.$config.id:null)&&e(t,A)}),n.registerView("viewcell",c),n.registerView("multiview",l),n.registerView("timeline",h,function(t){"timeline"!==(t.$config?t.$config.id:null)&&"task"!=t.$config.bind||e(t,E)}),n.registerView("grid",f,function(t){"grid"!==(t.$config?t.$config.id:null)&&"task"!=t.$config.bind||e(t,C)}),n.registerView("resourceGrid",_),n.registerView("resourceTimeline",g),n.registerView("resourceHistogram",p);var D=a(t),M=v(t);return t.ext.inlineEditors=M,t.ext._inlineEditors=M,M.init(t),{factory:n,mouseEvents:r.init(t),layersApi:D.init(),render:{gridLine:function(){return w(t)},taskBg:function(){return b(t)},taskBar:function(){return m(t)},taskRollupBar:function(){return k(t)},taskSplitBar:function(){return y(t)},link:function(){return x(t)},resourceRow:function(){return S(t)},resourceHistogram:function(){return T(t)},gridTaskRowResizer:function(){return $(t)}},layersService:{getDataRender:function(e){return D.getDataRender(e,t)},createDataRender:function(e){return D.createDataRender(e,t)}}}}}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(0),a=n(1);t.exports=function(t){var e="data-dhxbox",n=null;function o(t,e){var i=t.callback;y.hide(t.box),n=t.box=null,i&&i(e)}function s(t){if(n){var e=t.which||t.keyCode,i=!1;if(k.keyboard){if(13==e||32==e){var r=t.target||t.srcElement;a.getClassName(r).indexOf("gantt_popup_button")>-1&&r.click?r.click():(o(n,!0),i=!0)}27==e&&(o(n,!1),i=!0)}return i?(t.preventDefault&&t.preventDefault(),!(t.cancelBubble=!0)):void 0}}var l=a.getRootNode(t.$root)||document;function c(t){c.cover||(c.cover=document.createElement("div"),c.cover.onkeydown=s,c.cover.className="dhx_modal_cover",document.body.appendChild(c.cover)),c.cover.style.display=t?"inline-block":"none"}function u(e,n,i){return"<div "+t._waiAria.messageButtonAttrString(e)+" class='gantt_popup_button "+("gantt_"+n.toLowerCase().replace(/ /g,"_")+"_button")+"' data-result='"+i+"' result='"+i+"' ><div>"+e+"</div></div>"}function d(e){k.area||(k.area=document.createElement("div"),k.area.className="gantt_message_area",k.area.style[k.position]="5px",document.body.appendChild(k.area)),k.hide(e.id);var n=document.createElement("div");return n.innerHTML="<div>"+e.text+"</div>",n.className="gantt-info gantt-"+e.type,n.onclick=function(){k.hide(e.id),e=null},t._waiAria.messageInfoAttr(n),"bottom"==k.position&&k.area.firstChild?k.area.insertBefore(n,k.area.firstChild):k.area.appendChild(n),e.expire>0&&(k.timers[e.id]=window.setTimeout(function(){k&&k.hide(e.id)},e.expire)),k.pull[e.id]=n,n=null,e.id}function h(){for(var t=[].slice.apply(arguments,[0]),e=0;e<t.length;e++)if(t[e])return t[e]}function f(l,d,f){var _=l.tagName?l:function(s,l,c){var d=document.createElement("div"),f=r.uid();t._waiAria.messageModalAttr(d,f),d.className=" gantt_modal_box gantt-"+s.type,d.setAttribute(e,1);var _="";if(s.width&&(d.style.width=s.width),s.height&&(d.style.height=s.height),s.title&&(_+='<div class="gantt_popup_title">'+s.title+"</div>"),_+='<div class="gantt_popup_text" id="'+f+'"><span>'+(s.content?"":s.text)+'</span></div><div class="gantt_popup_controls">',l&&(_+=u(h(s.ok,t.locale.labels.message_ok,"OK"),"ok",!0)),c&&(_+=u(h(s.cancel,t.locale.labels.message_cancel,"Cancel"),"cancel",!1)),s.buttons)for(var g=0;g<s.buttons.length;g++){var p=s.buttons[g];"object"==i(p)?_+=u(p.label,p.css||"gantt_"+p.label.toLowerCase()+"_button",p.value||g):_+=u(p,p,g)}if(_+="</div>",d.innerHTML=_,s.content){var v=s.content;"string"==typeof v&&(v=document.getElementById(v)),"none"==v.style.display&&(v.style.display=""),d.childNodes[s.title?1:0].appendChild(v)}return d.onclick=function(t){var e=t.target||t.srcElement;if(e.className||(e=e.parentNode),a.closest(e,".gantt_popup_button")){var n=e.getAttribute("data-result");o(s,n="true"==n||"false"!=n&&n)}},s.box=d,(l||c)&&(n=s),d}(l,d,f);l.hidden||c(!0),document.body.appendChild(_);var g=Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-_.offsetWidth)/2)),p=Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-_.offsetHeight)/2));return"top"==l.position?_.style.top="-3px":_.style.top=p+"px",_.style.left=g+"px",_.onkeydown=s,y.focus(_),l.hidden&&y.hide(_),t.callEvent("onMessagePopup",[_]),_}function _(t){return f(t,!0,!1)}function g(t){return f(t,!0,!0)}function p(t){return f(t)}function v(t,e,n){return"object"!=i(t)&&("function"==typeof e&&(n=e,e=""),t={text:t,type:e,callback:n}),t}function m(t,e,n,a){return"object"!=i(t)&&(t={text:t,type:e,expire:n,id:a}),t.id=t.id||r.uid(),t.expire=t.expire||k.expire,t}t.event(l,"keydown",s,!0);var y=function(){var t=v.apply(this,arguments);return t.type=t.type||"alert",p(t)};y.hide=function(n){for(;n&&n.getAttribute&&!n.getAttribute(e);)n=n.parentNode;n&&(n.parentNode.removeChild(n),c(!1),t.callEvent("onAfterMessagePopup",[n]))},y.focus=function(t){setTimeout(function(){var e=a.getFocusableNodes(t);e.length&&e[0].focus&&e[0].focus()},1)};var k=function(t,e,n,i){switch((t=m.apply(this,arguments)).type=t.type||"info",t.type.split("-")[0]){case"alert":return _(t);case"confirm":return g(t);case"modalbox":return p(t);default:return d(t)}};k.seed=(new Date).valueOf(),k.uid=r.uid,k.expire=4e3,k.keyboard=!0,k.position="top",k.pull={},k.timers={},k.hideAll=function(){for(var t in k.pull)k.hide(t)},k.hide=function(t){var e=k.pull[t];e&&e.parentNode&&(window.setTimeout(function(){e.parentNode.removeChild(e),e=null},2e3),e.className+=" hidden",k.timers[t]&&window.clearTimeout(k.timers[t]),delete k.pull[t])};var b=[];return t.attachEvent("onMessagePopup",function(t){b.push(t)}),t.attachEvent("onAfterMessagePopup",function(t){for(var e=0;e<b.length;e++)b[e]===t&&(b.splice(e,1),e--)}),t.attachEvent("onDestroy",function(){c.cover&&c.cover.parentNode&&c.cover.parentNode.removeChild(c.cover);for(var t=0;t<b.length;t++)b[t].parentNode&&b[t].parentNode.removeChild(b[t]);b=null,k.area&&k.area.parentNode&&k.area.parentNode.removeChild(k.area),k=null}),{alert:function(){var t=v.apply(this,arguments);return t.type=t.type||"confirm",_(t)},confirm:function(){var t=v.apply(this,arguments);return t.type=t.type||"alert",g(t)},message:k,modalbox:y}}},function(t,e,n){t.exports=function(t){var e=n(0),i=n(11),r=n(15);if(!i.isNode){var a=n(1),o=n(2);t.utils={arrayFind:o.arrayFind,dom:a};var s=n(51)();t.event=s.attach,t.eventRemove=s.detach,t._eventRemoveAll=s.detachAll,t._createDomEventScope=s.extend,e.mixin(t,n(143)(t));var l=n(142).init(t);t.$ui=l.factory,t.$ui.layers=l.render,t.$mouseEvents=l.mouseEvents,t.$services.setService("mouseEvents",function(){return t.$mouseEvents}),t.mixin(t,l.layersApi),n(95)(t),t.$services.setService("layers",function(){return l.layersService});var c=n(94);t.mixin(t,c()),n(93)(t),n(92)(t),n(91)(t),n(90)(t),n(89)(t),n(88)(t),n(87)(t),n(86)(t),n(85)(t),n(80)(t),n(79)(t),n(69)(t),n(68)(t),t.locate=function(t){var e=a.getTargetNode(t);if(a.closest(e,".gantt_task_row"))return null;var n=arguments[1]||this.config.task_attribute,i=a.locateAttribute(e,n);return i?i.getAttribute(n):null},t._locate_css=function(t,e,n){return a.locateClassName(t,e,n)},t._locateHTML=function(t,e){return a.locateAttribute(t,e||this.config.task_attribute)}}t.attachEvent("onParse",function(){r(t)||t.attachEvent("onGanttRender",function(){if(t.config.initial_scroll){var e=t.getTaskByIndex(0),n=e?e.id:t.config.root_id;t.isTaskExists(n)&&t.$task&&t.utils.dom.isChildOf(t.$task,t.$container)&&t.showTask(n)}},{once:!0})}),t.attachEvent("onBeforeGanttReady",function(){this.config.scroll_size||(this.config.scroll_size=a.getScrollSize()||1),r(t)||(this._eventRemoveAll(),this.$mouseEvents.reset(),this.resetLightbox())}),t.attachEvent("onGanttReady",function(){!r(t)&&t.config.rtl&&t.$layout.getCellsByType("viewCell").forEach(function(e){var n=e.$config.scrollX;if(n){var i=t.$ui.getView(n);i&&i.scrollTo(i.$config.scrollSize,0)}})}),t.attachEvent("onGanttReady",function(){if(!r(t)){var e=t.plugins(),n={auto_scheduling:t.autoSchedule,click_drag:t.ext.clickDrag,critical_path:t.isCriticalTask,drag_timeline:t.ext.dragTimeline,export_api:t.exportToPDF,fullscreen:t.ext.fullscreen,grouping:t.groupBy,keyboard_navigation:t.ext.keyboardNavigation,marker:t.addMarker,multiselect:t.eachSelectedTask,overlay:t.ext.overlay,quick_info:t.templates.quick_info_content,tooltip:t.ext.tooltips,undo:t.undo};for(var i in n)n[i]&&!e[i]&&console.warn("You connected the '".concat(i,"' extension via an obsolete file. \nTo fix it, you need to remove the obsolete file and connect the extension via the plugins method: https://docs.dhtmlx.com/gantt/api__gantt_plugins.html"))}})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],month_short:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],day_full:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],day_short:["Нед","Пон","Вів","Сер","Чет","Птн","Суб"]},labels:{new_task:"Нове завдання",icon_save:"Зберегти",icon_cancel:"Відміна",icon_details:"Деталі",icon_edit:"Редагувати",icon_delete:"Вилучити",confirm_closing:"",confirm_deleting:"Подія вилучиться назавжди. Ви впевнені?",section_description:"Опис",section_time:"Часовий проміжок",section_type:"Тип",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Відміна",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],month_short:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],day_full:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],day_short:["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"]},labels:{new_task:"Yeni görev",icon_save:"Kaydet",icon_cancel:"İptal",icon_details:"Detaylar",icon_edit:"Düzenle",icon_delete:"Sil",confirm_closing:"",confirm_deleting:"Görev silinecek, emin misiniz?",section_description:"Açıklama",section_time:"Zaman Aralığı",section_type:"Tip",column_wbs:"WBS",column_text:"Görev Adı",column_start_date:"Başlangıç",column_duration:"Süre",column_add:"",link:"Bağlantı",confirm_link_deleting:"silinecek",link_start:" (başlangıç)",link_end:" (bitiş)",type_task:"Görev",type_project:"Proje",type_milestone:"Kilometretaşı",minutes:"Dakika",hours:"Saat",days:"Gün",weeks:"Hafta",months:"Ay",years:"Yıl",message_ok:"OK",message_cancel:"Ýptal",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],day_short:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},labels:{new_task:"Ny uppgift",icon_save:"Spara",icon_cancel:"Avbryt",icon_details:"Detajer",icon_edit:"Ändra",icon_delete:"Ta bort",confirm_closing:"",confirm_deleting:"Är du säker på att du vill ta bort händelsen permanent?",section_description:"Beskrivning",section_time:"Tid",section_type:"Typ",column_wbs:"WBS",column_text:"Uppgiftsnamn",column_start_date:"Starttid",column_duration:"Varaktighet",column_add:"",link:"Länk",confirm_link_deleting:"kommer tas bort",link_start:" (start)",link_end:" (slut)",type_task:"Uppgift",type_project:"Projekt",type_milestone:"Milstolpe",minutes:"Minuter",hours:"Timmar",days:"Dagar",weeks:"Veckor",months:"Månader",years:"År",message_ok:"OK",message_cancel:"Avbryt",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],month_short:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sept","Okt","Nov","Dec"],day_full:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],day_short:["Ne","Po","Ut","St","Št","Pi","So"]},labels:{new_task:"Nová úloha",icon_save:"Uložiť",icon_cancel:"Späť",icon_details:"Detail",icon_edit:"Edituj",icon_delete:"Zmazať",confirm_closing:"Vaše zmeny nebudú uložené. Skutočne?",confirm_deleting:"Udalosť bude natrvalo vymazaná. Skutočne?",section_description:"Poznámky",section_time:"Doba platnosti",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Späť",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],day_short:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"]},labels:{new_task:"Nova naloga",icon_save:"Shrani",icon_cancel:"Prekliči",icon_details:"Podrobnosti",icon_edit:"Uredi",icon_delete:"Izbriši",confirm_closing:"",confirm_deleting:"Dogodek bo izbrisan. Želite nadaljevati?",section_description:"Opis",section_time:"Časovni okvir",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Prekliči",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Январь","Февраль","Март","Апрель","Maй","Июнь","Июль","Август","Сентябрь","Oктябрь","Ноябрь","Декабрь"],month_short:["Янв","Фев","Maр","Aпр","Maй","Июн","Июл","Aвг","Сен","Окт","Ноя","Дек"],day_full:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],day_short:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"]},labels:{new_task:"Новое задание",icon_save:"Сохранить",icon_cancel:"Отменить",icon_details:"Детали",icon_edit:"Изменить",icon_delete:"Удалить",confirm_closing:"",confirm_deleting:"Событие будет удалено безвозвратно, продолжить?",section_description:"Описание",section_time:"Период времени",section_type:"Тип",column_wbs:"ИСР",column_text:"Задача",column_start_date:"Начало",column_duration:"Длительность",column_add:"",link:"Связь",confirm_link_deleting:"будет удалена",link_start:" (начало)",link_end:" (конец)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Минута",hours:"Час",days:"День",weeks:"Неделя",months:"Месяц",years:"Год",message_ok:"OK",message_cancel:"Отменить",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"начните вводить слово для фильтрации",resources_filter_label:"спрятать не установленные",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","November","December"],month_short:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],day_full:["Duminica","Luni","Marti","Miercuri","Joi","Vineri","Sambata"],day_short:["Du","Lu","Ma","Mi","Jo","Vi","Sa"]},labels:{new_task:"Sarcina noua",icon_save:"Salveaza",icon_cancel:"Anuleaza",icon_details:"Detalii",icon_edit:"Editeaza",icon_delete:"Sterge",confirm_closing:"Schimbarile nu vor fi salvate, esti sigur?",confirm_deleting:"Evenimentul va fi sters permanent, esti sigur?",section_description:"Descriere",section_time:"Interval",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Anuleaza",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],month_short:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],day_full:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],day_short:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},labels:{new_task:"Nova tarefa",icon_save:"Salvar",icon_cancel:"Cancelar",icon_details:"Detalhes",icon_edit:"Editar",icon_delete:"Excluir",confirm_closing:"",confirm_deleting:"As tarefas serão excluidas permanentemente, confirme?",section_description:"Descrição",section_time:"Período",section_type:"Tipo",column_wbs:"EAP",column_text:"Nome tarefa",column_start_date:"Data início",column_duration:"Duração",column_add:"",link:"Link",confirm_link_deleting:"Será excluído!",link_start:" (início)",link_end:" (fim)",type_task:"Task",type_project:"Projeto",type_milestone:"Marco",minutes:"Minutos",hours:"Horas",days:"Dias",weeks:"Semanas",months:"Meses",years:"Anos",message_ok:"OK",message_cancel:"Cancelar",section_constraint:"Restrição",constraint_type:"Tipo Restrição",constraint_date:"Data restrição",asap:"Mais breve possível",alap:"Mais tarde possível",snet:"Não começar antes de",snlt:"Não começar depois de",fnet:"Não terminar antes de",fnlt:"Não terminar depois de",mso:"Precisa começar em",mfo:"Precisa terminar em",resources_filter_placeholder:"Tipo de filtros",resources_filter_label:"Ocultar vazios",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],month_short:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Paź","Lis","Gru"],day_full:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],day_short:["Nie","Pon","Wto","Śro","Czw","Pią","Sob"]},labels:{new_task:"Nowe zadanie",icon_save:"Zapisz",icon_cancel:"Anuluj",icon_details:"Szczegóły",icon_edit:"Edytuj",icon_delete:"Usuń",confirm_closing:"",confirm_deleting:"Zdarzenie zostanie usunięte na zawsze, kontynuować?",section_description:"Opis",section_time:"Okres czasu",section_type:"Typ",column_wbs:"WBS",column_text:"Nazwa zadania",column_start_date:"Początek",column_duration:"Czas trwania",column_add:"",link:"Link",confirm_link_deleting:"zostanie usunięty",link_start:" (początek)",link_end:" (koniec)",type_task:"Zadanie",type_project:"Projekt",type_milestone:"Milestone",minutes:"Minuty",hours:"Godziny",days:"Dni",weeks:"Tydzień",months:"Miesiące",years:"Lata",message_ok:"OK",message_cancel:"Anuluj",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},labels:{new_task:"Ny oppgave",icon_save:"Lagre",icon_cancel:"Avbryt",icon_details:"Detaljer",icon_edit:"Endre",icon_delete:"Slett",confirm_closing:"Endringer blir ikke lagret, er du sikker?",confirm_deleting:"Oppføringen vil bli slettet, er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Avbryt",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],month_short:["Jan","Feb","mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],day_short:["Zo","Ma","Di","Wo","Do","Vr","Za"]},labels:{new_task:"Nieuwe taak",icon_save:"Opslaan",icon_cancel:"Annuleren",icon_details:"Details",icon_edit:"Bewerken",icon_delete:"Verwijderen",confirm_closing:"",confirm_deleting:"Item zal permanent worden verwijderd, doorgaan?",section_description:"Beschrijving",section_time:"Tijd periode",section_type:"Type",column_wbs:"WBS",column_text:"Taak omschrijving",column_start_date:"Startdatum",column_duration:"Duur",column_add:"",link:"Koppeling",confirm_link_deleting:"zal worden verwijderd",link_start:" (start)",link_end:" (eind)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"minuten",hours:"uren",days:"dagen",weeks:"weken",months:"maanden",years:"jaren",message_ok:"OK",message_cancel:"Annuleren",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Mon","Tir","Ons","Tor","Fre","Lør"]},labels:{new_task:"Ny oppgave",icon_save:"Lagre",icon_cancel:"Avbryt",icon_details:"Detaljer",icon_edit:"Rediger",icon_delete:"Slett",confirm_closing:"",confirm_deleting:"Hendelsen vil bli slettet permanent. Er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Avbryt",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t){var e=this;for(var n in this.addLocale=function(t,n){e._locales[t]=n},this.getLocale=function(t){return e._locales[t]},this._locales={},t)this._locales[n]=t[n]}}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],month_short:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],day_full:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],day_short:["일","월","화","수","목","금","토"]},labels:{new_task:"이름없는 작업",icon_save:"저장",icon_cancel:"취소",icon_details:"세부 사항",icon_edit:"수정",icon_delete:"삭제",confirm_closing:"",confirm_deleting:"작업을 삭제하시겠습니까?",section_description:"설명",section_time:"기간",section_type:"Type",column_wbs:"WBS",column_text:"작업명",column_start_date:"시작일",column_duration:"기간",column_add:"",link:"전제",confirm_link_deleting:"삭제 하시겠습니까?",link_start:" (start)",link_end:" (end)",type_task:"작업",type_project:"프로젝트",type_milestone:"마일스톤",minutes:"분",hours:"시간",days:"일",weeks:"주",months:"달",years:"년",message_ok:"OK",message_cancel:"취소",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],month_short:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day_full:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],day_short:["日","月","火","水","木","金","土"]},labels:{new_task:"新しい仕事",icon_save:"保存",icon_cancel:"キャンセル",icon_details:"詳細",icon_edit:"編集",icon_delete:"削除",confirm_closing:"",confirm_deleting:"イベント完全に削除されます、宜しいですか?",section_description:"デスクリプション",section_time:"期間",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"キャンセル",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],month_short:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],day_full:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],day_short:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},labels:{new_task:"Nuovo compito",icon_save:"Salva",icon_cancel:"Chiudi",icon_details:"Dettagli",icon_edit:"Modifica",icon_delete:"Elimina",confirm_closing:"",confirm_deleting:"Sei sicuro di confermare l'eliminazione?",section_description:"Descrizione",section_time:"Periodo di tempo",section_type:"Tipo",column_wbs:"WBS",column_text:"Nome Attività",column_start_date:"Inizio",column_duration:"Durata",column_add:"",link:"Link",confirm_link_deleting:"sarà eliminato",link_start:" (inizio)",link_end:" (fine)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minuti",hours:"Ore",days:"Giorni",weeks:"Settimane",months:"Mesi",years:"Anni",message_ok:"OK",message_cancel:"Chiudi",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],day_full:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],day_short:["Ming","Sen","Sel","Rab","Kam","Jum","Sab"]},labels:{new_task:"Tugas baru",icon_save:"Simpan",icon_cancel:"Batal",icon_details:"Detail",icon_edit:"Edit",icon_delete:"Hapus",confirm_closing:"",confirm_deleting:"Acara akan dihapus",section_description:"Keterangan",section_time:"Periode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Batal",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],month_short:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],day_full:["Vasárnap","Hétfõ","Kedd","Szerda","Csütörtök","Péntek","szombat"],day_short:["Va","Hé","Ke","Sze","Csü","Pé","Szo"]},labels:{new_task:"Új feladat",icon_save:"Mentés",icon_cancel:"Mégse",icon_details:"Részletek",icon_edit:"Szerkesztés",icon_delete:"Törlés",confirm_closing:"",confirm_deleting:"Az esemény törölve lesz, biztosan folytatja?",section_description:"Leírás",section_time:"Idõszak",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Mégse",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],month_short:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],day_full:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],day_short:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"]},labels:{new_task:"Novi Zadatak",icon_save:"Spremi",icon_cancel:"Odustani",icon_details:"Detalji",icon_edit:"Izmjeni",icon_delete:"Obriši",confirm_closing:"",confirm_deleting:"Zadatak će biti trajno izbrisan, jeste li sigurni?",section_description:"Opis",section_time:"Vremenski Period",section_type:"Tip",column_wbs:"WBS",column_text:"Naziv Zadatka",column_start_date:"Početno Vrijeme",column_duration:"Trajanje",column_add:"",link:"Poveznica",confirm_link_deleting:"će biti izbrisan",link_start:" (početak)",link_end:" (kraj)",type_task:"Zadatak",type_project:"Projekt",type_milestone:"Milestone",minutes:"Minute",hours:"Sati",days:"Dani",weeks:"Tjedni",months:"Mjeseci",years:"Godine",message_ok:"OK",message_cancel:"Odustani",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],month_short:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],day_full:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],day_short:["א","ב","ג","ד","ה","ו","ש"]},labels:{new_task:"משימה חדש",icon_save:"שמור",icon_cancel:"בטל",icon_details:"פרטים",icon_edit:"ערוך",icon_delete:"מחק",confirm_closing:"",confirm_deleting:"ארוע ימחק סופית.להמשיך?",section_description:"הסבר",section_time:"תקופה",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"בטל",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],month_short:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Aoû","Sep","Oct","Nov","Déc"],day_full:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],day_short:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},labels:{new_task:"Nouvelle tâche",icon_save:"Enregistrer",icon_cancel:"Annuler",icon_details:"Détails",icon_edit:"Modifier",icon_delete:"Effacer",confirm_closing:"",confirm_deleting:"L'événement sera effacé sans appel, êtes-vous sûr ?",section_description:"Description",section_time:"Période",section_type:"Type",column_wbs:"OTP",column_text:"Nom de la tâche",column_start_date:"Date initiale",column_duration:"Durée",column_add:"",link:"Le lien",confirm_link_deleting:"sera supprimé",link_start:"(début)",link_end:"(fin)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Heures",days:"Jours",weeks:"Semaines",months:"Mois",years:"Années",message_ok:"OK",message_cancel:"Annuler",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],month_short:["Tam","Hel","Maa","Huh","Tou","Kes","Hei","Elo","Syy","Lok","Mar","Jou"],day_full:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],day_short:["Su","Ma","Ti","Ke","To","Pe","La"]},labels:{new_task:"Uusi tehtävä",icon_save:"Tallenna",icon_cancel:"Peru",icon_details:"Tiedot",icon_edit:"Muokkaa",icon_delete:"Poista",confirm_closing:"",confirm_deleting:"Haluatko varmasti poistaa tapahtuman?",section_description:"Kuvaus",section_time:"Aikajakso",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Peru",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],month_short:["1","2","3","4","5","6","7","8","9","10","11","12"],day_full:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],day_short:["ی","د","س","چ","پ","ج","ش"]},labels:{new_task:"وظیفه جدید",icon_save:"ذخیره",icon_cancel:"لغو",icon_details:"جزییات",icon_edit:"ویرایش",icon_delete:"حذف",confirm_closing:"تغییرات شما ازدست خواهد رفت، آیا مطمئن هستید؟",confirm_deleting:"این مورد برای همیشه حذف خواهد شد، آیا مطمئن هستید؟",section_description:"توضیحات",section_time:"مدت زمان",section_type:"نوع",column_wbs:"WBS",column_text:"عنوان",column_start_date:"زمان شروع",column_duration:"مدت",column_add:"",link:"ارتباط",confirm_link_deleting:"حذف خواهد شد",link_start:" (آغاز)",link_end:" (پایان)",type_task:"وظیفه",type_project:"پروژه",type_milestone:"نگارش",minutes:"دقایق",hours:"ساعات",days:"روزها",weeks:"هفته",months:"ماهها",years:"سالها",message_ok:"تایید",message_cancel:"لغو",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],month_short:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],day_full:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],day_short:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"]},labels:{new_task:"Nueva tarea",icon_save:"Guardar",icon_cancel:"Cancelar",icon_details:"Detalles",icon_edit:"Editar",icon_delete:"Eliminar",confirm_closing:"",confirm_deleting:"El evento se borrará definitivamente, ¿continuar?",section_description:"Descripción",section_time:"Período",section_type:"Tipo",column_wbs:"EDT",column_text:"Tarea",column_start_date:"Inicio",column_duration:"Duración",column_add:"",link:"Enlace",confirm_link_deleting:"será borrada",link_start:" (inicio)",link_end:" (fin)",type_task:"Tarea",type_project:"Proyecto",type_milestone:"Hito",minutes:"Minutos",hours:"Horas",days:"Días",weeks:"Semanas",months:"Meses",years:"Años",message_ok:"OK",message_cancel:"Cancelar",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},labels:{new_task:"New task",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Task will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Cancel",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάϊος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],month_short:["ΙΑΝ","ΦΕΒ","ΜΑΡ","ΑΠΡ","ΜΑΙ","ΙΟΥΝ","ΙΟΥΛ","ΑΥΓ","ΣΕΠ","ΟΚΤ","ΝΟΕ","ΔΕΚ"],day_full:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Κυριακή"],day_short:["ΚΥ","ΔΕ","ΤΡ","ΤΕ","ΠΕ","ΠΑ","ΣΑ"]},labels:{new_task:"Νέα εργασία",icon_save:"Αποθήκευση",icon_cancel:"Άκυρο",icon_details:"Λεπτομέρειες",icon_edit:"Επεξεργασία",icon_delete:"Διαγραφή",confirm_closing:"",confirm_deleting:"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;",section_description:"Περιγραφή",section_time:"Χρονική περίοδος",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Άκυρο",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:[" Januar"," Februar"," März "," April"," Mai"," Juni"," Juli"," August"," September "," Oktober"," November "," Dezember"],month_short:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],day_full:["Sonntag","Montag","Dienstag"," Mittwoch"," Donnerstag","Freitag","Samstag"],day_short:["So","Mo","Di","Mi","Do","Fr","Sa"]},labels:{new_task:"Neue Aufgabe",icon_save:"Speichern",icon_cancel:"Abbrechen",icon_details:"Details",icon_edit:"Ändern",icon_delete:"Löschen",confirm_closing:"",confirm_deleting:"Der Eintrag wird gelöscht",section_description:"Beschreibung",section_time:"Zeitspanne",section_type:"Type",column_wbs:"PSP",column_text:"Task-Namen",column_start_date:"Startzeit",column_duration:"Dauer",column_add:"",link:"Link",confirm_link_deleting:"werden gelöscht",link_start:"(starten)",link_end:"(ende)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minuten",hours:"Stunden",days:"Tage",weeks:"Wochen",months:"Monate",years:"Jahre",message_ok:"OK",message_cancel:"Abbrechen",section_constraint:"Regel",constraint_type:"Regel",constraint_date:"Regel - Datum",asap:"So bald wie möglich",alap:"So spät wie möglich",snet:"Beginn nicht vor",snlt:"Beginn nicht später als",fnet:"Fertigstellung nicht vor",fnlt:"Fertigstellung nicht später als",mso:"Muss beginnen am",mfo:"Muss fertig sein am",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},labels:{new_task:"Ny opgave",icon_save:"Gem",icon_cancel:"Fortryd",icon_details:"Detaljer",icon_edit:"Tilret",icon_delete:"Slet",confirm_closing:"Dine rettelser vil gå tabt.. Er dy sikker?",confirm_deleting:"Bigivenheden vil blive slettet permanent. Er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Fortryd",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],month_short:["Led","Ún","Bře","Dub","Kvě","Čer","Čec","Srp","Září","Říj","List","Pro"],day_full:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],day_short:["Ne","Po","Út","St","Čt","Pá","So"]},labels:{new_task:"Nová práce",icon_save:"Uložit",icon_cancel:"Zpět",icon_details:"Detail",icon_edit:"Edituj",icon_delete:"Smazat",confirm_closing:"",confirm_deleting:"Událost bude trvale smazána, opravdu?",section_description:"Poznámky",section_time:"Doba platnosti",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Zpět",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],month_short:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day_full:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],day_short:["日","一","二","三","四","五","六"]},labels:{new_task:"新任務",icon_save:"保存",icon_cancel:"关闭",icon_details:"详细",icon_edit:"编辑",icon_delete:"删除",confirm_closing:"请确认是否撤销修改!",confirm_deleting:"是否删除日程?",section_description:"描述",section_time:"时间范围",section_type:"类型",column_wbs:"工作分解结构",column_text:"任务名",column_start_date:"开始时间",column_duration:"持续时间",column_add:"",link:"关联",confirm_link_deleting:"将被删除",link_start:" (开始)",link_end:" (结束)",type_task:"任务",type_project:"项目",type_milestone:"里程碑",minutes:"分钟",hours:"小时",days:"天",weeks:"周",months:"月",years:"年",message_ok:"OK",message_cancel:"关闭",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],month_short:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],day_full:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],day_short:["Dg","Dl","Dm","Dc","Dj","Dv","Ds"]},labels:{new_task:"Nova tasca",icon_save:"Guardar",icon_cancel:"Cancel·lar",icon_details:"Detalls",icon_edit:"Editar",icon_delete:"Esborrar",confirm_closing:"",confirm_deleting:"L'esdeveniment s'esborrarà definitivament, continuar ?",section_description:"Descripció",section_time:"Periode de temps",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Cancel·lar",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Студзень","Люты","Сакавік","Красавік","Maй","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],month_short:["Студз","Лют","Сак","Крас","Maй","Чэр","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],day_full:["Нядзеля","Панядзелак","Аўторак","Серада","Чацвер","Пятніца","Субота"],day_short:["Нд","Пн","Аўт","Ср","Чцв","Пт","Сб"]},labels:{new_task:"Новае заданне",icon_save:"Захаваць",icon_cancel:"Адмяніць",icon_details:"Дэталі",icon_edit:"Змяніць",icon_delete:"Выдаліць",confirm_closing:"",confirm_deleting:"Падзея будзе выдалена незваротна, працягнуць?",section_description:"Апісанне",section_time:"Перыяд часу",section_type:"Тып",column_wbs:"ІСР",column_text:"Задача",column_start_date:"Пачатак",column_duration:"Працяг",column_add:"",link:"Сувязь",confirm_link_deleting:"будзе выдалена",link_start:"(пачатак)",link_end:"(канец)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Хвiлiна",hours:"Гадзiна",days:"Дзень",weeks:"Тыдзень",months:"Месяц",years:"Год",message_ok:"OK",message_cancel:"Адмяніць",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],month_short:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],day_full:["الأحد","الأثنين","ألثلاثاء","الأربعاء","ألحميس","ألجمعة","السبت"],day_short:["احد","اثنين","ثلاثاء","اربعاء","خميس","جمعة","سبت"]},labels:{new_task:"مهمة جديد",icon_save:"اخزن",icon_cancel:"الغاء",icon_details:"تفاصيل",icon_edit:"تحرير",icon_delete:"حذف",confirm_closing:"التغييرات سوف تضيع, هل انت متأكد؟",confirm_deleting:"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟",section_description:"الوصف",section_time:"الفترة الزمنية",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"الغاء",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(177),r=n(176),a=n(175),o=n(174),s=n(173),l=n(172),c=n(171),u=n(170),d=n(169),h=n(168),f=n(167),_=n(166),g=n(165),p=n(164),v=n(163),m=n(162),y=n(161),k=n(160),b=n(159),x=n(158),w=n(157),S=n(156),T=n(155),$=n(154),C=n(153),E=n(152),A=n(151),D=n(150),M=n(149),I=n(148),P=n(147),N=n(146),O=n(145);e.default=function(){return new w.default({en:d.default,ar:i.default,be:r.default,ca:a.default,cn:o.default,cs:s.default,da:l.default,de:c.default,el:u.default,es:h.default,fa:f.default,fi:_.default,fr:g.default,he:p.default,hr:v.default,hu:m.default,id:y.default,it:k.default,jp:b.default,kr:x.default,nb:S.default,nl:T.default,no:$.default,pl:C.default,pt:E.default,ro:A.default,ru:D.default,si:M.default,sk:I.default,sv:P.default,tr:N.default,ua:O.default})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){}},function(t,e){t.exports=function(t){t.destructor=function(){for(var t in this.clearAll(),this.callEvent("onDestroy",[]),this.$root&&delete this.$root.gantt,this._eventRemoveAll&&this._eventRemoveAll(),this.$layout&&this.$layout.destructor(),this.resetLightbox&&this.resetLightbox(),this._dp&&this._dp.destructor&&this._dp.destructor(),this.$services.destructor(),this.detachAllEvents(),this)0===t.indexOf("$")&&delete this[t];this.$destroyed=!0}}},function(t,e){t.exports=function(t){return function(e,n){e||t.config.show_errors&&!1!==t.callEvent("onError",[n])&&(t.message?t.message({type:"error",text:n,expire:-1}):console.log(n))}}},function(t,e){function n(t,e){var n,i=t.config.container_resize_timeout||20;if("timeout"==t.config.container_resize_method)s();else try{t.event(e,"resize",function(){t.$scrollbarRepaint?t.$scrollbarRepaint=null:r()})}catch(t){s()}function r(){clearTimeout(n),n=setTimeout(function(){t.$destroyed||t.render()},i)}var a=t.$root.offsetHeight,o=t.$root.offsetWidth;function s(){t.$root.offsetHeight==a&&t.$root.offsetWidth==o||r(),a=t.$root.offsetHeight,o=t.$root.offsetWidth,setTimeout(s,i)}}t.exports=function(t){"static"==window.getComputedStyle(t.$root).getPropertyValue("position")&&(t.$root.style.position="relative");var e=document.createElement("iframe");e.className="gantt_container_resize_watcher",e.tabIndex=-1,t.config.wai_aria_attributes&&(e.setAttribute("role","none"),e.setAttribute("aria-hidden",!0)),(!!window.Sfdc||!!window.$A||window.Aura)&&(t.config.container_resize_method="timeout"),t.$root.appendChild(e),e.contentWindow?n(t,e.contentWindow):(t.$root.removeChild(e),n(t,window))}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(1),a=n(2),o=n(15),s=n(182);t.exports=function(t){var e=n(46);t.assert=n(181)(t);var l="Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).This error means that either invalid object is passed into `gantt.init` or that the element with the specified ID doesn't exist on the page when `gantt.init` is called.";function c(e){if(!e||"string"==typeof e&&document.getElementById(e))return!0;if(function(t){try{t.cloneNode(!1)}catch(t){return!1}return!0}(e))return!0;throw t.assert(!1,l),new Error(l)}t.init=function(e,n,i){t.env.isNode?e=null:c(e),n&&i&&(this.config.start_date=this._min_date=new Date(n),this.config.end_date=this._max_date=new Date(i)),this.date.init(),this.init=function(e){t.env.isNode?e=null:c(e),this.$container&&this.$container.parentNode&&(this.$container.parentNode.removeChild(this.$container),this.$container=null),this.$layout&&this.$layout.clear(),this._reinit(e)},this._reinit(e)},t._quickRefresh=function(t){for(var e=this._getDatastores.call(this),n=0;n<e.length;n++)e[n]._quick_refresh=!0;t();for(n=0;n<e.length;n++)e[n]._quick_refresh=!1};var u=function(){this._clearTaskLayers&&this._clearTaskLayers(),this._clearLinkLayers&&this._clearLinkLayers(),this.$layout&&(this.$layout.destructor(),this.$layout=null,this.$ui.reset())}.bind(t),d=function(){o(t)||(this.$root.innerHTML="",this.$root.gantt=this,e(this),this.config.layout.id="main",this.$layout=this.$ui.createView("layout",this.$root,this.config.layout),this.$layout.attachEvent("onBeforeResize",function(){for(var e=t.$services.getService("datastores"),n=0;n<e.length;n++)t.getDatastore(e[n]).filter(),t.$data.tasksStore._skipTaskRecalculation?"lightbox"!=t.$data.tasksStore._skipTaskRecalculation&&(t.$data.tasksStore._skipTaskRecalculation=!1):t.getDatastore(e[n]).callEvent("onBeforeRefreshAll",[])}),this.$layout.attachEvent("onResize",function(){t._quickRefresh(function(){t.refreshData()})}),this.callEvent("onGanttLayoutReady",[]),this.$layout.render(),this.$container=this.$layout.$container.firstChild,s(this))}.bind(t);t.resetLayout=function(){u(),d(),this.render()},t._reinit=function(t){this.callEvent("onBeforeGanttReady",[]),this._update_flags(),this.$services.getService("templateLoader").initTemplates(this),u(),this.$root=null,t&&(this.$root=r.toNode(t),d(),this.$mouseEvents.reset(this.$root)),this.callEvent("onTemplatesReady",[]),this.callEvent("onGanttReady",[]),this.render()},t.$click={buttons:{edit:function(e){t.isReadonly(t.getTask(e))||t.showLightbox(e)},delete:function(e){var n=t.getTask(e);if(!t.isReadonly(n)){var i=t.locale.labels.confirm_deleting,r=t.locale.labels.confirm_deleting_title;t._simple_confirm(i,r,function(){t.isTaskExists(e)?(n.$new?(t.$data.tasksStore._skipTaskRecalculation="lightbox",t.silent(function(){t.deleteTask(e,!0)}),t.$data.tasksStore._skipTaskRecalculation=!1,t.refreshData()):(t.$data.tasksStore._skipTaskRecalculation=!0,t.deleteTask(e)),t.hideLightbox()):t.hideLightbox()})}}}},t.render=function(){var n;if(this.callEvent("onBeforeGanttRender",[]),!o(t)){!this.config.sort&&this._sort&&(this._sort=void 0),this.$root&&(this.config.rtl?(this.$root.classList.add("gantt_rtl"),this.$root.firstChild.classList.add("gantt_rtl")):(this.$root.classList.remove("gantt_rtl"),this.$root.firstChild.classList.remove("gantt_rtl")));var i=this.getScrollState(),r=i?i.x:0;if(this._getHorizontalScrollbar())r=this._getHorizontalScrollbar().$config.codeScrollLeft||r||0;n=null,r&&(n=t.dateFromPos(r+this.config.task_scroll_offset))}if(e(this),o(t))t.refreshData();else{this.$layout.$config.autosize=this.config.autosize;var a=this.config.preserve_scroll;if(this.config.preserve_scroll=!1,this.$layout.resize(),this.config.preserve_scroll=a,this.config.preserve_scroll&&i){if(r||i.y){var s=t.getScrollState();if(+n!=+t.dateFromPos(s.x)||s.y!=i.y){r=null;var l=null;if(n)r=Math.max(t.posFromDate(n)-t.config.task_scroll_offset,0);i.y&&(l=i.y),t.scrollTo(r,l)}}var c=t.$ui.getView("grid");if(c){var u=c.$config.scrollY,d=t.$ui.getView(u);if(d)t.utils.dom.isChildOf(d.$view,t.$container)||c.scrollTo(void 0,0)}}}this.callEvent("onGanttRender",[])},t.setSizes=t.render,t.getTaskRowNode=function(t){for(var e=this.$grid_data.childNodes,n=this.config.task_attribute,i=0;i<e.length;i++){if(e[i].getAttribute)if(e[i].getAttribute(n)==t)return e[i]}return null},t.changeLightboxType=function(e){if(this.getLightboxType()==e)return!0;t._silent_redraw_lightbox(e)},t._get_link_type=function(e,n){var i=null;return e&&n?i=t.config.links.start_to_start:!e&&n?i=t.config.links.finish_to_start:e||n?e&&!n&&(i=t.config.links.start_to_finish):i=t.config.links.finish_to_finish,i},t.isLinkAllowed=function(t,e,n,r){var a=null;if(!(a="object"==i(t)?t:{source:t,target:e,type:this._get_link_type(n,r)}))return!1;if(!(a.source&&a.target&&a.type))return!1;if(a.source==a.target)return!1;var o=!0;return this.checkEvent("onLinkValidation")&&(o=this.callEvent("onLinkValidation",[a])),o},t._correct_dst_change=function(e,n,i,r){var o=a.getSecondsInUnit(r)*i;if(o>3600&&o<86400){var s=e.getTimezoneOffset()-n;s&&(e=t.date.add(e,s,"minute"))}return e},t.isSplitTask=function(e){return t.assert(e&&e instanceof Object,"Invalid argument <b>task</b>="+e+" of gantt.isSplitTask. Task object was expected"),this.$data.tasksStore._isSplitItem(e)},t._is_icon_open_click=function(t){if(!t)return!1;var e=t.target||t.srcElement;if(!e||!e.className)return!1;var n=r.getClassName(e);return-1!==n.indexOf("gantt_tree_icon")&&(-1!==n.indexOf("gantt_close")||-1!==n.indexOf("gantt_open"))}}},function(t,e){t.exports=function(t){function e(){return t._cached_functions.update_if_changed(t),t._cached_functions.active||t._cached_functions.activate(),!0}t._cached_functions={cache:{},mode:!1,critical_path_mode:!1,wrap_methods:function(t,e){if(e._prefetch_originals)for(var n in e._prefetch_originals)e[n]=e._prefetch_originals[n];e._prefetch_originals={};for(n=0;n<t.length;n++)this.prefetch(t[n],e)},prefetch:function(t,e){var n=e[t];if(n){var i=this;e._prefetch_originals[t]=n,e[t]=function(){for(var e=new Array(arguments.length),r=0,a=arguments.length;r<a;r++)e[r]=arguments[r];if(i.active){var o=i.get_arguments_hash(Array.prototype.slice.call(e));i.cache[t]||(i.cache[t]={});var s=i.cache[t];if(i.has_cached_value(s,o))return i.get_cached_value(s,o);var l=n.apply(this,e);return i.cache_value(s,o,l),l}return n.apply(this,e)}}return n},cache_value:function(t,e,n){this.is_date(n)&&(n=new Date(n)),t[e]=n},has_cached_value:function(t,e){return t.hasOwnProperty(e)},get_cached_value:function(t,e){var n=t[e];return this.is_date(n)&&(n=new Date(n)),n},is_date:function(t){return t&&t.getUTCDate},get_arguments_hash:function(t){for(var e=[],n=0;n<t.length;n++)e.push(this.stringify_argument(t[n]));return"("+e.join(";")+")"},stringify_argument:function(t){return(t.id?t.id:this.is_date(t)?t.valueOf():t)+""},activate:function(){this.clear(),this.active=!0},deactivate:function(){this.clear(),this.active=!1},clear:function(){this.cache={}},setup:function(t){var e=[],n=["_isProjectEnd","_getProjectEnd","_getSlack"];"auto"==this.mode?t.config.highlight_critical_path&&(e=n):!0===this.mode&&(e=n),this.wrap_methods(e,t)},update_if_changed:function(t){(this.critical_path_mode!=t.config.highlight_critical_path||this.mode!==t.config.optimize_render)&&(this.critical_path_mode=t.config.highlight_critical_path,this.mode=t.config.optimize_render,this.setup(t))}},t.attachEvent("onBeforeGanttRender",e),t.attachEvent("onBeforeDataRender",e),t.attachEvent("onBeforeSmartRender",function(){e()}),t.attachEvent("onBeforeParse",e),t.attachEvent("onDataRender",function(){t._cached_functions.deactivate()});var n=null;t.attachEvent("onSmartRender",function(){n&&clearTimeout(n),n=setTimeout(function(){t._cached_functions.deactivate()},1e3)}),t.attachEvent("onBeforeGanttReady",function(){return t._cached_functions.update_if_changed(t),!0})}},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){t.getTaskType=function(e){var i=e;for(var r in e&&"object"==n(e)&&(i=e.type),this.config.types)if(this.config.types[r]==i)return i;return t.config.types.task}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){}},function(t,e,n){var i=n(2);t.exports=function(t){t.isUnscheduledTask=function(e){return t.assert(e&&e instanceof Object,"Invalid argument <b>task</b>="+e+" of gantt.isUnscheduledTask. Task object was expected"),!!e.unscheduled||!e.start_date},t._isAllowedUnscheduledTask=function(e){return!(!e.unscheduled||!t.config.show_unscheduled)},t._isTaskInTimelineLimits=function(t){var e=t.start_date?t.start_date.valueOf():null,n=t.end_date?t.end_date.valueOf():null;return!!(e&&n&&e<=this._max_date.valueOf()&&n>=this._min_date.valueOf())},t.isTaskVisible=function(t){if(!this.isTaskExists(t))return!1;var e=this.getTask(t);return!(!this._isAllowedUnscheduledTask(e)&&!this._isTaskInTimelineLimits(e))&&!!(this.getGlobalTaskIndex(t)>=0)},t._getProjectEnd=function(){if(t.config.project_end)return t.config.project_end;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.end_date>+e.end_date?1:-1})).length?e[e.length-1].end_date:null},t._getProjectStart=function(){if(t.config.project_start)return t.config.project_start;if(t.config.start_date)return t.config.start_date;if(t.getState().min_date)return t.getState().min_date;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.start_date>+e.start_date?1:-1})).length?e[0].start_date:null};var e=function(e,n){var i=!!(n&&n!=t.config.root_id&&t.isTaskExists(n))&&t.getTask(n),r=null;if(i)r=t.config.schedule_from_end?t.calculateEndDate({start_date:i.end_date,duration:-t.config.duration_step,task:e}):i.start_date;else if(t.config.schedule_from_end)r=t.calculateEndDate({start_date:t._getProjectEnd(),duration:-t.config.duration_step,task:e});else{var a=t.getTaskByIndex(0);r=a?a.start_date?a.start_date:a.end_date?t.calculateEndDate({start_date:a.end_date,duration:-t.config.duration_step,task:e}):null:t.config.start_date||t.getState().min_date}return t.assert(r,"Invalid dates"),new Date(r)};t._set_default_task_timing=function(n){n.start_date=n.start_date||e(n,t.getParent(n)),n.duration=n.duration||t.config.duration_step,n.end_date=n.end_date||t.calculateEndDate(n)},t.createTask=function(n,i,r){(n=n||{},t.defined(n.id)||(n.id=t.uid()),n.start_date||(n.start_date=e(n,i)),void 0===n.text&&(n.text=t.locale.labels.new_task),void 0===n.duration&&(n.duration=1),this.isTaskExists(i))&&(this.setParent(n,i,!0),this.getTask(i).$open=!0);if(!this.callEvent("onTaskCreated",[n]))return null;if(this.config.details_on_create){if(t.isTaskExists(n.id))t.getTask(n.id).$index!=n.$index&&(n.start_date&&"string"==typeof n.start_date&&(n.start_date=this.date.parseDate(n.start_date,"parse_date")),n.end_date&&"string"==typeof n.end_date&&(n.end_date=this.date.parseDate(n.end_date,"parse_date")),this.$data.tasksStore.updateItem(n.id,n));else n.$new=!0,this.silent(function(){t.$data.tasksStore.addItem(n,r)});this.selectTask(n.id),this.refreshData(),this.showLightbox(n.id)}else this.addTask(n,i,r)&&(this.showTask(n.id),this.selectTask(n.id));return n.id},t._update_flags=function(e,n){var i=t.$data.tasksStore;void 0===e?(this._lightbox_id=null,i.silent(function(){i.unselect()}),this.getSelectedTasks&&this._multiselect.reset(),this._tasks_dnd&&this._tasks_dnd.drag&&(this._tasks_dnd.drag.id=null)):(this._lightbox_id==e&&(this._lightbox_id=n),i.getSelectedId()==e&&i.silent(function(){i.unselect(e),i.select(n)}),this._tasks_dnd&&this._tasks_dnd.drag&&this._tasks_dnd.drag.id==e&&(this._tasks_dnd.drag.id=n))};var n=function(e,n){var i=t.getTaskType(e.type),r={type:i,$no_start:!1,$no_end:!1};return n||i!=e.$rendered_type?(i==t.config.types.project?r.$no_end=r.$no_start=!0:i!=t.config.types.milestone&&(r.$no_end=!(e.end_date||e.duration),r.$no_start=!e.start_date,t._isAllowedUnscheduledTask(e)&&(r.$no_end=r.$no_start=!1)),r):(r.$no_start=e.$no_start,r.$no_end=e.$no_end,r)};function r(e){e.$effective_calendar=t.getTaskCalendar(e).id,e.start_date=t.getClosestWorkTime({dir:"future",date:e.start_date,unit:t.config.duration_unit,task:e}),e.end_date=t.calculateEndDate(e)}function a(e){var n=null,i=null,r=void 0!==e?e:t.config.root_id,a=[];return t.eachTask(function(e){t.getTaskType(e.type)==t.config.types.project||t.isUnscheduledTask(e)||(e.rollup&&a.push(e.id),e.start_date&&!e.$no_start&&(!n||n>e.start_date.valueOf())&&(n=e.start_date.valueOf()),e.end_date&&!e.$no_end&&(!i||i<e.end_date.valueOf())&&(i=e.end_date.valueOf()))},r),{start_date:n?new Date(n):null,end_date:i?new Date(i):null,rollup:a}}t._init_task_timing=function(t){var e=n(t,!0),i=t.$rendered_type!=e.type,a=e.type;i&&(t.$no_start=e.$no_start,t.$no_end=e.$no_end,t.$rendered_type=e.type),i&&a!=this.config.types.milestone&&a==this.config.types.project&&(this._set_default_task_timing(t),t.$calculate_duration=!1),a==this.config.types.milestone&&(t.end_date=t.start_date),t.start_date&&t.end_date&&!1!==t.$calculate_duration&&(t.duration=this.calculateDuration(t)),t.$calculate_duration||(t.$calculate_duration=!0),t.end_date||(t.end_date=t.start_date),t.duration=t.duration||0,0===this.config.min_duration&&0===t.duration&&(t.$no_end=!1);var o=this.getTaskCalendar(t);t.$effective_calendar&&t.$effective_calendar!==o.id&&(r(t),this.config.inherit_calendar&&this.isSummaryTask(t)&&this.eachTask(function(t){r(t)},t.id)),t.$effective_calendar=o.id},t.isSummaryTask=function(e){t.assert(e&&e instanceof Object,"Invalid argument <b>task</b>="+e+" of gantt.isSummaryTask. Task object was expected");var i=n(e);return!(!i.$no_end&&!i.$no_start)},t.resetProjectDates=function(t){var i=n(t);if(i.$no_end||i.$no_start){var r=a(t.id);(function(t,n,i,r){n.$no_start&&(t.start_date=i?new Date(i):e(t,this.getParent(t)));n.$no_end&&(t.end_date=r?new Date(r):this.calculateEndDate({start_date:t.start_date,duration:this.config.duration_step,task:t}));(n.$no_start||n.$no_end)&&this._init_task_timing(t)}).call(this,t,i,r.start_date,r.end_date),t.$rollup=r.rollup}},t.getSubtaskDuration=function(e){var n=0,i=void 0!==e?e:t.config.root_id;return this.eachTask(function(e){this.getTaskType(e.type)==t.config.types.project||this.isUnscheduledTask(e)||(n+=e.duration)},i),n},t.getSubtaskDates=function(t){var e=a(t);return{start_date:e.start_date,end_date:e.end_date}},t._update_parents=function(e,i,r){if(e){var a=this.getTask(e);a.rollup&&(r=!0);var o=this.getParent(a),s=n(a),l=!0;if(r||a.start_date&&a.end_date&&(s.$no_start||s.$no_end)){var c=a.start_date.valueOf(),u=a.end_date.valueOf();t.resetProjectDates(a),r||c!=a.start_date.valueOf()||u!=a.end_date.valueOf()||(l=!1),l&&!i&&this.refreshTask(a.id,!0)}l&&o&&this.isTaskExists(o)&&this._update_parents(o,i,r)}},t.roundDate=function(e){var n=t.getScale();i.isDate(e)&&(e={date:e,unit:n?n.unit:t.config.duration_unit,step:n?n.step:t.config.duration_step});var r,a,o,s=e.date,l=e.step,c=e.unit;if(!n)return s;if(c==n.unit&&l==n.step&&+s>=+n.min_date&&+s<=+n.max_date)o=Math.floor(t.columnIndexByDate(s)),n.trace_x[o]||(o-=1,n.rtl&&(o=0)),a=new Date(n.trace_x[o]),r=t.date.add(a,l,c);else{for(o=Math.floor(t.columnIndexByDate(s)),r=t.date[c+"_start"](new Date(n.min_date)),n.trace_x[o]&&(r=t.date[c+"_start"](n.trace_x[o]));+r<+s;){var u=(r=t.date[c+"_start"](t.date.add(r,l,c))).getTimezoneOffset();r=t._correct_dst_change(r,u,r,c),t.date[c+"_start"]&&(r=t.date[c+"_start"](r))}a=t.date.add(r,-1*l,c)}return e.dir&&"future"==e.dir?r:e.dir&&"past"==e.dir?a:Math.abs(s-a)<Math.abs(r-s)?a:r},t.correctTaskWorkTime=function(e){t.config.work_time&&t.config.correct_work_time&&(this.isWorkTime(e.start_date,void 0,e)?this.isWorkTime(new Date(+e.end_date-1),void 0,e)||(e.end_date=this.calculateEndDate(e)):(e.start_date=this.getClosestWorkTime({date:e.start_date,dir:"future",task:e}),e.end_date=this.calculateEndDate(e)))},t.attachEvent("onBeforeTaskUpdate",function(e,n){return t._init_task_timing(n),!0}),t.attachEvent("onBeforeTaskAdd",function(e,n){return t._init_task_timing(n),!0}),t.attachEvent("onAfterTaskMove",function(e,n,i){return t._init_task_timing(t.getTask(e)),!0})}},function(t,e,n){var i=n(0);t.exports={create:function(t,e){return{getWorkHours:function(t){return e.getWorkHours(t)},setWorkTime:function(t){return e.setWorkTime(t)},unsetWorkTime:function(t){e.unsetWorkTime(t)},isWorkTime:function(t,n,i){return e.isWorkTime(t,n,i)},getClosestWorkTime:function(t){return e.getClosestWorkTime(t)},calculateDuration:function(t,n,i){return e.calculateDuration(t,n,i)},_hasDuration:function(t,n,i){return e.hasDuration(t,n,i)},calculateEndDate:function(t,n,i,r){return e.calculateEndDate(t,n,i,r)},mergeCalendars:i.bind(t.mergeCalendars,t),createCalendar:i.bind(t.createCalendar,t),addCalendar:i.bind(t.addCalendar,t),getCalendar:i.bind(t.getCalendar,t),getCalendars:i.bind(t.getCalendars,t),getResourceCalendar:i.bind(t.getResourceCalendar,t),getTaskCalendar:i.bind(t.getTaskCalendar,t),deleteCalendar:i.bind(t.deleteCalendar,t)}}}},function(t,e){function n(t,e){this.argumentsHelper=e,this.$gantt=t}n.prototype={getWorkHours:function(){return[0,24]},setWorkTime:function(){return!0},unsetWorkTime:function(){return!0},isWorkTime:function(){return!0},getClosestWorkTime:function(t){return this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments).date},calculateDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.end_date,i=t.unit,r=t.step;return this._calculateDuration(e,n,i,r)},_calculateDuration:function(t,e,n,i){var r=this.$gantt.date,a={week:6048e5,day:864e5,hour:36e5,minute:6e4},o=0;if(a[n])o=Math.round((e-t)/(i*a[n]));else{for(var s=new Date(t),l=new Date(e);s.valueOf()<l.valueOf();)o+=1,s=r.add(s,i,n);s.valueOf()!=e.valueOf()&&(o+=(l-s)/(r.add(s,i,n)-s))}return Math.round(o)},hasDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.end_date;return!!t.unit&&(e=new Date(e),n=new Date(n),e.valueOf()<n.valueOf())},hasWorkTime:function(){return!0},equals:function(t){return t instanceof n},calculateEndDate:function(){var t=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.duration,i=t.unit,r=t.step;return this.$gantt.date.add(e,r*n,i)}},t.exports=n},function(t,e,n){var i=n(42),r=n(189);function a(t){this.$gantt=t.$gantt,this.argumentsHelper=i(this.$gantt),this.calendarManager=t,this.$disabledCalendar=new r(this.$gantt,this.argumentsHelper)}a.prototype={_getCalendar:function(t){var e;if(this.$gantt.config.work_time){var n=this.calendarManager;t.task?e=n.getTaskCalendar(t.task):t.id?e=n.getTaskCalendar(t):t.calendar&&(e=t.calendar),e||(e=n.getTaskCalendar())}else e=this.$disabledCalendar;return e},getWorkHours:function(t){return t=this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper,arguments),this._getCalendar(t).getWorkHours(t.date)},setWorkTime:function(t,e){return t=this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper,arguments),e||(e=this.calendarManager.getCalendar()),e.setWorkTime(t)},unsetWorkTime:function(t,e){return t=this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper,arguments),e||(e=this.calendarManager.getCalendar()),e.unsetWorkTime(t)},isWorkTime:function(t,e,n,i){var r=this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(r).isWorkTime(r)},getClosestWorkTime:function(t){return t=this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments),this._getCalendar(t).getClosestWorkTime(t)},calculateDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(t).calculateDuration(t)},hasDuration:function(){var t=this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(t).hasDuration(t)},calculateEndDate:function(t){t=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(t).calculateEndDate(t)}},t.exports=a},function(t,e){t.exports=function(){var t={};return{getCalendarIdFromMultipleResources:function(e,n){var i=function(t){return t.map(function(t){return t&&t.resource_id?t.resource_id:t}).sort().join("-")}(e);if(e.length){if(1===e.length)return n.getResourceCalendar(i).id;if(t[i])return t[i].id;var r=function(t,e){return e.mergeCalendars(t.map(function(t){var n=t&&t.resource_id?t.resource_id:t;return e.getResourceCalendar(n)}))}(e,n);return t[i]=r,n.addCalendar(r)}return null}}}},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports={isLegacyResourceCalendarFormat:function(t){if(!t)return!1;for(var e in t)if(t[e]&&"object"===n(t[e]))return!0;return!1},getResourceProperty:function(t){var e=t.resource_calendars,n=t.resource_property;if(this.isLegacyResourceCalendarFormat(e))for(var i in t){n=i;break}return n},getCalendarIdFromLegacyConfig:function(t,e){if(e)for(var n in e){var i=e[n];if(t[n]){var r=i[t[n]];if(r)return r}}return null}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.clear()}return t.prototype._getCacheObject=function(t,e,n){var i=this._cache;i[e]||(i[e]=[]);var r=i[e];r||(r=i[e]={});var a=r[n];a||(a=r[n]={});var o=t.getFullYear(),s=a[o];return s||(s=a[o]={durations:{},endDates:{}}),s},t.prototype._endDateCacheKey=function(t,e){return String(t)+"-"+String(e)},t.prototype._durationCacheKey=function(t,e){return String(t)+"-"+String(e)},t.prototype.getEndDate=function(t,e,n,i,r){var a,o=this._getCacheObject(t,n,i),s=t.valueOf(),l=this._endDateCacheKey(s,e);if(void 0===o.endDates[l]){var c=r(),u=c.valueOf();o.endDates[l]=u,o.durations[this._durationCacheKey(s,u)]=e,a=c}else a=new Date(o.endDates[l]);return a},t.prototype.getDuration=function(t,e,n,i,r){var a,o=this._getCacheObject(t,n,i),s=t.valueOf(),l=e.valueOf(),c=this._durationCacheKey(s,l);if(void 0===o.durations[c]){var u=r();o.durations[c]=u.valueOf(),a=u}else a=o.durations[c];return a},t.prototype.clear=function(){this._cache={}},t}();e.DateDurationCache=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t){var e=this;this.getMinutesPerWeek=function(t){var n=t.valueOf();if(e._weekCache.has(n))return e._weekCache.get(n);for(var i=e._calendar,r=e._calendar.$gantt,a=0,o=r.date.week_start(new Date(t)),s=0;s<7;s++)a+=60*i.getHoursPerDay(o),o=r.date.add(o,1,"day");return e._weekCache.set(n,a),a},this.getMinutesPerMonth=function(t){var n=t.valueOf();if(e._monthCache.has(n))return e._monthCache.get(n);for(var i=e._calendar,r=e._calendar.$gantt,a=0,o=r.date.week_start(new Date(t)),s=r.date.add(o,1,"month").valueOf();o.valueOf()<s;)a+=60*i.getHoursPerDay(o),o=r.date.add(o,1,"day");return e._monthCache.set(n,a),a},this.clear=function(){e._weekCache=new Map,e._monthCache=new Map},this.clear(),this._calendar=t}}();e.LargerUnitsCache=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.clear()}return t.prototype.getItem=function(t,e,n){var i=this._cache;if(i&&i[t]){var r=i[t];if(void 0===r)return-1;var a=r[n.getFullYear()];if(a&&void 0!==a[e])return a[e]}return-1},t.prototype.setItem=function(t,e,n,i){if(t&&e){var r=this._cache;if(r){r[t]||(r[t]=[]);var a=r[t],o=i.getFullYear(),s=a[o];s||(s=a[o]={}),s[e]=n}}},t.prototype.clear=function(){this._cache={}},t}();e.WorkUnitsObjectCache=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.clear()}return t.prototype.getItem=function(t,e,n){if(this._cache.has(t)){var i=this._cache.get(t)[n.getFullYear()];if(i&&i.has(e))return i.get(e)}return-1},t.prototype.setItem=function(t,e,n,i){if(t&&e){var r,a=this._cache,o=i.getFullYear();a.has(t)?r=a.get(t):(r=[],a.set(t,r));var s=r[o];s||(s=r[o]=new Map),s.set(e,n)}},t.prototype.clear=function(){this._cache=new Map},t}();e.WorkUnitsMapCache=i},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(41).createCacheObject,a=n(41).LargerUnitsCache,o=n(0),s=n(193).DateDurationCache;function l(t,e){this.argumentsHelper=e,this.$gantt=t,this._workingUnitsCache=r(),this._largeUnitsCache=new a(this),this._dateDurationCache=new s,this._worktime=null,this._cached_timestamps={},this._cached_timestamps_count=0}l.prototype={units:["year","month","week","day","hour","minute"],_clearCaches:function(){this._workingUnitsCache.clear(),this._largeUnitsCache.clear(),this._dateDurationCache.clear()},_getUnitOrder:function(t){for(var e=0,n=this.units.length;e<n;e++)if(this.units[e]==t)return e},_resetTimestampCache:function(){this._cached_timestamps={},this._cached_timestamps_count=0},_timestamp:function(t){this._cached_timestamps_count>1e6&&this._resetTimestampCache();var e=null;if(t.day||0===t.day)e=t.day;else if(t.date){var n=String(t.date.valueOf());this._cached_timestamps[n]?e=this._cached_timestamps[n]:(e=Date.UTC(t.date.getFullYear(),t.date.getMonth(),t.date.getDate()),this._cached_timestamps[n]=e,this._cached_timestamps_count++)}return e},_checkIfWorkingUnit:function(t,e){if(!this["_is_work_"+e]){var n=this.$gantt.date["".concat(e,"_start")](new Date(t)),i=this.$gantt.date.add(n,1,e);return this.hasDuration(n,i)}return this["_is_work_"+e](t)},_is_work_day:function(t){var e=this._getWorkHours(t);return!!Array.isArray(e)&&e.length>0},_is_work_hour:function(t){for(var e=this._getWorkHours(t),n=t.getHours(),i=0;i<e.length;i++)if(n>=e[i].startHour&&n<e[i].endHour)return!0;return!1},_getTimeOfDayStamp:function(t,e){var n=t.getHours();return t.getHours()||t.getMinutes()||!e||(n=24),60*n*60+60*t.getMinutes()},_is_work_minute:function(t){for(var e=this._getWorkHours(t),n=this._getTimeOfDayStamp(t),i=0;i<e.length;i++)if(n>=e[i].start&&n<e[i].end)return!0;return!1},_nextDate:function(t,e,n){return this.$gantt.date.add(t,n,e)},_getWorkUnitsBetweenGeneric:function(t,e,n,i){var r=this.$gantt.date,a=new Date(t),o=new Date(e);i=i||1;var s,l,c=0,u=null,d=!1;(s=r[n+"_start"](new Date(a))).valueOf()!=a.valueOf()&&(d=!0);var h=!1;(l=r[n+"_start"](new Date(e))).valueOf()!=e.valueOf()&&(h=!0);for(var f=!1;a.valueOf()<o.valueOf();){if(f=(u=this._nextDate(a,n,i)).valueOf()>o.valueOf(),this._isWorkTime(a,n))(d||h&&f)&&(s=r[n+"_start"](new Date(a)),l=r.add(s,i,n)),d?(d=!1,u=this._nextDate(s,n,i),c+=(l.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):h&&f?(h=!1,c+=(o.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):c++;else{var _=this._getUnitOrder(n),g=this.units[_-1];g&&!this._isWorkTime(a,g)&&(u=this._getClosestWorkTimeFuture(a,g))}a=u}return c},_getMinutesPerHour:function(t){var e=this._getTimeOfDayStamp(t),n=this._getTimeOfDayStamp(this._nextDate(t,"hour",1));0===n&&(n=86400);for(var i=this._getWorkHours(t),r=0;r<i.length;r++){var a=i[r];if(e>=a.start&&n<=a.end)return 60;if(e<a.end&&n>a.start)return(Math.min(n,a.end)-Math.max(e,a.start))/60}return 0},_getMinutesPerDay:function(t){var e=0;return this._getWorkHours(t).forEach(function(t){e+=t.durationMinutes}),e},getHoursPerDay:function(t){var e=0;return this._getWorkHours(t).forEach(function(t){e+=t.durationHours}),e},_getWorkUnitsForRange:function(t,e,n,i){var r,a=0,s=new Date(t),l=new Date(e);for(r="minute"==n?o.bind(this._getMinutesPerDay,this):o.bind(this.getHoursPerDay,this);s.valueOf()<l.valueOf();)if(l-s>27648e5&&0===s.getDate()){var c=this._largeUnitsCache.getMinutesPerMonth(s);"hour"==n&&(c/=60),a+=c,s=this.$gantt.date.add(s,1,"month")}else{if(l-s>13824e5){var u=this.$gantt.date.week_start(new Date(s));if(s.valueOf()===u.valueOf()){c=this._largeUnitsCache.getMinutesPerWeek(s);"hour"==n&&(c/=60),a+=c,s=this.$gantt.date.add(s,7,"day");continue}}a+=r(s),s=this._nextDate(s,"day",1)}return a/i},_getMinutesBetweenSingleDay:function(t,e){for(var n=this._getIntervalTimestamp(t,e),i=this._getWorkHours(t),r=0,a=0;a<i.length;a++){var o=i[a];if(n.end>=o.start&&n.start<=o.end){var s=Math.max(o.start,n.start),l=Math.min(o.end,n.end);r+=(l-s)/60,n.start=l}}return Math.floor(r)},_getMinutesBetween:function(t,e,n,i){var r=new Date(t),a=new Date(e);i=i||1;var o=new Date(r),s=this.$gantt.date.add(this.$gantt.date.day_start(new Date(r)),1,"day");if(a.valueOf()<=s.valueOf())return this._getMinutesBetweenSingleDay(t,e);var l=this.$gantt.date.day_start(new Date(a)),c=a,u=this._getMinutesBetweenSingleDay(o,s),d=this._getMinutesBetweenSingleDay(l,c);return u+this._getWorkUnitsForRange(s,l,n,i)+d},_getHoursBetween:function(t,e,n,i){var r=new Date(t),a=new Date(e);i=i||1;var o=new Date(r),s=this.$gantt.date.add(this.$gantt.date.day_start(new Date(r)),1,"day");if(a.valueOf()<=s.valueOf())return Math.round(this._getMinutesBetweenSingleDay(t,e)/60);var l=this.$gantt.date.day_start(new Date(a)),c=a,u=this._getMinutesBetweenSingleDay(o,s,n,i)/60,d=this._getMinutesBetweenSingleDay(l,c,n,i)/60,h=u+this._getWorkUnitsForRange(s,l,n,i)+d;return Math.round(h)},getConfig:function(){return this._worktime},_setConfig:function(t){this._worktime=t,this._parseSettings(),this._clearCaches()},_parseSettings:function(){var t=this.getConfig();for(var e in t.parsed={dates:{},hours:null,haveCustomWeeks:!1,customWeeks:{},customWeeksRangeStart:null,customWeeksRangeEnd:null,customWeeksBoundaries:[]},t.parsed.hours=this._parseHours(t.hours),t.dates)t.parsed.dates[e]=this._parseHours(t.dates[e]);if(t.customWeeks){var n=null,i=null;for(var e in t.customWeeks){var r=t.customWeeks[e];if(r.from&&r.to){var a=r.from,o=r.to;(!n||n>a.valueOf())&&(n=a.valueOf()),(!i||i<o.valueOf())&&(i=o.valueOf()),t.parsed.customWeeksBoundaries.push({from:a.valueOf(),fromReadable:new Date(a),to:o.valueOf(),toReadable:new Date(o),name:e}),t.parsed.haveCustomWeeks=!0;var s=t.parsed.customWeeks[e]={from:r.from,to:r.to,hours:this._parseHours(r.hours),dates:{}};for(var l in r.dates)s.dates[l]=this._parseHours(r.dates[l])}}t.parsed.customWeeksRangeStart=n,t.parsed.customWeeksRangeEnd=i}},_tryChangeCalendarSettings:function(t){var e=JSON.stringify(this.getConfig());return t(),!!this.hasWorkTime()||(this._setConfig(JSON.parse(e)),this._clearCaches(),!1)},_arraysEqual:function(t,e){if(t===e)return!0;if(!t||!e)return!1;if(t.length!=e.length)return!1;for(var n=0;n<t.length;++n)if(t[n]!==e[n])return!1;return!0},_compareSettings:function(t,e){if(!this._arraysEqual(t.hours,e.hours))return!1;var n=Object.keys(t.dates),i=Object.keys(e.dates);if(n.sort(),i.sort(),!this._arraysEqual(n,i))return!1;for(var r=0;r<n.length;r++){var a=n[r],o=t.dates[a],s=t.dates[a];if(o!==s&&!(Array.isArray(o)&&Array.isArray(s)&&this._arraysEqual(o,s)))return!1}return!0},equals:function(t){if(!(t instanceof l))return!1;var e=this.getConfig(),n=t.getConfig();if(!this._compareSettings(e,n))return!1;if(e.parsed.haveCustomWeeks&&n.parsed.haveCustomWeeks){if(e.parsed.customWeeksBoundaries.length!=n.parsed.customWeeksBoundaries.length)return!1;for(var i in e.parsed.customWeeks){var r=e.parsed.customWeeks[i],a=n.parsed.customWeeks[i];if(!a)return!1;if(!this._compareSettings(r,a))return!1}}else if(e.parse.haveCustomWeeks!==n.parsed.haveCustomWeeks)return!1;return!0},getWorkHours:function(){var t=this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper,arguments);return this._getWorkHours(t.date,!1)},_getWorkHours:function(t,e){var n=this.getConfig();if(!1!==e&&(n=n.parsed),!t)return n.hours;var i=this._timestamp({date:t});if(n.haveCustomWeeks&&n.customWeeksRangeStart<=i&&n.customWeeksRangeEnd>i)for(var r=0;r<n.customWeeksBoundaries.length;r++)if(n.customWeeksBoundaries[r].from<=i&&n.customWeeksBoundaries[r].to>i){n=n.customWeeks[n.customWeeksBoundaries[r].name];break}var a=!0;return void 0!==n.dates[i]?a=n.dates[i]:void 0!==n.dates[t.getDay()]&&(a=n.dates[t.getDay()]),!0===a?n.hours:a||[]},_getIntervalTimestamp:function(t,e){var n={start:0,end:0};n.start=60*t.getHours()*60+60*t.getMinutes()+t.getSeconds();var i=e.getHours();return!i&&!e.getMinutes()&&!e.getSeconds()&&t.valueOf()<e.valueOf()&&(i=24),n.end=60*i*60+60*e.getMinutes()+e.getSeconds(),n},_parseHours:function(t){if(Array.isArray(t)){var e=[];t.forEach(function(t){"number"==typeof t?e.push(60*t*60):"string"==typeof t&&t.split("-").map(function(t){return t.trim()}).forEach(function(t){var n=t.split(":").map(function(t){return t.trim()}),i=parseInt(60*n[0]*60);n[1]&&(i+=parseInt(60*n[1])),n[2]&&(i+=parseInt(n[2])),e.push(i)})});for(var n=[],i=0;i<e.length;i+=2){var r=e[i],a=e[i+1],o=a-r;n.push({start:r,end:a,startHour:Math.floor(r/3600),startMinute:Math.floor(r/60),endHour:Math.ceil(a/3600),endMinute:Math.ceil(a/60),durationSeconds:o,durationMinutes:o/60,durationHours:o/3600})}return n}return t},setWorkTime:function(t){return this._tryChangeCalendarSettings(o.bind(function(){var e=void 0===t.hours||t.hours,n=this._timestamp(t),r=this.getConfig();if(null!==n?r.dates[n]=e:t.customWeeks||(r.hours=e),t.customWeeks)if(r.customWeeks||(r.customWeeks={}),"string"==typeof t.customWeeks)null!==n?r.customWeeks[t.customWeeks].dates[n]=e:t.customWeeks||(r.customWeeks[t.customWeeks].hours=e);else if("object"===i(t.customWeeks)&&"function Object() { [native code] }"===Function.prototype.toString.call(t.customWeeks.constructor))for(var a in t.customWeeks)r.customWeeks[a]=t.customWeeks[a];this._parseSettings(),this._clearCaches()},this))},unsetWorkTime:function(t){return this._tryChangeCalendarSettings(o.bind(function(){if(t){var e=this._timestamp(t);null!==e&&delete this.getConfig().dates[e]}else this.reset_calendar();this._parseSettings(),this._clearCaches()},this))},_isWorkTime:function(t,e){var n=-1,i=null;return i=String(t.valueOf()),-1==(n=this._workingUnitsCache.getItem(e,i,t))&&(n=this._checkIfWorkingUnit(t,e),this._workingUnitsCache.setItem(e,i,n,t)),n},isWorkTime:function(){var t=this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper,arguments);return this._isWorkTime(t.date,t.unit)},calculateDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments);if(!t.unit)return!1;var e=this;return this._dateDurationCache.getDuration(t.start_date,t.end_date,t.unit,t.step,function(){return e._calculateDuration(t.start_date,t.end_date,t.unit,t.step)})},_calculateDuration:function(t,e,n,i){var r=0,a=1;if(t.valueOf()>e.valueOf()){var o=e;e=t,t=o,a=-1}return r="hour"==n&&1==i?this._getHoursBetween(t,e,n,i):"minute"==n&&1==i?this._getMinutesBetween(t,e,n,i):this._getWorkUnitsBetweenGeneric(t,e,n,i),a*Math.round(r)},hasDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.end_date,i=t.unit,r=t.step;if(!i)return!1;var a=new Date(e),o=new Date(n);for(r=r||1;a.valueOf()<o.valueOf();){if(this._isWorkTime(a,i))return!0;a=this._nextDate(a,i,r)}return!1},calculateEndDate:function(){var t=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.duration,i=t.unit,r=t.step;if(!i)return!1;var a=t.duration>=0?1:-1;n=Math.abs(1*n);var o=this;return this._dateDurationCache.getEndDate(e,n,i,r*a,function(){return o._calculateEndDate(e,n,i,r*a)})},_calculateEndDate:function(t,e,n,i){return!!n&&(1==i&&"minute"==n?this._calculateMinuteEndDate(t,e,i):-1==i&&"minute"==n?this._subtractMinuteDate(t,e,i):1==i&&"hour"==n?this._calculateHourEndDate(t,e,i):this._addInterval(t,e,n,i,null).end)},_addInterval:function(t,e,n,i,r){for(var a=0,o=t,s=!1;a<e&&(!r||!r(o));){var l=this._nextDate(o,n,i);"day"==n&&(s=s||!o.getHours()&&l.getHours())&&(l.setHours(0),l.getHours()||(s=!1));var c=new Date(l.valueOf()+1);i>0&&(c=new Date(l.valueOf()-1)),this._isWorkTime(c,n)&&!s&&a++,o=l}return{end:o,start:t,added:a}},_addHoursUntilDayEnd:function(t,e){for(var n=this.$gantt.date.add(this.$gantt.date.day_start(new Date(t)),1,"day"),i=0,r=e,a=this._getIntervalTimestamp(t,n),o=this._getWorkHours(t),s=0;s<o.length&&i<e;s++){var l=o[s];if(a.end>=l.start&&a.start<=l.end){var c=Math.max(l.start,a.start),u=Math.min(l.end,a.end),d=(u-c)/3600;d>r&&(d=r,u=c+60*r*60);var h=Math.round((u-c)/3600);i+=h,r-=h,a.start=u}}var f=n;return i===e&&(f=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,a.start)),{added:i,end:f}},_calculateHourEndDate:function(t,e,n){var i=new Date(t),r=0;n=n||1,e=Math.abs(1*e);var a=this._addHoursUntilDayEnd(i,e);if(r=a.added,i=a.end,c=e-r){for(var o=i;r<e;){var s=this._nextDate(o,"day",n);s.setHours(0),s.setMinutes(0),s.setSeconds(0);var l=0;if(r+(l=n>0?this.getHoursPerDay(new Date(s.valueOf()-1)):this.getHoursPerDay(new Date(s.valueOf()+1)))>=e)break;r+=l,o=s}i=o}if(r<e){var c=e-r;i=(a=this._addHoursUntilDayEnd(i,c)).end}return i},_addMinutesUntilHourEnd:function(t,e){if(0===t.getMinutes())return{added:0,end:new Date(t)};for(var n=this.$gantt.date.add(this.$gantt.date.hour_start(new Date(t)),1,"hour"),i=0,r=e,a=this._getIntervalTimestamp(t,n),o=this._getWorkHours(t),s=0;s<o.length&&i<e;s++){var l=o[s];if(a.end>=l.start&&a.start<=l.end){var c=Math.max(l.start,a.start),u=Math.min(l.end,a.end),d=(u-c)/60;d>r&&(d=r,u=c+60*r);var h=Math.round((u-c)/60);r-=h,i+=h,a.start=u}}var f=n;return i===e&&(f=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,a.start)),{added:i,end:f}},_subtractMinutesUntilHourStart:function(t,e){for(var n=this.$gantt.date.hour_start(new Date(t)),i=0,r=e,a=60*n.getHours()*60+60*n.getMinutes()+n.getSeconds(),o=60*t.getHours()*60+60*t.getMinutes()+t.getSeconds(),s=this._getWorkHours(t),l=s.length-1;l>=0&&i<e;l--){var c=s[l];if(o>c.start&&a<=c.end){var u=Math.min(o,c.end),d=Math.max(a,c.start),h=(u-d)/60;h>r&&(h=r,d=u-60*r);var f=Math.abs(Math.round((u-d)/60));r-=f,i+=f,o=d}}var _=n;return i===e&&(_=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,o)),{added:i,end:_}},_subtractMinuteDate:function(t,e,n){var i=new Date(t),r=0;n=n||-1,e=Math.abs(1*e),e=Math.round(e);var a=this._isMinutePrecision(i),o=this._subtractMinutesUntilHourStart(i,e);r+=o.added,i=o.end;for(var s=0,l=[],c=0;r<e;){var u=this.$gantt.date.day_start(new Date(i)),d=!1;i.valueOf()===u.valueOf()&&(u=this.$gantt.date.add(u,-1,"day"),d=!0);var h=new Date(u.getFullYear(),u.getMonth(),u.getDate(),23,59,59,999).valueOf();h!==s&&(l=this._getWorkHours(u),c=this._getMinutesPerDay(u),s=h);var f=e-r,_=this._getTimeOfDayStamp(i,d);if(l.length&&c)if(l[l.length-1].end<=_&&f>c)r+=c,i=this.$gantt.date.add(i,-1,"day");else{for(var g=!1,p=null,v=null,m=l.length-1;m>=0;m--)if(l[m].start<_-1&&l[m].end>=_-1){g=!0,p=l[m],v=l[m-1];break}if(g)if(_===p.end&&f>=p.durationMinutes)r+=p.durationMinutes,i=this.$gantt.date.add(i,-p.durationMinutes,"minute");else if(!a&&f<=_/60-p.startMinute)r+=f,i=this.$gantt.date.add(i,-f,"minute");else if(a)f<=_/60-p.startMinute?(r+=f,i=this.$gantt.date.add(i,-f,"minute")):(r+=_/60-p.startMinute,i=v?new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,v.end):this.$gantt.date.day_start(i));else{var y=this._getMinutesPerHour(i);y<=f?(r+=y,i=this._nextDate(i,"hour",n)):(r+=(o=this._subtractMinutesUntilHourStart(i,f)).added,i=o.end)}else if(0===i.getHours()&&0===i.getMinutes()&&0===i.getSeconds()){if((k=this._getClosestWorkTimePast(i,"hour")).valueOf()===i.valueOf()){var k=this.$gantt.date.add(i,-1,"day"),b=this._getWorkHours(k);if(b.length){var x=b[b.length-1];k.setSeconds(x.durationSeconds)}}i=k}else i=this._getClosestWorkTimePast(new Date(i-1),"hour")}else i=this.$gantt.date.add(i,-1,"day")}if(r<e){var w=e-r;r+=(o=this._subtractMinutesUntilHourStart(i,w)).added,i=o.end}return i},_calculateMinuteEndDate:function(t,e,n){var i=new Date(t),r=0;n=n||1,e=Math.abs(1*e),e=Math.round(e);var a=this._addMinutesUntilHourEnd(i,e);r+=a.added,i=a.end;for(var o=0,s=[],l=0,c=this._isMinutePrecision(i);r<e;){var u=this.$gantt.date.day_start(new Date(i)).valueOf();u!==o&&(s=this._getWorkHours(i),l=this._getMinutesPerDay(i),o=u);var d=e-r,h=this._getTimeOfDayStamp(i);if(s.length&&l)if(s[0].start>=h&&d>=l){if(r+=l,d==l){i=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,s[s.length-1].end);break}i=this.$gantt.date.add(i,1,"day"),i=this.$gantt.date.day_start(i)}else{for(var f=!1,_=null,g=0;g<s.length;g++)if(s[g].start<=h&&s[g].end>h){f=!0,_=s[g];break}if(f)if(h===_.start&&d>=_.durationMinutes)r+=_.durationMinutes,i=this.$gantt.date.add(i,_.durationMinutes,"minute");else if(d<=_.endMinute-h/60)r+=d,i=this.$gantt.date.add(i,d,"minute");else{var p=this._getMinutesPerHour(i);p<=d?(r+=p,i=c?this.$gantt.date.add(i,p,"minute"):this._nextDate(i,"hour",n)):(r+=(a=this._addMinutesUntilHourEnd(i,d)).added,i=a.end)}else i=this._getClosestWorkTimeFuture(i,"hour")}else i=this.$gantt.date.add(this.$gantt.date.day_start(i),1,"day")}if(r<e){var v=e-r;r+=(a=this._addMinutesUntilHourEnd(i,v)).added,i=a.end}return i},getClosestWorkTime:function(){var t=this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments);return this._getClosestWorkTime(t.date,t.unit,t.dir)},_getClosestWorkTime:function(t,e,n){var i=new Date(t);if(this._isWorkTime(i,e))return i;if(i=this.$gantt.date[e+"_start"](i),"any"!=n&&n)i="past"==n?this._getClosestWorkTimePast(i,e):this._getClosestWorkTimeFuture(i,e);else{var r=this._getClosestWorkTimeFuture(i,e),a=this._getClosestWorkTimePast(i,e);i=Math.abs(r-t)<=Math.abs(t-a)?r:a}return i},_getClosestWorkTimeFuture:function(t,e){return this._getClosestWorkTimeGeneric(t,e,1)},_getClosestWorkTimePast:function(t,e){var n=this._getClosestWorkTimeGeneric(t,e,-1);return this.$gantt.date.add(n,1,e)},_findClosestTimeInDay:function(t,e,n){var i=new Date(t),r=null,a=!1;this._getWorkHours(i).length||(i=this._getClosestWorkTime(i,"day",e<0?"past":"future"),e<0&&(i=new Date(i.valueOf()-1),a=!0),n=this._getWorkHours(i));var o=this._getTimeOfDayStamp(i);if(a&&(o=this._getTimeOfDayStamp(new Date(i.valueOf()+1),a)),e>0){for(var s=0;s<n.length;s++)if(n[s].start>=o){r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,n[s].start);break}}else for(s=n.length-1;s>=0;s--){if(n[s].end<=o){r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,n[s].end);break}if(n[s].end>o&&n[s].start<=o){r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,o);break}}return r},_getClosestWorkMinute:function(t,e,n){var i=new Date(t),r=this._getWorkHours(i),a=this._findClosestTimeInDay(i,n,r);return a||(i=this.calculateEndDate(i,n,"day"),n>0?i=this.$gantt.date.day_start(i):(i=this.$gantt.date.day_start(i),i=this.$gantt.date.add(i,1,"day"),i=new Date(i.valueOf()-1)),r=this._getWorkHours(i),a=this._findClosestTimeInDay(i,n,r)),n<0&&(a=this.$gantt.date.add(a,-1,e)),a},_getClosestWorkTimeGeneric:function(t,e,n){if("hour"===e||"minute"===e)return this._getClosestWorkMinute(t,e,n);for(var i=this._getUnitOrder(e),r=this.units[i-1],a=t,o=0;!this._isWorkTime(a,e)&&(!r||this._isWorkTime(a,r)||(a=n>0?this._getClosestWorkTimeFuture(a,r):this._getClosestWorkTimePast(a,r),!this._isWorkTime(a,e)));){if(++o>3e3)return this.$gantt.assert(!1,"Invalid working time check"),!1;var s=a.getTimezoneOffset();a=this.$gantt.date.add(a,n,e),a=this.$gantt._correct_dst_change(a,s,n,e),this.$gantt.date[e+"_start"]&&(a=this.$gantt.date[e+"_start"](a))}return a},hasWorkTime:function(){var t=this.getConfig(),e=t.dates,n=[];for(var i in t.dates)Number(i)>6&&n.push(Number(i));var r=this._checkWorkHours(t.hours),a=!1;return[0,1,2,3,4,5,6].forEach(function(t){if(!a){var n=e[t];!0===n?a=r:Array.isArray(n)&&(a=this._checkWorkHours(n))}}.bind(this)),a},_checkWorkHours:function(t){if(0===t.length)return!1;for(var e=!1,n=0;n<t.length;n+=2)t[n]!==t[n+1]&&(e=!0);return e},_isMinutePrecision:function(t){var e=!1;return this._getWorkHours(t).forEach(function(t){(t.startMinute%60||t.endMinute%60)&&(e=!0)}),e}},t.exports=l},function(t,e,n){var i=n(0);function r(){}r.prototype={_getIntervals:function(t){for(var e=[],n=0;n<t.length;n+=2)e.push({start:t[n],end:t[n+1]});return e},_toHoursArray:function(t){var e=[];function n(t){var e=Math.floor(t/3600),n=t-60*e*60;return e+":"+function(t){var e=String(t);return e.length<2&&(e="0"+e),e}(Math.floor(n/60))}for(var i=0;i<t.length;i++)e.push(n(t[i].start)+"-"+n(t[i].end));return e},_intersectHourRanges:function(t,e){var n=[],i=t.length>e.length?t:e,r=t===i?e:t;i=i.slice(),r=r.slice();n=[];for(var a=0;a<i.length;a++)for(var o=i[a],s=0;s<r.length;s++){var l=r[s];l.start<o.end&&l.end>o.start&&(n.push({start:Math.max(o.start,l.start),end:Math.min(o.end,l.end)}),o.end>l.end&&(r.splice(s,1),s--,a--))}return n},_mergeAdjacentIntervals:function(t){var e=t.slice();e.sort(function(t,e){return t.start-e.start});for(var n=e[0],i=1;i<e.length;i++){var r=e[i];r.start<=n.end?(r.end>n.end&&(n.end=r.end),e.splice(i,1),i--):n=r}return e},_mergeHoursConfig:function(t,e){return this._mergeAdjacentIntervals(this._intersectHourRanges(t,e))},merge:function(t,e){var n=i.copy(t.getConfig().parsed),r=i.copy(e.getConfig().parsed),a={hours:this._toHoursArray(this._mergeHoursConfig(n.hours,r.hours)),dates:{},customWeeks:{}};for(var o in n.dates){var s=n.dates[o],l=r.dates[o];if(s&&l)if(Array.isArray(s)||Array.isArray(l)){var c=Array.isArray(s)?s:n.hours,u=Array.isArray(l)?l:r.hours;a.dates[o]=this._toHoursArray(this._mergeHoursConfig(c,u))}else a.dates[o]=!0;else a.dates[o]=!1}if(n.customWeeks)for(var o in n.customWeeks)a.customWeeks[o]=n.customWeeks[o];if(r.customWeeks)for(var o in r.customWeeks)a.customWeeks[o]=r.customWeeks[o];return a}},t.exports=r},function(t,e,n){var i=n(0),r=n(42),a=n(198),o=n(197),s=n(192),l=n(191)();function c(t){this.$gantt=t,this._calendars={},this._legacyConfig=void 0,this.$gantt.attachEvent("onGanttReady",function(){this.$gantt.config.resource_calendars&&(this._isLegacyConfig=s.isLegacyResourceCalendarFormat(this.$gantt.config.resource_calendars))}.bind(this)),this.$gantt.attachEvent("onBeforeGanttReady",function(){this.createDefaultCalendars()}.bind(this)),this.$gantt.attachEvent("onBeforeGanttRender",function(){this.createDefaultCalendars()}.bind(this))}c.prototype={_calendars:{},_convertWorkTimeSettings:function(t){var e=t.days;if(e&&!t.dates){t.dates=t.dates||{};for(var n=0;n<e.length;n++)t.dates[n]=e[n],e[n]instanceof Array||(t.dates[n]=!!e[n])}return delete t.days,t},mergeCalendars:function(){var t=[],e=arguments;if(Array.isArray(e[0]))t=e[0].slice();else for(var n=0;n<arguments.length;n++)t.push(arguments[n]);var i,r=new a;return t.forEach(function(t){i=i?this._createCalendarFromConfig(r.merge(i,t)):t}.bind(this)),this.createCalendar(i)},_createCalendarFromConfig:function(t){var e=new o(this.$gantt,r(this.$gantt));e.id=String(i.uid());var n=this._convertWorkTimeSettings(t);if(n.customWeeks)for(var a in n.customWeeks)n.customWeeks[a]=this._convertWorkTimeSettings(n.customWeeks[a]);return e._setConfig(n),e},createCalendar:function(t){var e;t||(t={}),e=t.getConfig?i.copy(t.getConfig()):t.worktime?i.copy(t.worktime):i.copy(t);var n=i.copy(this.defaults.fulltime.worktime);return i.mixin(e,n),this._createCalendarFromConfig(e)},getCalendar:function(t){t=t||"global";var e=this._calendars[t];return e||(this.createDefaultCalendars(),e=this._calendars[t]),e},getCalendars:function(){var t=[];for(var e in this._calendars)t.push(this.getCalendar(e));return t},_getOwnCalendar:function(t){var e=this.$gantt.config;if(t[e.calendar_property])return this.getCalendar(t[e.calendar_property]);if(e.resource_calendars){var n;if(n=!1===this._legacyConfig?e.resource_property:s.getResourceProperty(e),Array.isArray(t[n]))e.dynamic_resource_calendars&&(i=l.getCalendarIdFromMultipleResources(t[n],this));else if(void 0===this._legacyConfig&&(this._legacyConfig=s.isLegacyResourceCalendarFormat(e.resource_calendars)),this._legacyConfig)var i=s.getCalendarIdFromLegacyConfig(t,e.resource_calendars);else if(n&&t[n]&&e.resource_calendars[t[n]])var r=this.getResourceCalendar(t[n]);if(i&&(r=this.getCalendar(i)),r)return r}return null},getResourceCalendar:function(t){if(null===t||void 0===t)return this.getCalendar();var e=null;e="number"==typeof t||"string"==typeof t?t:t.id||t.key;var n=this.$gantt.config,i=n.resource_calendars,r=null;if(i){if(void 0===this._legacyConfig&&(this._legacyConfig=s.isLegacyResourceCalendarFormat(n.resource_calendars)),this._legacyConfig){for(var a in i)if(i[a][e]){r=i[a][e];break}}else r=i[e];if(r)return this.getCalendar(r)}return this.getCalendar()},getTaskCalendar:function(t){var e,n=this.$gantt;if(null===t||void 0===t)return this.getCalendar();if(!(e="number"!=typeof t&&"string"!=typeof t||!n.isTaskExists(t)?t:n.getTask(t)))return this.getCalendar();var i=this._getOwnCalendar(e),r=!!n.getState().group_mode;if(!i&&n.config.inherit_calendar&&n.isTaskExists(e.parent)){for(var a=e;n.isTaskExists(a.parent)&&(a=n.getTask(a.parent),!n.isSummaryTask(a)||!(i=this._getOwnCalendar(a))););r&&!i&&t.$effective_calendar&&(i=this.getCalendar(t.$effective_calendar))}return i||this.getCalendar()},addCalendar:function(t){if(!this.isCalendar(t)){var e=t.id;(t=this.createCalendar(t)).id=e}if(t._tryChangeCalendarSettings(function(){})){var n=this.$gantt.config;return t.id=t.id||i.uid(),this._calendars[t.id]=t,n.worktimes||(n.worktimes={}),n.worktimes[t.id]=t.getConfig(),t.id}return this.$gantt.callEvent("onCalendarError",[{message:"Invalid calendar settings, no worktime available"},t]),null},deleteCalendar:function(t){var e=this.$gantt.config;return!!t&&(!!this._calendars[t]&&(delete this._calendars[t],e.worktimes&&e.worktimes[t]&&delete e.worktimes[t],!0))},restoreConfigCalendars:function(t){for(var e in t)if(!this._calendars[e]){var n=t[e],i=this.createCalendar(n);i.id=e,this.addCalendar(i)}},defaults:{global:{id:"global",worktime:{hours:[8,12,13,17],days:[0,1,1,1,1,1,0]}},fulltime:{id:"fulltime",worktime:{hours:[0,24],days:[1,1,1,1,1,1,1]}}},createDefaultCalendars:function(){var t=this.$gantt.config;this.restoreConfigCalendars(this.defaults),this.restoreConfigCalendars(t.worktimes)},isCalendar:function(t){return[t.isWorkTime,t.setWorkTime,t.getWorkHours,t.unsetWorkTime,t.getClosestWorkTime,t.calculateDuration,t.hasDuration,t.calculateEndDate].every(function(t){return t instanceof Function})}},t.exports=c},function(t,e,n){var i=n(199),r=n(190),a=n(188),o=n(0);t.exports=function(t){var e=new i(t),n=new r(e),s=a.create(e,n);o.mixin(t,s)}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(2);t.exports=function(t){function e(e){throw t.assert(!1,"Can't parse data: incorrect value of gantt.parse or gantt.load method. Actual argument value: "+JSON.stringify(e)),new Error("Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: "+JSON.stringify(e))}t.load=function(e,n,i){this._load_url=e,this.assert(arguments.length,"Invalid load arguments");var r="json",a=null;return arguments.length>=3?(r=n,a=i):"string"==typeof arguments[1]?r=arguments[1]:"function"==typeof arguments[1]&&(a=arguments[1]),this._load_type=r,this.callEvent("onLoadStart",[e,r]),this.ajax.get(e,t.bind(function(t){this.on_load(t,r),this.callEvent("onLoadEnd",[e,r]),"function"==typeof a&&a.call(this)},this))},t.parse=function(t,e){this.on_load({xmlDoc:{responseText:t}},e)},t.serialize=function(t){return this[t=t||"json"].serialize()},t.on_load=function(e,n){if(e.xmlDoc&&404===e.xmlDoc.status)this.assert(!1,"Failed to load the data from <a href='"+e.xmlDoc.responseURL+"' target='_blank'>"+e.xmlDoc.responseURL+"</a>, server returns 404");else if(!t.$destroyed){this.callEvent("onBeforeParse",[]),n||(n="json"),this.assert(this[n],"Invalid data type:'"+n+"'");var i=e.xmlDoc.responseText,r=this[n].parse(i,e);this._process_loading(r)}},t._process_loading=function(e){e.collections&&this._load_collections(e.collections),e.resources&&this.$data.resourcesStore&&this.$data.resourcesStore.parse(e.resources);var n=e.data||e.tasks;e.assignments&&function(e,n){var i={};n.forEach(function(t){i[t.task_id]||(i[t.task_id]=[]),i[t.task_id].push(t)}),e.forEach(function(e){e[t.config.resource_property]=i[e.id]||[]})}(n,e.assignments),this.$data.tasksStore.parse(n);var i=e.links||(e.collections?e.collections.links:[]);this.$data.linksStore.parse(i),this.callEvent("onParse",[]),this.render()},t._load_collections=function(t){var e=!1;for(var n in t)if(t.hasOwnProperty(n)){e=!0;var i=t[n];this.serverList[n]=this.serverList[n]||[];var r=this.serverList[n];if(!r)continue;r.splice(0,r.length);for(var a=0;a<i.length;a++){var o=i[a],s=this.copy(o);for(var l in s.key=s.value,o)if(o.hasOwnProperty(l)){if("value"==l||"label"==l)continue;s[l]=o[l]}r.push(s)}}e&&this.callEvent("onOptionsLoad",[])},t.attachEvent("onBeforeTaskDisplay",function(t,e){return!e.$ignore}),t.json={parse:function(n){if(n||e(n),"string"==typeof n)if(void 0!=("undefined"==typeof JSON?"undefined":i(JSON)))try{n=JSON.parse(n)}catch(t){e(n)}else t.assert(!1,"JSON is not supported");return n.data||n.tasks||e(n),n.dhx_security&&(t.security_key=n.dhx_security),n},serializeTask:function(t){return this._copyObject(t)},serializeLink:function(t){return this._copyLink(t)},_copyLink:function(t){var e={};for(var n in t)e[n]=t[n];return e},_copyObject:function(e){var n={};for(var i in e)"$"!=i.charAt(0)&&(n[i]=e[i],r.isDate(n[i])&&(n[i]=t.defined(t.templates.xml_format)?t.templates.xml_format(n[i]):t.templates.format_date(n[i])));return n},serialize:function(){var e=[],n=[];t.eachTask(function(n){t.resetProjectDates(n),e.push(this.serializeTask(n))},t.config.root_id,this);for(var i=t.getLinks(),r=0;r<i.length;r++)n.push(this.serializeLink(i[r]));return{data:e,links:n}}},t.xml={_xmlNodeToJSON:function(t,e){for(var n={},i=0;i<t.attributes.length;i++)n[t.attributes[i].name]=t.attributes[i].value;if(!e){for(i=0;i<t.childNodes.length;i++){var r=t.childNodes[i];1==r.nodeType&&(n[r.tagName]=r.firstChild?r.firstChild.nodeValue:"")}n.text||(n.text=t.firstChild?t.firstChild.nodeValue:"")}return n},_getCollections:function(e){for(var n={},i=t.ajax.xpath("//coll_options",e),r=0;r<i.length;r++)for(var a=n[i[r].getAttribute("for")]=[],o=t.ajax.xpath(".//item",i[r]),s=0;s<o.length;s++){for(var l=o[s].attributes,c={key:o[s].getAttribute("value"),label:o[s].getAttribute("label")},u=0;u<l.length;u++){var d=l[u];"value"!=d.nodeName&&"label"!=d.nodeName&&(c[d.nodeName]=d.nodeValue)}a.push(c)}return n},_getXML:function(e,n,i){i=i||"data",n.getXMLTopNode||(n=t.ajax.parse(n));var r=t.ajax.xmltop(i,n.xmlDoc);r&&r.tagName==i||function(e){throw t.assert(!1,"Can't parse data: incorrect value of gantt.parse or gantt.load method. Actual argument value: "+JSON.stringify(e)),new Error("Invalid argument for gantt.parse or gantt.load. An XML of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#xmldhtmlxgantt20 is expected. Actual argument value: "+JSON.stringify(e))}(e);var a=r.getAttribute("dhx_security");return a&&(t.security_key=a),r},parse:function(e,n){n=this._getXML(e,n);for(var i={},r=i.data=[],a=t.ajax.xpath("//task",n),o=0;o<a.length;o++)r[o]=this._xmlNodeToJSON(a[o]);return i.collections=this._getCollections(n),i},_copyLink:function(t){return"<item id='"+t.id+"' source='"+t.source+"' target='"+t.target+"' type='"+t.type+"' />"},_copyObject:function(t){return"<task id='"+t.id+"' parent='"+(t.parent||"")+"' start_date='"+t.start_date+"' duration='"+t.duration+"' open='"+!!t.open+"' progress='"+t.progress+"' end_date='"+t.end_date+"'><![CDATA["+t.text+"]]></task>"},serialize:function(){for(var e=[],n=[],i=t.json.serialize(),r=0,a=i.data.length;r<a;r++)e.push(this._copyObject(i.data[r]));for(r=0,a=i.links.length;r<a;r++)n.push(this._copyLink(i.links[r]));return"<data>"+e.join("")+"<coll_options for='links'>"+n.join("")+"</coll_options></data>"}},t.oldxml={parse:function(e,n){n=t.xml._getXML(e,n,"projects");for(var i={collections:{links:[]}},r=i.data=[],a=t.ajax.xpath("//task",n),o=0;o<a.length;o++){r[o]=t.xml._xmlNodeToJSON(a[o]);var s=a[o].parentNode;"project"==s.tagName?r[o].parent="project-"+s.getAttribute("id"):r[o].parent=s.parentNode.getAttribute("id")}a=t.ajax.xpath("//project",n);for(o=0;o<a.length;o++){(l=t.xml._xmlNodeToJSON(a[o],!0)).id="project-"+l.id,r.push(l)}for(o=0;o<r.length;o++){var l;(l=r[o]).start_date=l.startdate||l.est,l.end_date=l.enddate,l.text=l.name,l.duration=l.duration/8,l.open=1,l.duration||l.end_date||(l.duration=1),l.predecessortasks&&i.collections.links.push({target:l.id,source:l.predecessortasks,type:t.config.links.finish_to_start})}return i},serialize:function(){t.message("Serialization to 'old XML' is not implemented")}},t.serverList=function(t,e){return e?this.serverList[t]=e.slice(0):this.serverList[t]||(this.serverList[t]=[]),this.serverList[t]}}},function(t,e){t.exports=function(t){t.isReadonly=function(e){return"number"!=typeof e&&"string"!=typeof e||!t.isTaskExists(e)||(e=t.getTask(e)),(!e||!e[this.config.editable_property])&&(e&&e[this.config.readonly_property]||this.config.readonly)}}},function(t,e){t.exports=function(t){t.getGridColumn=function(e){for(var n=t.config.columns,i=0;i<n.length;i++)if(n[i].name==e)return n[i];return null},t.getGridColumns=function(){return t.config.columns.slice()}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){this._scrollOrder=0;var e=t.gantt,n=t.grid,i=t.dnd,r=t.getCurrentX;this.$gantt=e,this.$grid=n,this._dnd=i,this.getCurrentX=r,this._scrollView=this.$gantt.$ui.getView(this.$grid.$config.scrollX),this.attachEvents()}return t.prototype.attachEvents=function(){var t=this;this.isScrollable()&&(this._dnd.attachEvent("onDragMove",function(e,n){var i=t.$grid.$grid.getBoundingClientRect(),r=i.right,a=i.left,o=t.getCurrentX(n.clientX);return o>=r-20&&(t.autoscrollRight(),t.autoscrollStart()),o<=a+20&&(t.autoscrollLeft(),t.autoscrollStart()),o<r-20&&o>a+20&&t.autoscrollStop(),!0}),this._dnd.attachEvent("onDragEnd",function(){t.autoscrollStop()}))},t.prototype.autoscrollStart=function(){var t=this;if(0!==this._scrollOrder){var e=10*this._scrollOrder,n=this._scrollView.getScrollState();this._scrollView.scrollTo(n.position+e),setTimeout(function(){t.autoscrollStart()},50)}},t.prototype.autoscrollRight=function(){this._scrollOrder=1},t.prototype.autoscrollLeft=function(){this._scrollOrder=-1},t.prototype.autoscrollStop=function(){this._scrollOrder=0},t.prototype.getCorrection=function(){return this.isScrollable()?this._scrollView.getScrollState().position:0},t.prototype.isScrollable=function(){return!!this.$grid.$config.scrollable},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),r=n(204),a=function(){function t(t,e){var n=this;this._targetMarker=null,this.calculateCurrentPosition=function(t){var e=n.$grid.$grid.getBoundingClientRect(),i=e.right,r=e.left,a=t;return a>i&&(a=i),a<r&&(a=r),a},this.$gantt=t,this.$grid=e}return t.prototype.init=function(){var t=this.$gantt.$services.getService("dnd");this._dnd=new t(this.$grid.$grid_scale,{updates_per_second:60}),this._scrollableGrid=new r.default({gantt:this.$gantt,grid:this.$grid,dnd:this._dnd,getCurrentX:this.calculateCurrentPosition}),this.attachEvents()},t.prototype.attachEvents=function(){var t=this;this._dnd.attachEvent("onBeforeDragStart",function(e,n){if(t._draggedCell=t.$gantt.utils.dom.closest(n.target,".gantt_grid_head_cell"),t._draggedCell){var i,r,a=t.$grid.$getConfig().columns,o=t._draggedCell.getAttribute("data-column-id");return a.map(function(t,e){t.name===o&&(i=t,r=e)}),!1===t.$grid.callEvent("onBeforeColumnDragStart",[{draggedColumn:i,draggedIndex:r}])?!1:!(!t._draggedCell||!i)&&(t._gridConfig=t.$grid.$getConfig(),t._originAutoscroll=t.$gantt.config.autoscroll,t.$gantt.config.autoscroll=!1,!0)}}),this._dnd.attachEvent("onAfterDragStart",function(e,n){t._draggedCell&&(t._dnd.config.column=t._draggedCell.getAttribute("data-column-id"),t._dnd.config.marker.innerHTML=t._draggedCell.outerHTML,t._dnd.config.marker.classList.add("gantt_column_drag_marker"),t._dnd.config.marker.style.height=t._gridConfig.scale_height+"px",t._dnd.config.marker.style.lineHeight=t._gridConfig.scale_height+"px",t._draggedCell.classList.add("gantt_grid_head_cell_dragged"))}),this._dnd.attachEvent("onDragMove",function(e,n){if(t._draggedCell){t._dragX=n.clientX;var i=t.calculateCurrentPosition(n.clientX),r=t.findColumnsIndexes(),a=r.targetIndex,o=r.draggedIndex,s=t.$grid.$getConfig().columns,l=s[o],c=s[a];return!1===t.$grid.callEvent("onColumnDragMove",[{draggedColumn:l,targetColumn:c,draggedIndex:o,targetIndex:a}])?(t.cleanTargetMarker(),!1):(t.setMarkerPosition(i),t.drawTargetMarker(r),!0)}}),this._dnd.attachEvent("onDragEnd",function(){t._draggedCell&&(t.$gantt.config.autoscroll=t._originAutoscroll,t._draggedCell.classList.remove("gantt_grid_head_cell_dragged"),t.cleanTargetMarker(),t.reorderColumns())})},t.prototype.reorderColumns=function(){var t=this.findColumnsIndexes(),e=t.targetIndex,n=t.draggedIndex,i=this.$grid.$getConfig().columns,r=i[n],a=i[e];!1!==this.$grid.callEvent("onBeforeColumnReorder",[{draggedColumn:r,targetColumn:a,draggedIndex:n,targetIndex:e}])&&e!==n&&(i.splice(n,1),i.splice(e,0,r),this.$gantt.render(),this.$grid.callEvent("onAfterColumnReorder",[{draggedColumn:r,targetColumn:a,draggedIndex:n,targetIndex:e}]))},t.prototype.findColumnsIndexes=function(){var t,e,n,i,r,a=this._dnd.config.column,o=this.$grid.$getConfig().columns,s={startX:0,endX:0},l=0,c=o.length-1,u=function(t,e){return t<=e},d=function(t){return++t};this.$gantt.config.rtl&&(l=o.length-1,c=0,u=function(t,e){return t>=e},d=function(t){return--t});for(var h=this._dragX-this.$grid.$grid.getBoundingClientRect().left+this._scrollableGrid.getCorrection(),f=l;u(f,c)&&(void 0===t||void 0===e);f=d(f))o[f].hide||(s.startX=s.endX,s.endX+=o[f].width,h>=s.startX&&(h<=s.endX||!u(d(f),c))&&(t=f,n=s.startX,i=s.endX,r=(h-s.startX)/(s.endX-s.startX)),a===o[f].name&&(e=f));return{targetIndex:t,draggedIndex:e,xBefore:n,xAfter:i,columnRelativePos:r}},t.prototype.setMarkerPosition=function(t,e){void 0===e&&(e=10);var n=this._dnd.config.marker,i=this._dnd._obj.getBoundingClientRect();n.style.top=i.y+e+"px",n.style.left=t+"px"},t.prototype.drawTargetMarker=function(t){var e,n=t.targetIndex,r=t.draggedIndex,a=t.xBefore,o=t.xAfter,s=t.columnRelativePos;this._targetMarker||(this._targetMarker=document.createElement("div"),i.addClassName(this._targetMarker,"gantt_grid_target_marker"),this._targetMarker.style.display="none",this._targetMarker.style.height=this._gridConfig.scale_height+"px"),this._targetMarker.parentNode||this.$grid.$grid_scale.appendChild(this._targetMarker),e=n>r?o:n<r?a:s>.5?o:a,this._targetMarker.style.left=e+"px",this._targetMarker.style.display="block"},t.prototype.cleanTargetMarker=function(){this._targetMarker&&this._targetMarker.parentNode&&this.$grid.$grid_scale.removeChild(this._targetMarker),this._targetMarker=null},t}();e.ColumnsGridDnd=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(205);e.default=i.ColumnsGridDnd},function(t,e,n){var i=n(1);t.exports=function(t,e){var n={row_before_start:t.bind(function(t,n,r){var a=e.$getConfig(),o=e.$config.rowStore;if(!i.locateAttribute(r,a.task_grid_row_resizer_attribute))return!1;var s=this.locate(r,a.task_grid_row_resizer_attribute),l=o.getItem(s);return!1!==e.callEvent("onBeforeRowResize",[l])&&void 0},t),row_after_start:t.bind(function(t,n,i){var r=e.$getConfig(),a=this.locate(i,r.task_grid_row_resizer_attribute);t.config.marker.innerHTML="",t.config.marker.className+=" gantt_row_grid_resize_area",t.config.marker.style.width=e.$grid.offsetWidth+"px",t.config.drag_id=a},t),row_drag_move:t.bind(function(t,n,r){var a=e.$config.rowStore,o=e.$getConfig(),s=t.config,l=s.drag_id,c=e.getItemHeight(l),u=e.getItemTop(l),d=i.getNodePosition(e.$grid_data),h=parseInt(s.marker.style.top,10),f=u+d.y,_=0,g=o.min_task_grid_row_height;return(_=h-f)<g&&(_=g),s.marker.style.left=d.x+"px",s.marker.style.top=f-1+"px",s.marker.style.height=Math.abs(_)+1+"px",s.marker_height=_,e.callEvent("onRowResize",[l,a.getItem(l),_+c]),!0},t),row_drag_end:t.bind(function(n,i,r){var a=e.$config.rowStore,o=n.config,s=o.drag_id,l=a.getItem(s),c=e.getItemHeight(s),u=o.marker_height;!1!==e.callEvent("onBeforeRowResizeEnd",[s,l,u])&&l.row_height!=u&&(l.row_height=u,t.updateTask(s),e.callEvent("onAfterRowResize",[s,l,c,u]),this.render())},t)};return{init:function(){var i=t.$services.getService("dnd"),r=e.$getConfig(),a=new i(e.$grid_data,{updates_per_second:60});t.defined(r.dnd_sensitivity)&&(a.config.sensitivity=r.dnd_sensitivity),a.attachEvent("onBeforeDragStart",function(t,e){return n.row_before_start(a,t,e)}),a.attachEvent("onAfterDragStart",function(t,e){return n.row_after_start(a,t,e)}),a.attachEvent("onDragMove",function(t,e){return n.row_drag_move(a,t,e)}),a.attachEvent("onDragEnd",function(t,e){return n.row_drag_end(a,t,e)})}}}},function(t,e){t.exports=function(t){var e=-1,n=-1;return{resetCache:function(){e=-1,n=-1},_getRowHeight:function(){return-1===e&&(e=t.$getConfig().row_height),e},_refreshState:function(){this.resetCache(),n=!0;var e=t.$config.rowStore;if(e)for(var i=this._getRowHeight(),r=0;r<e.fullOrder.length;r++){var a=e.getItem(e.fullOrder[r]);if(a&&a.row_height&&a.row_height!==i){n=!1;break}}},canUseSimpleCalculation:function(){return-1===n&&this._refreshState(),n},getRowTop:function(e){return t.$config.rowStore?e*this._getRowHeight():0},getItemHeight:function(t){return this._getRowHeight()},getTotalHeight:function(){return t.$config.rowStore?t.$config.rowStore.countVisible()*this._getRowHeight():0},getItemIndexByTopPosition:function(e){return t.$config.rowStore?Math.floor(e/this._getRowHeight()):0}}}},function(t,e){t.exports=function(t,e){return{init:function(){},doOnRender:function(){}}}},function(t,e,n){var i=n(32);t.exports=function(t){n(203)(t),i.prototype.getGridColumns=function(){for(var t=this.$getConfig().columns,e=[],n=0;n<t.length;n++)t[n].hide||e.push(t[n]);return e}}},function(t,e,n){t.exports=function(t){var e=n(47),i={};t.attachEvent("onClearAll",function(){i={}});var r=e.prototype.hasChild;t.$data.tasksStore.hasChild=function(e){return t.config.branch_loading?!!r.call(this,e)||!!this.exists(e)&&this.getItem(e)[t.config.branch_loading_property]:r.call(this,e)},t.attachEvent("onTaskOpened",function(e){if(t.config.branch_loading&&t._load_url&&function(e){return!(!t.config.branch_loading||!t._load_url||i[e]||t.getChildren(e).length||!t.hasChild(e))}(e)){var n=t._load_url,r=(n=n.replace(/(\?|&)?parent_id=.+&?/,"")).indexOf("?")>=0?"&":"?",a=t.getScrollState().y||0,o={taskId:e,url:n+r+"parent_id="+encodeURIComponent(e)};if(!1===t.callEvent("onBeforeBranchLoading",[o]))return;t.load(o.url,this._load_type,function(){a&&t.scrollTo(null,a),t.callEvent("onAfterBranchLoading",[o])}),i[e]=!0}})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){t.ext=t.ext||{},t.config.show_empty_state=!1,t.ext.emptyStateElement=t.ext.emptyStateElement||{isEnabled:function(){return!0===t.config.show_empty_state},isGanttEmpty:function(){return!t.getTaskByTime().length},renderContent:function(e){var n="<div class='gantt_empty_state'><div class='gantt_empty_state_image'></div><div class='gantt_empty_state_text'>\n <div class='gantt_empty_state_text_link' data-empty-state-create-task>"+t.locale.labels.empty_state_text_link+"</div>\n <div class='gantt_empty_state_text_description'>"+t.locale.labels.empty_state_text_description+"</div>\n </div></div>";e.innerHTML=n},clickEvents:[],attachAddTaskEvent:function(){var e=t.attachEvent("onEmptyClick",function(e){t.utils.dom.closest(e.target,"[data-empty-state-create-task]")&&t.createTask({id:t.uid(),text:"New Task"})});this.clickEvents.push(e)},detachAddTaskEvents:function(){this.clickEvents.forEach(function(e){t.detachEvent(e)}),this.clickEvents=[]},getContainer:function(){if(t.$container){var e=t.utils.dom;if(t.$container.contains(t.$grid_data))return e.closest(t.$grid_data,".gantt_layout_content");if(t.$container.contains(t.$task_data))return e.closest(t.$task_data,".gantt_layout_content")}return null},getNode:function(){var t=this.getContainer();return t?t.querySelector(".gantt_empty_state_wrapper"):null},show:function(){var e=this.getContainer();if(!e&&this.isGanttEmpty())return null;var n=document.createElement("div");n.className="gantt_empty_state_wrapper",n.style.marginTop=t.config.scale_height-e.offsetHeight+"px";var i=t.$container.querySelectorAll(".gantt_empty_state_wrapper");Array.prototype.forEach.call(i,function(t){t.parentNode.removeChild(t)}),this.detachAddTaskEvents(),this.attachAddTaskEvent(),e.appendChild(n),this.renderContent(n)},hide:function(){var t=this.getNode();if(!t)return!1;t.parentNode.removeChild(t)},init:function(){}},t.attachEvent("onDataRender",function(){var e=t.ext.emptyStateElement;e.isEnabled()&&e.isGanttEmpty()?e.show():e.hide()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){var e=this;this.format=function(t){return e._getWBSCode(t.source)},this.canParse=function(t){return e._linkReg.test(t)},this.parse=function(t){if(!e.canParse(t))return null;var n=e._linkReg.exec(t)[0].trim();return{id:void 0,source:e._findSource(n)||null,target:null,type:e._gantt.config.links.finish_to_start,lag:0}},this._getWBSCode=function(t){var n=e._gantt.getTask(t);return e._gantt.getWBSCode(n)},this._findSource=function(t){var n=new RegExp("^[0-9.]+","i");if(n.exec(t)){var i=n.exec(t)[0],r=e._gantt.getTaskByWBSCode(i);if(r)return r.id}return null},this._linkReg=/^[0-9\.]+/,this._gantt=t}return t.create=function(e,n){return void 0===e&&(e=null),new t(n)},t}();e.default=i},function(t,e,n){var i=n(44).default,r=n(213).default;t.exports=function(t){t.ext.formatters={durationFormatter:function(e){return e||(e={}),e.store||(e.store=t.config.duration_unit),e.enter||(e.enter=t.config.duration_unit),i.create(e,t)},linkFormatter:function(e){return r.create(e,t)}}}},function(t,e){t.exports=function(t){function e(e){return function(){return!t.config.auto_types||t.getTaskType(t.config.types.project)!=t.config.types.project||e.apply(this,arguments)}}function n(e,n){var i=t.getTask(e),r=a(i);!1!==r&&t.getTaskType(i)!==r&&(n.$needsUpdate=!0,n[i.id]={task:i,type:r})}function i(e){if(!t.getState().group_mode){var i=function(e,i){return n(e,i=i||{}),t.eachParent(function(t){n(t.id,i)},e),i}(e);i.$needsUpdate&&t.batchUpdate(function(){!function(e){for(var n in e)if(e[n]&&e[n].task){var i=e[n].task;i.type=e[n].type,t.updateTask(i.id)}}(i)})}}var r;function a(e){var n=t.config.types,i=t.hasChild(e.id),r=t.getTaskType(e.type);return i&&r===n.task?n.project:!i&&r===n.project&&n.task}var o,s,l=!0;function c(e){e!=t.config.root_id&&t.isTaskExists(e)&&i(e)}t.attachEvent("onParse",e(function(){l=!1,t.getState().group_mode||(t.batchUpdate(function(){t.eachTask(function(e){var n=a(e);!1!==n&&function(e,n){t.getState().group_mode||(e.type=n,t.updateTask(e.id))}(e,n)})}),l=!0)})),t.attachEvent("onAfterTaskAdd",e(function(t){l&&i(t)})),t.attachEvent("onAfterTaskUpdate",e(function(t){l&&i(t)})),t.attachEvent("onBeforeTaskDelete",e(function(e,n){return r=t.getParent(e),!0})),t.attachEvent("onAfterTaskDelete",e(function(t,e){c(r)})),t.attachEvent("onRowDragStart",e(function(e,n,i){return o=t.getParent(e),!0})),t.attachEvent("onRowDragEnd",e(function(t,e){c(o),i(t)})),t.attachEvent("onBeforeTaskMove",e(function(e,n,i){return s=t.getParent(e),!0})),t.attachEvent("onAfterTaskMove",e(function(t,e,n){document.querySelector(".gantt_drag_marker")||(c(s),i(t))}))}},function(t,e){t.exports=function(t){function e(e){return function(){return!t.config.placeholder_task||e.apply(this,arguments)}}function n(){var e=t.getTaskBy("type",t.config.types.placeholder);if(!e.length||!t.isTaskExists(e[0].id)){var n={unscheduled:!0,type:t.config.types.placeholder,duration:0,text:t.locale.labels.new_task};if(!1===t.callEvent("onTaskCreated",[n]))return;t.addTask(n)}}function i(e){var n=t.getTask(e);n.type==t.config.types.placeholder&&(n.start_date&&n.end_date&&n.unscheduled&&(n.unscheduled=!1),t.batchUpdate(function(){var e=t.copy(n);t.silent(function(){t.deleteTask(n.id)}),delete e["!nativeeditor_status"],e.type=t.config.types.task,e.id=t.uid(),t.addTask(e)}))}t.config.types.placeholder="placeholder",t.attachEvent("onDataProcessorReady",e(function(n){n&&!n._silencedPlaceholder&&(n._silencedPlaceholder=!0,n.attachEvent("onBeforeUpdate",e(function(e,i,r){return r.type!=t.config.types.placeholder||(n.setUpdated(e,!1),!1)})))}));var r=!1;function a(e){if(t.config.types.placeholder&&t.isTaskExists(e)&&t.getTask(e).type==t.config.types.placeholder)return!0;return!1}function o(t){return!(!a(t.source)&&!a(t.target))}t.attachEvent("onGanttReady",function(){r||(r=!0,t.attachEvent("onAfterTaskUpdate",e(i)),t.attachEvent("onAfterTaskAdd",e(function(e,i){i.type!=t.config.types.placeholder&&(t.getTaskBy("type",t.config.types.placeholder).forEach(function(e){t.silent(function(){t.isTaskExists(e.id)&&t.deleteTask(e.id)})}),n())})),t.attachEvent("onParse",e(n)))}),t.attachEvent("onLinkValidation",function(t){return!o(t)}),t.attachEvent("onBeforeLinkAdd",function(t,e){return!o(e)}),t.attachEvent("onBeforeUndoStack",function(e){for(var n=0;n<e.commands.length;n++){var i=e.commands[n];"task"===i.entity&&i.value.type===t.config.types.placeholder&&(e.commands.splice(n,1),n--)}return!0})}},function(t,e){t.exports=function(t){var e="$resourceAssignments";t.config.resource_assignment_store="resourceAssignments",t.config.process_resource_assignments=!0;var n={auto:"auto",singleValue:"singleValue",valueArray:"valueArray",resourceValueArray:"resourceValueArray",assignmentsArray:"assignmentsArray"},i=n.auto,r={fixedDates:"fixedDates",fixedDuration:"fixedDuration",default:"default"};function a(e,n){e.start_date?e.start_date=t.date.parseDate(e.start_date,"parse_date"):e.start_date=null,e.end_date?e.end_date=t.date.parseDate(e.end_date,"parse_date"):e.end_date=null;var i=Number(e.delay),a=!1;if(isNaN(i)?(e.delay=0,a=!0):e.delay=i,t.defined(e.value)||(e.value=null),!e.task_id||!e.resource_id)return!1;if(e.mode=e.mode||r.default,e.mode===r.fixedDuration&&(isNaN(Number(e.duration))&&(n=n||t.getTask(e.task_id),e.duration=t.calculateDuration({start_date:e.start_date,end_date:e.end_date,id:n})),a&&(n=n||t.getTask(e.task_id),e.delay=t.calculateDuration({start_date:n.start_date,end_date:e.start_date,id:n}))),e.mode!==r.fixedDates&&(n||t.isTaskExists(e.task_id))){var o=s(e,n=n||t.getTask(e.task_id));e.start_date=o.start_date,e.end_date=o.end_date,e.duration=o.duration}}var o=t.createDatastore({name:t.config.resource_assignment_store,initItem:function(e){return e.id||(e.id=t.uid()),a(e),e}});function s(e,n){if(e.mode===r.fixedDates)return{start_date:e.start_date,end_date:e.end_date,duration:e.duration};var i,a,o=e.delay?t.calculateEndDate({start_date:n.start_date,duration:e.delay,task:n}):new Date(n.start_date);return e.mode===r.fixedDuration?(i=t.calculateEndDate({start_date:o,duration:e.duration,task:n}),a=e.duration):(i=new Date(n.end_date),a=n.duration-e.delay),{start_date:o,end_date:i,duration:a}}function l(e){var o=t.config.resource_property,s=e[o],l=[],c=i===n.auto;if(t.defined(s)&&s){Array.isArray(s)||(s=[s],c&&(i=n.singleValue,c=!1));var u={};s.forEach(function(o){o.resource_id||(o={resource_id:o},c&&(i=n.valueArray,c=!1)),c&&(o.id&&o.resource_id?(i=n.assignmentsArray,c=!1):(i=n.resourceValueArray,c=!1));var s,d=r.default;o.mode||(o.start_date&&o.end_date||o.start_date&&o.duration)&&(d=r.fixedDuration),s=o.id||!o.$id||u[o.$id]?o.id&&!u[o.id]?o.id:t.uid():o.$id,u[s]=!0;var h={id:s,start_date:o.start_date,duration:o.duration,end_date:o.end_date,delay:o.delay,task_id:e.id,resource_id:o.resource_id,value:o.value,mode:o.mode||d};h.start_date&&h.start_date.getMonth&&h.end_date&&h.end_date.getMonth&&"number"==typeof h.duration||a(h,e),l.push(h)})}return l}function c(e){if(t.isTaskExists(e)){var n=t.getTask(e);u(n,t.getTaskAssignments(n.id))}}function u(r,a){a.sort(function(t,e){return t.start_date&&e.start_date&&t.start_date.valueOf()!=e.start_date.valueOf()?t.start_date-e.start_date:0}),i==n.assignmentsArray?r[t.config.resource_property]=a:i==n.resourceValueArray&&(r[t.config.resource_property]=a.map(function(t){return{$id:t.id,start_date:t.start_date,duration:t.duration,end_date:t.end_date,delay:t.delay,resource_id:t.resource_id,value:t.value,mode:t.mode}})),r[e]=a}function d(e){var n=l(e),i=[];return n.forEach(function(e){e.id=e.id||t.uid(),i.push(e)}),n}function h(t,e){var a=function(t,e){var r={inBoth:[],inTaskNotInStore:[],inStoreNotInTask:[]};if(i==n.singleValue){var a=t[0],o=a?a.resource_id:null,s=!1;e.forEach(function(t){t.resource_id!=o?r.inStoreNotInTask.push(t):t.resource_id==o&&(r.inBoth.push({store:t,task:a}),s=!0)}),!s&&a&&r.inTaskNotInStore.push(a)}else if(i==n.valueArray){var l={},c={},u={};t.forEach(function(t){l[t.resource_id]=t}),e.forEach(function(t){c[t.resource_id]=t}),t.concat(e).forEach(function(t){if(!u[t.resource_id]){u[t.resource_id]=!0;var e=l[t.resource_id],n=c[t.resource_id];e&&n?r.inBoth.push({store:n,task:e}):e&&!n?r.inTaskNotInStore.push(e):!e&&n&&r.inStoreNotInTask.push(n)}})}else i!=n.assignmentsArray&&i!=n.resourceValueArray||(l={},c={},u={},t.forEach(function(t){l[t.id||t.$id]=t}),e.forEach(function(t){c[t.id]=t}),t.concat(e).forEach(function(t){var e=t.id||t.$id;if(!u[e]){u[e]=!0;var n=l[e],i=c[e];n&&i?r.inBoth.push({store:i,task:n}):n&&!i?r.inTaskNotInStore.push(n):!n&&i&&r.inStoreNotInTask.push(i)}}));return r}(l(t),e);a.inStoreNotInTask.forEach(function(t){o.removeItem(t.id)}),a.inTaskNotInStore.forEach(function(t){o.addItem(t)}),a.inBoth.forEach(function(e){if(function(t,e){var n={id:!0};for(var i in t)if(!n[i]&&String(t[i])!==String(e[i]))return!0;return!1}(e.task,e.store))!function(t,e){var n={id:!0};for(var i in t)n[i]||(e[i]=t[i])}(e.task,e.store),o.updateItem(e.store.id);else if(e.task.start_date&&e.task.end_date&&e.task.mode!==r.fixedDates){var n=s(e.store,t);e.store.start_date.valueOf()==n.start_date.valueOf()&&e.store.end_date.valueOf()==n.end_date.valueOf()||(e.store.start_date=n.start_date,e.store.end_date=n.end_date,e.store.duration=n.duration,o.updateItem(e.store.id))}}),c(t.id)}function f(t){var n=t[e]||o.find(function(e){return e.task_id==t.id});h(t,n)}t.$data.assignmentsStore=o,t.attachEvent("onGanttReady",function(){if(t.config.process_resource_assignments){t.attachEvent("onParse",function(){t.silent(function(){o.clearAll();var e=[];t.eachTask(function(n){if(n.type!==t.config.types.project){var i=d(n);u(n,i),i.forEach(function(t){e.push(t)})}}),o.parse(e)})});var e=!1,n=!1,i={},r=!1;t.attachEvent("onBeforeBatchUpdate",function(){e=!0}),t.attachEvent("onAfterBatchUpdate",function(){if(n){var r={};for(var a in i)r[a]=t.getTaskAssignments(i[a].id);for(var a in i)h(i[a],r[a])}n=!1,e=!1,i={}}),t.attachEvent("onTaskCreated",function(t){var e=d(t);return o.parse(e),u(t,e),!0}),t.attachEvent("onAfterTaskUpdate",function(t,r){e?(n=!0,i[t]=r):f(r)}),t.attachEvent("onAfterTaskAdd",function(t,r){e?(n=!0,i[t]=r):f(r)}),t.attachEvent("onRowDragEnd",function(e){f(t.getTask(e))}),t.$data.tasksStore.attachEvent("onAfterDeleteConfirmed",function(e,n){var i=[e];t.eachTask(function(t){i.push(t.id)},e),function(t){var e={};t.forEach(function(t){e[t]=!0}),o.find(function(t){return e[t.task_id]}).forEach(function(t){o.removeItem(t.id)})}(i)}),t.$data.tasksStore.attachEvent("onClearAll",function(){return a=null,s=null,l=null,o.clearAll(),!0}),t.attachEvent("onTaskIdChange",function(t,e){o.find(function(e){return e.task_id==t}).forEach(function(t){t.task_id=e,o.updateItem(t.id)}),c(e)}),t.attachEvent("onBeforeUndo",function(t){return r=!0,!0}),t.attachEvent("onAfterUndo",function(t){r=!0});var a=null,s=null,l=null;o.attachEvent("onStoreUpdated",function(){return!(!e||r)||(a=null,s=null,l=null,!0)}),t.getResourceAssignments=function(e,n){var i=t.defined(n)&&null!==n;return null===a&&(a={},s={},o.eachItem(function(t){a[t.resource_id]||(a[t.resource_id]=[]),a[t.resource_id].push(t);var e=t.resource_id+"-"+t.task_id;s[e]||(s[e]=[]),s[e].push(t)})),i?(s[e+"-"+n]||[]).slice():(a[e]||[]).slice()},t.getTaskAssignments=function(t){if(null===l){var e=[];l={},o.eachItem(function(n){l[n.task_id]||(l[n.task_id]=[]),l[n.task_id].push(n),n.task_id==t&&e.push(n)})}return(l[t]||[]).slice()},t.getTaskResources=function(e){var n=t.getDatastore("resource"),i={};t.getTaskAssignments(e).forEach(function(t){i[t.resource_id]||(i[t.resource_id]=t.resource_id)});var r=[];for(var a in i){var o=n.getItem(i[a]);o&&r.push(o)}return r},t.updateTaskAssignments=c}},{once:!0})}},function(t,e,n){var i=n(2);function r(t){var e={},n=!1;t.$data.tasksStore.attachEvent("onStoreUpdated",function(){e={},n=!1}),t.attachEvent("onBeforeGanttRender",function(){e={}});var r=String(Math.random());function a(t){return null===t?r+String(t):String(t)}function o(t,e,n){return Array.isArray(t)?t.map(function(t){return a(t)}).join("_")+"_".concat(e,"_").concat(n):a(t)+"_".concat(e,"_").concat(n)}function s(r,s,l){var c,u=o(s,r,JSON.stringify(l)),d={};return i.forEach(s,function(t){d[a(t)]=!0}),e[u]?c=e[u]:(c=e[u]=[],t.eachTask(function(s){if(l){if(!l[t.getTaskType(s)])return}else if(s.type==t.config.types.project)return;var u;r in s&&(u=i.isArray(s[r])?s[r]:[s[r]],i.forEach(u,function(t){var i=t&&t.resource_id?t.resource_id:t;if(d[a(i)])c.push(s);else if(!n){var l=o(t,r);e[l]||(e[l]=[]),e[l].push(s)}}))}),n=!0),c}function l(e,n,i){var r=t.config.resource_property,a=[];if(t.getDatastore("task").exists(n)){var o=t.getTask(n);a=o[r]||[]}Array.isArray(a)||(a=[a]);for(var s=0;s<a.length;s++)a[s].resource_id==e&&i.push({task_id:o.id,resource_id:a[s].resource_id,value:a[s].value})}return{getTaskBy:function(e,n,r){return"function"==typeof e?function(e){var n=[];return t.eachTask(function(t){e(t)&&n.push(t)}),n}(e):i.isArray(n)?s(e,n,r):s(e,[n],r)},getResourceAssignments:function(e,n){var i=[],r=t.config.resource_property;return void 0!==n?l(e,n,i):t.getTaskBy(r,e).forEach(function(t){l(e,t.id,i)}),i}}}t.exports=function(t){var e=r(t);t.ext.resources=function(t){var e={renderEditableLabel:function(e,n,i,r,a){var o=t.config.readonly?"":"contenteditable";if(e<i.end_date&&n>i.start_date){for(var s=0;s<a.length;s++){var l=a[s];return"<div "+o+" data-assignment-cell data-assignment-id='"+l.id+"' data-row-id='"+i.id+"' data-task='"+i.$task_id+"' data-start-date='"+t.templates.format_date(e)+"' data-end-date='"+t.templates.format_date(n)+"'>"+l.value+"</div>"}return"<div "+o+" data-assignment-cell data-empty data-row-id='"+i.id+"' data-resource-id='"+i.$resource_id+"' data-task='"+i.$task_id+"' data-start-date='"+t.templates.format_date(e)+"'' data-end-date='"+t.templates.format_date(n)+"'>-</div>"}return""},renderSummaryLabel:function(t,e,n,i,r){var a=r.reduce(function(t,e){return t+Number(e.value)},0);return a%1&&(a=Math.round(10*a)/10),a?"<div>"+a+"</div>":""},editableResourceCellTemplate:function(t,n,i,r,a){return"task"===i.$role?e.renderEditableLabel(t,n,i,r,a):e.renderSummaryLabel(t,n,i,r,a)},editableResourceCellClass:function(t,e,n,i,r){var a=[];a.push("resource_marker"),"task"===n.$role?a.push("task_cell"):a.push("resource_cell");var o=r.reduce(function(t,e){return t+Number(e.value)},0),s=Number(n.capacity);return isNaN(s)&&(s=8),o<=s?a.push("workday_ok"):a.push("workday_over"),a.join(" ")},getSummaryResourceAssignments:function(e){var n,i=t.getDatastore(t.config.resource_store),r=i.getItem(e);return"task"===r.$role?n=t.getResourceAssignments(r.$resource_id,r.$task_id):(n=t.getResourceAssignments(e),i.eachItem&&i.eachItem(function(e){"task"!==e.$role&&(n=n.concat(t.getResourceAssignments(e.id)))},e)),n},initEditableDiagram:function(){t.config.resource_render_empty_cells=!0,function(){var e=null;function n(){return e&&cancelAnimationFrame(e),e=requestAnimationFrame(function(){Array.prototype.slice.call(t.$container.querySelectorAll(".resourceTimeline_cell [data-assignment-cell]")).forEach(function(t){t.contentEditable=!0})}),!0}t.attachEvent("onGanttReady",function(){t.getDatastore(t.config.resource_assignment_store).attachEvent("onStoreUpdated",n),t.getDatastore(t.config.resource_store).attachEvent("onStoreUpdated",n)},{once:!0}),t.attachEvent("onGanttLayoutReady",function(){t.$layout.getCellsByType("viewCell").forEach(function(t){t.$config&&"resourceTimeline"===t.$config.view&&t.$content&&t.$content.attachEvent("onScroll",n)})})}(),t.attachEvent("onGanttReady",function(){var e=!1;t.event(t.$container,"keypress",function(t){var e=t.target.closest(".resourceTimeline_cell [data-assignment-cell]");e&&(13!==t.keyCode&&27!==t.keyCode||e.blur())}),t.event(t.$container,"focusout",function(n){if(!e){e=!0,setTimeout(function(){e=!1},300);var i=n.target.closest(".resourceTimeline_cell [data-assignment-cell]");if(i){var r=(i.innerText||"").trim();"-"==r&&(r="0");var a=Number(r),o=i.getAttribute("data-row-id"),s=i.getAttribute("data-assignment-id"),l=i.getAttribute("data-task"),c=i.getAttribute("data-resource-id"),u=t.templates.parse_date(i.getAttribute("data-start-date")),d=t.templates.parse_date(i.getAttribute("data-end-date")),h=t.getDatastore(t.config.resource_assignment_store);if(isNaN(a))t.getDatastore(t.config.resource_store).refresh(o);else{var f=t.getTask(l);if(t.plugins().undo&&t.ext.undo.saveState(l,"task"),s){if(a===(g=h.getItem(s)).value)return;if(g.start_date.valueOf()===u.valueOf()&&g.end_date.valueOf()===d.valueOf())g.value=a,a?h.updateItem(g.id):h.removeItem(g.id);else{if(g.end_date.valueOf()>d.valueOf()){var _=t.copy(g);_.id=t.uid(),_.start_date=d,_.duration=t.calculateDuration({start_date:_.start_date,end_date:_.end_date,task:f}),_.delay=t.calculateDuration({start_date:f.start_date,end_date:_.start_date,task:f}),_.mode=g.mode||"default",0!==_.duration&&h.addItem(_)}g.start_date.valueOf()<u.valueOf()?(g.end_date=u,g.duration=t.calculateDuration({start_date:g.start_date,end_date:g.end_date,task:f}),g.mode="fixedDuration",0===g.duration?h.removeItem(g.id):h.updateItem(g.id)):h.removeItem(g.id),a&&h.addItem({task_id:g.task_id,resource_id:g.resource_id,value:a,start_date:u,end_date:d,duration:t.calculateDuration({start_date:u,end_date:d,task:f}),delay:t.calculateDuration({start_date:f.start_date,end_date:u,task:f}),mode:"fixedDuration"})}t.updateTaskAssignments(f.id),t.updateTask(f.id)}else if(a){var g={task_id:l,resource_id:c,value:a,start_date:u,end_date:d,duration:t.calculateDuration({start_date:u,end_date:d,task:f}),delay:t.calculateDuration({start_date:f.start_date,end_date:u,task:f}),mode:"fixedDuration"};h.addItem(g),t.updateTaskAssignments(f.id),t.updateTask(f.id)}}}}})},{once:!0})}};return e}(t),t.config.resources={dataprocessor_assignments:!1,dataprocessor_resources:!1,editable_resource_diagram:!1,resource_store:{type:"treeDataStore",fetchTasks:!1,initItem:function(e){return e.parent=e.parent||t.config.root_id,e[t.config.resource_property]=e.parent,e.open=!0,e}},lightbox_resources:function(e){var n=[],i=t.getDatastore(t.config.resource_store);return e.forEach(function(e){if(!i.hasChild(e.id)){var r=t.copy(e);r.key=e.id,r.label=e.text,n.push(r)}}),n}},t.attachEvent("onBeforeGanttReady",function(){if(!t.getDatastore(t.config.resource_store)){var e=t.config.resources?t.config.resources.resource_store:void 0,n=e?e.fetchTasks:void 0;t.config.resources&&t.config.resources.editable_resource_diagram&&(n=!0);var i=function(e){return e.parent=e.parent||t.config.root_id,e[t.config.resource_property]=e.parent,e.open=!0,e};e&&e.initItem&&(i=e.initItem);var r=e&&e.type?e.type:"treeDatastore";t.$resourcesStore=t.createDatastore({name:t.config.resource_store,type:r,fetchTasks:void 0!==n&&n,initItem:i}),t.$data.resourcesStore=t.$resourcesStore,t.$resourcesStore.attachEvent("onParse",function(){var e=function(e){var n=[];return e.forEach(function(e){if(!t.$resourcesStore.hasChild(e.id)){var i=t.copy(e);i.key=e.id,i.label=e.text,n.push(i)}}),n};t.config.resources&&t.config.resources.lightbox_resources&&(e=t.config.resources.lightbox_resources);var n=e(t.$resourcesStore.getItems());t.updateCollection("resourceOptions",n)})}}),t.getTaskBy=e.getTaskBy,t.getResourceAssignments=e.getResourceAssignments,t.config.resource_property="owner_id",t.config.resource_store="resource",t.config.resource_render_empty_cells=!1,t.templates.histogram_cell_class=function(t,e,n,i,r){},t.templates.histogram_cell_label=function(t,e,n,i,r){return i.length+"/3"},t.templates.histogram_cell_allocated=function(t,e,n,i,r){return i.length/3},t.templates.histogram_cell_capacity=function(t,e,n,i,r){return 0};var n=function(t,e,n,i,r){return i.length<=1?"gantt_resource_marker_ok":"gantt_resource_marker_overtime"},i=function(t,e,n,i,r){return 8*i.length};t.templates.resource_cell_value=i,t.templates.resource_cell_class=n,t.attachEvent("onBeforeGanttReady",function(){t.config.resources&&t.config.resources.editable_resource_diagram&&(t.config.resource_render_empty_cells=!0,t.templates.resource_cell_value===i&&(t.templates.resource_cell_value=t.ext.resources.editableResourceCellTemplate),t.templates.resource_cell_class===n&&(t.templates.resource_cell_class=t.ext.resources.editableResourceCellClass),t.ext.resources.initEditableDiagram(t))})}},function(t,e){t.exports=function(t){var e=function(t){return{_needRecalc:!0,reset:function(){this._needRecalc=!0},_isRecalcNeeded:function(){return!this._isGroupSort()&&this._needRecalc},_isGroupSort:function(){return!!t.getState().group_mode},_getWBSCode:function(t){return t?(this._isRecalcNeeded()&&this._calcWBS(),t.$virtual?"":this._isGroupSort()?t.$wbs||"":(t.$wbs||(this.reset(),this._calcWBS()),t.$wbs)):""},_setWBSCode:function(t,e){t.$wbs=e},getWBSCode:function(t){return this._getWBSCode(t)},getByWBSCode:function(e){for(var n=e.split("."),i=t.config.root_id,r=0;r<n.length;r++){var a=t.getChildren(i),o=1*n[r]-1;if(!t.isTaskExists(a[o]))return null;i=a[o]}return t.isTaskExists(i)?t.getTask(i):null},_calcWBS:function(){if(this._isRecalcNeeded()){var e=!0;t.eachTask(function(n){if(e)return e=!1,void this._setWBSCode(n,"1");var i=t.getPrevSibling(n.id);if(null!==i){var r=t.getTask(i).$wbs;r&&((r=r.split("."))[r.length-1]++,this._setWBSCode(n,r.join(".")))}else{var a=t.getParent(n.id);this._setWBSCode(n,t.getTask(a).$wbs+".1")}},t.config.root_id,this),this._needRecalc=!1}}}}(t);function n(){return e.reset(),!0}t.getWBSCode=function(t){return e.getWBSCode(t)},t.getTaskByWBSCode=function(t){return e.getByWBSCode(t)},t.attachEvent("onAfterTaskMove",n),t.attachEvent("onBeforeParse",n),t.attachEvent("onAfterTaskDelete",n),t.attachEvent("onAfterTaskAdd",n),t.attachEvent("onAfterSort",n)}},function(t,e,n){var i=n(21);function r(t){var e={},n=!1;function r(t,n){n="function"==typeof n?n:function(){},e[t]||(e[t]=this[t],this[t]=n)}function a(t){e[t]&&(this[t]=e[t],e[t]=null)}function o(){for(var t in e)a.call(this,t)}function s(t){try{t()}catch(t){i.console.error(t)}}return t.$services.getService("state").registerProvider("batchUpdate",function(){return{batch_update:n}},!1),function(t,e){if(n)s(t);else{var i,a=this._dp&&"off"!=this._dp.updateMode;a&&(i=this._dp.updateMode,this._dp.setUpdateMode("off"));var l={},c={render:!0,refreshData:!0,refreshTask:!0,refreshLink:!0,resetProjectDates:function(t){l[t.id]=t}};for(var u in function(t){for(var e in t)r.call(this,e,t[e])}.call(this,c),n=!0,this.callEvent("onBeforeBatchUpdate",[]),s(t),this.callEvent("onAfterBatchUpdate",[]),o.call(this),l)this.resetProjectDates(l[u]);n=!1,e||this.render(),a&&(this._dp.setUpdateMode(i),this._dp.setGanttMode("task"),this._dp.sendData(),this._dp.setGanttMode("link"),this._dp.sendData())}}}t.exports=function(t){t.batchUpdate=r(t)}},function(t,e,n){t.exports=function(t){t.ext||(t.ext={});for(var e=[n(220),n(219),n(218),n(217),n(216),n(215),n(214),n(212).default],i=0;i<e.length;i++)e[i]&&e[i](t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),r=function(){function t(){var t=this;this.clear=function(){t._storage={}},this.storeItem=function(e){t._storage[e.id]=i.copy(e)},this.getStoredItem=function(e){return t._storage[e]||null},this._storage={}}return t.create=function(){return new t},t}();e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){t.getUserData=function(t,e,n){return this.userdata||(this.userdata={}),this.userdata[n]=this.userdata[n]||{},this.userdata[n][t]&&this.userdata[n][t][e]?this.userdata[n][t][e]:""},t.setUserData=function(t,e,n,i){this.userdata||(this.userdata={}),this.userdata[i]=this.userdata[i]||{},this.userdata[i][t]=this.userdata[i][t]||{},this.userdata[i][t][e]=n},t._change_id=function(t,e){switch(this._dp._ganttMode){case"task":this.changeTaskId(t,e);break;case"link":this.changeLinkId(t,e);break;case"assignment":this.$data.assignmentsStore.changeId(t,e);break;case"resource":this.$data.resourcesStore.changeId(t,e);break;default:throw new Error("Invalid mode of the dataProcessor after database id is received: "+this._dp._ganttMode+", new id: "+e)}},t._row_style=function(e,n){"task"===this._dp._ganttMode&&t.isTaskExists(e)&&(t.getTask(e).$dataprocessor_class=n,t.refreshTask(e))},t._delete_task=function(t,e){},t._sendTaskOrder=function(t,e){e.$drop_target&&(this._dp.setGanttMode("task"),this.getTask(t).target=e.$drop_target,this._dp.setUpdated(t,!0,"order"),delete this.getTask(t).$drop_target)},t.setDp=function(){this._dp=e},t.setDp()}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),r=function(){function t(t,e){this.$gantt=t,this.$dp=e,this._dataProcessorHandlers=[]}return t.prototype.attach=function(){var t=this,e=this.$dp,i=this.$gantt,r=n(45),a={},o=function(n){return t.clientSideDelete(n,e,i)};this._dataProcessorHandlers.push(i.attachEvent("onAfterTaskAdd",function(t,n){i.isTaskExists(t)&&(e.setGanttMode("tasks"),e.setUpdated(t,!0,"inserted"))})),this._dataProcessorHandlers.push(i.attachEvent("onAfterTaskUpdate",function(t,n){i.isTaskExists(t)&&(e.setGanttMode("tasks"),e.setUpdated(t,!0),i._sendTaskOrder&&i._sendTaskOrder(t,n))})),this._dataProcessorHandlers.push(i.attachEvent("onBeforeTaskDelete",function(t,n){return i.config.cascade_delete&&(a[t]={tasks:r.getSubtreeTasks(i,t),links:r.getSubtreeLinks(i,t)}),!e.deleteAfterConfirmation||(e.setGanttMode("tasks"),e.setUpdated(t,!0,"deleted"),!1)})),this._dataProcessorHandlers.push(i.attachEvent("onAfterTaskDelete",function(t,n){e.setGanttMode("tasks");var r=!o(t),s=i.config.cascade_delete&&a[t];if(r||s){if(s){var l=e.updateMode;e.setUpdateMode("off");var c=a[t];for(var u in c.tasks)o(u)||(e.storeItem(c.tasks[u]),e.setUpdated(u,!0,"deleted"));for(var u in e.setGanttMode("links"),c.links)o(u)||(e.storeItem(c.links[u]),e.setUpdated(u,!0,"deleted"));a[t]=null,"off"!==l&&e.sendAllData(),e.setGanttMode("tasks"),e.setUpdateMode(l)}r&&(e.storeItem(n),e.deleteAfterConfirmation||e.setUpdated(t,!0,"deleted")),"off"===e.updateMode||e._tSend||e.sendAllData()}})),this._dataProcessorHandlers.push(i.attachEvent("onAfterLinkUpdate",function(t,n){i.isLinkExists(t)&&(e.setGanttMode("links"),e.setUpdated(t,!0))})),this._dataProcessorHandlers.push(i.attachEvent("onAfterLinkAdd",function(t,n){i.isLinkExists(t)&&(e.setGanttMode("links"),e.setUpdated(t,!0,"inserted"))})),this._dataProcessorHandlers.push(i.attachEvent("onAfterLinkDelete",function(t,n){e.setGanttMode("links"),!o(t)&&(e.storeItem(n),e.setUpdated(t,!0,"deleted"))})),this._dataProcessorHandlers.push(i.attachEvent("onRowDragEnd",function(t,e){i._sendTaskOrder(t,i.getTask(t))}));var s=null,l=null;this._dataProcessorHandlers.push(i.attachEvent("onTaskIdChange",function(t,n){if(e._waitMode){var r=i.getChildren(n);if(r.length){s=s||{};for(var a=0;a<r.length;a++){var o=this.getTask(r[a]);s[o.id]=o}}var c=function(t){var e=[];return t.$source&&(e=e.concat(t.$source)),t.$target&&(e=e.concat(t.$target)),e}(this.getTask(n));if(c.length){l=l||{};for(a=0;a<c.length;a++){var u=this.getLink(c[a]);l[u.id]=u}}}})),e.attachEvent("onAfterUpdateFinish",function(){(s||l)&&(i.batchUpdate(function(){for(var t in s)i.updateTask(s[t].id);for(var t in l)i.updateLink(l[t].id);s=null,l=null}),s?i._dp.setGanttMode("tasks"):i._dp.setGanttMode("links"))}),e.attachEvent("onBeforeDataSending",function(){if("CUSTOM"===this._tMode)return!0;var t=this._serverProcessor;if("REST-JSON"===this._tMode||"REST"===this._tMode){var e=this._ganttMode;t=t.substring(0,t.indexOf("?")>-1?t.indexOf("?"):t.length),this.serverProcessor=t+("/"===t.slice(-1)?"":"/")+e}else{var n=this._ganttMode+"s";this.serverProcessor=t+i.ajax.urlSeparator(t)+"gantt_mode="+n}return!0}),e.attachEvent("insertCallback",function(t,e,n,r){var a=t.data||i.xml._xmlNodeToJSON(t.firstChild),o={add:i.addTask,isExist:i.isTaskExists};"links"===r&&(o.add=i.addLink,o.isExist=i.isLinkExists),o.isExist.call(i,e)||(a.id=e,o.add.call(i,a))}),e.attachEvent("updateCallback",function(t,e){var n=t.data||i.xml._xmlNodeToJSON(t.firstChild);if(i.isTaskExists(e)){var r=i.getTask(e);for(var a in n){var o=n[a];switch(a){case"id":continue;case"start_date":case"end_date":o=i.defined(i.templates.xml_date)?i.templates.xml_date(o):i.templates.parse_date(o);break;case"duration":r.end_date=i.calculateEndDate({start_date:r.start_date,duration:o,task:r})}r[a]=o}i.updateTask(e),i.refreshData()}}),e.attachEvent("deleteCallback",function(t,e,n,r){var a={delete:i.deleteTask,isExist:i.isTaskExists};"links"===r?(a.delete=i.deleteLink,a.isExist=i.isLinkExists):"assignment"===r&&(a.delete=function(t){i.$data.assignmentsStore.remove(t)},a.isExist=function(t){return i.$data.assignmentsStore.exists(t)}),a.isExist.call(i,e)&&a.delete.call(i,e)}),this.handleResourceCRUD(e,i),this.handleResourceAssignmentCRUD(e,i)},t.prototype.clientSideDelete=function(t,e,n){var i=e.updatedRows.slice(),r=!1;"true_deleted"===n.getUserData(t,"!nativeeditor_status",e._ganttMode)&&(r=!0,e.setUpdated(t,!1));for(var a=0;a<i.length&&!e._in_progress[t];a++)i[a]===t&&("inserted"===n.getUserData(t,"!nativeeditor_status",e._ganttMode)&&(r=!0),e.setUpdated(t,!1));return r},t.prototype.handleResourceAssignmentCRUD=function(t,e){var n=this;if(e.config.resources&&!0===e.config.resources.dataprocessor_assignments){var i=e.getDatastore(e.config.resource_assignment_store),r={},a={};e.attachEvent("onBeforeTaskAdd",function(t,e){return r[t]=!0,!0}),e.attachEvent("onTaskIdChange",function(t,e){delete r[t]}),i.attachEvent("onAfterAdd",function(t,e){r[e.task_id]?function(t){a[t.id]=t,r[t.task_id]=!0}(e):o(e)}),i.attachEvent("onAfterUpdate",function(e,n){i.exists(e)&&(a[e]?o(n):(t.setGanttMode("assignment"),t.setUpdated(e,!0)))}),i.attachEvent("onAfterDelete",function(i,r){t.setGanttMode("assignment"),!n.clientSideDelete(i,t,e)&&(t.storeItem(r),t.setUpdated(i,!0,"deleted"))})}function o(e){var n=e.id;i.exists(n)&&(t.setGanttMode("assignment"),t.setUpdated(n,!0,"inserted")),delete a[n]}},t.prototype.handleResourceCRUD=function(t,e){var n=this;if(e.config.resources&&!0===e.config.resources.dataprocessor_resources){var i=e.getDatastore(e.config.resource_store);i.attachEvent("onAfterAdd",function(e,n){!function(e){var n=e.id;i.exists(n)&&(t.setGanttMode("resource"),t.setUpdated(n,!0,"inserted"))}(n)}),i.attachEvent("onAfterUpdate",function(e,n){i.exists(e)&&(t.setGanttMode("resource"),t.setUpdated(e,!0))}),i.attachEvent("onAfterDelete",function(i,r){t.setGanttMode("resource"),!n.clientSideDelete(i,t,e)&&(t.storeItem(r),t.setUpdated(i,!0,"deleted"))})}},t.prototype.detach=function(){var t=this;i.forEach(this._dataProcessorHandlers,function(e){t.$gantt.detachEvent(e)}),this._dataProcessorHandlers=[]},t}();e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),r=n(2),a=n(0),o=n(224),s=n(223),l=n(222);e.createDataProcessor=function(t){var e,n;t instanceof Function?e=t:t.hasOwnProperty("router")?e=t.router:(t.hasOwnProperty("assignment")||t.hasOwnProperty("link")||t.hasOwnProperty("task"))&&(e=t),n=e?"CUSTOM":t.mode||"REST-JSON";var i=new c(t.url);return i.init(this),i.setTransactionMode({mode:n,router:e},t.batchUpdate),t.deleteAfterConfirmation&&(i.deleteAfterConfirmation=t.deleteAfterConfirmation),i};var c=function(){function t(t){this.serverProcessor=t,this.action_param="!nativeeditor_status",this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._headers=null,this._payload=null,this._postDelim="_",this._routerParametersFormat="parameters",this._waitMode=0,this._in_progress={},this._storage=l.default.create(),this._invalid={},this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),i(this)}return t.prototype.setTransactionMode=function(t,e){"object"==typeof t?(this._tMode=t.mode||this._tMode,a.defined(t.headers)&&(this._headers=t.headers),a.defined(t.payload)&&(this._payload=t.payload),this._tSend=!!e):(this._tMode=t,this._tSend=e),"REST"===this._tMode&&(this._tSend=!1),"JSON"===this._tMode||"REST-JSON"===this._tMode?(this._tSend=!1,this._serializeAsJson=!0,this._headers=this._headers||{},this._headers["Content-Type"]="application/json"):this._headers&&!this._headers["Content-Type"]&&(this._headers["Content-Type"]="application/x-www-form-urlencoded"),"CUSTOM"===this._tMode&&(this._tSend=!1,this._router=t.router)},t.prototype.escape=function(t){return this._utf?encodeURIComponent(t):escape(t)},t.prototype.enableUTFencoding=function(t){this._utf=!!t},t.prototype.getSyncState=function(){return!this.updatedRows.length},t.prototype.setUpdateMode=function(t,e){this.autoUpdate="cell"===t,this.updateMode=t,this.dnd=e},t.prototype.ignore=function(t,e){this._silent_mode=!0,t.call(e||window),this._silent_mode=!1},t.prototype.setUpdated=function(t,e,n){if(!this._silent_mode){var i=this.findRow(t);n=n||"updated";var r=this.$gantt.getUserData(t,this.action_param,this._ganttMode);r&&"updated"===n&&(n=r),e?(this.set_invalid(t,!1),this.updatedRows[i]=t,this.$gantt.setUserData(t,this.action_param,n,this._ganttMode),this._in_progress[t]&&(this._in_progress[t]="wait")):this.is_invalid(t)||(this.updatedRows.splice(i,1),this.$gantt.setUserData(t,this.action_param,"",this._ganttMode)),this.markRow(t,e,n),e&&this.autoUpdate&&this.sendData(t)}},t.prototype.markRow=function(t,e,n){var i="",r=this.is_invalid(t);if(r&&(i=this.styles[r],e=!0),this.callEvent("onRowMark",[t,e,n,r])&&(i=this.styles[e?n:"clear"]+" "+i,this.$gantt[this._methods[0]](t,i),r&&r.details)){i+=this.styles[r+"_cell"];for(var a=0;a<r.details.length;a++)r.details[a]&&this.$gantt[this._methods[1]](t,a,i)}},t.prototype.getActionByState=function(t){return"inserted"===t?"create":"updated"===t?"update":"deleted"===t?"delete":"update"},t.prototype.getState=function(t){return this.$gantt.getUserData(t,this.action_param,this._ganttMode)},t.prototype.is_invalid=function(t){return this._invalid[t]},t.prototype.set_invalid=function(t,e,n){n&&(e={value:e,details:n,toString:function(){return this.value.toString()}}),this._invalid[t]=e},t.prototype.checkBeforeUpdate=function(t){return!0},t.prototype.sendData=function(t){var e=this;if(this.$gantt.editStop&&this.$gantt.editStop(),void 0===t||this._tSend){var n=[];if(this.modes){["task","link","assignment"].forEach(function(t){e.modes[t]&&e.modes[t].updatedRows.length&&n.push(t)})}if(n.length){for(var i=0;i<n.length;i++)this.setGanttMode(n[i]),this.sendAllData();return}return this.sendAllData()}return!this._in_progress[t]&&(this.messages=[],!(!this.checkBeforeUpdate(t)&&this.callEvent("onValidationError",[t,this.messages]))&&void this._beforeSendData(this._getRowData(t),t))},t.prototype.serialize=function(t,e){if(this._serializeAsJson)return this._serializeAsJSON(t);if("string"==typeof t)return t;if(void 0!==e)return this.serialize_one(t,"");var n=[],i=[];for(var r in t)t.hasOwnProperty(r)&&(n.push(this.serialize_one(t[r],r+this._postDelim)),i.push(r));return n.push("ids="+this.escape(i.join(","))),this.$gantt.security_key&&n.push("dhx_security="+this.$gantt.security_key),n.join("&")},t.prototype.serialize_one=function(t,e){if("string"==typeof t)return t;var n=[],i="";for(var r in t)if(t.hasOwnProperty(r)){if(("id"===r||r==this.action_param)&&"REST"===this._tMode)continue;i="string"==typeof t[r]||"number"==typeof t[r]?t[r]:JSON.stringify(t[r]),n.push(this.escape((e||"")+r)+"="+this.escape(i))}return n.join("&")},t.prototype.sendAllData=function(){if(this.updatedRows.length){this.messages=[];var t=!0;if(this._forEachUpdatedRow(function(e){t=t&&this.checkBeforeUpdate(e)}),!t&&!this.callEvent("onValidationError",["",this.messages]))return!1;this._tSend?this._sendData(this._getAllData()):this._forEachUpdatedRow(function(t){if(!this._in_progress[t]){if(this.is_invalid(t))return;this._beforeSendData(this._getRowData(t),t)}})}},t.prototype.findRow=function(t){var e=0;for(e=0;e<this.updatedRows.length&&t!=this.updatedRows[e];e++);return e},t.prototype.defineAction=function(t,e){this._uActions||(this._uActions={}),this._uActions[t]=e},t.prototype.afterUpdateCallback=function(t,e,n,i,r){var a=this;if(this.$gantt){this.setGanttMode(r);var o=t,s="error"!==n&&"invalid"!==n;if(s||this.set_invalid(t,n),this._uActions&&this._uActions[n]&&!this._uActions[n](i))return delete this._in_progress[o];"wait"!==this._in_progress[o]&&this.setUpdated(t,!1);var l=t;switch(n){case"inserted":case"insert":e!=t&&(this.setUpdated(t,!1),this.$gantt[this._methods[2]](t,e),t=e);break;case"delete":case"deleted":if(this.deleteAfterConfirmation&&"task"===this._ganttMode){if("task"===this._ganttMode&&this.$gantt.isTaskExists(t)){this.$gantt.setUserData(t,this.action_param,"true_deleted",this._ganttMode);var c=this.$gantt.getTask(t);this.$gantt.silent(function(){a.$gantt.deleteTask(t)}),this.$gantt.callEvent("onAfterTaskDelete",[t,c]),this.$gantt.render(),delete this._in_progress[o]}return this.callEvent("onAfterUpdate",[t,n,e,i])}return this.$gantt.setUserData(t,this.action_param,"true_deleted",this._ganttMode),this.$gantt[this._methods[3]](t),delete this._in_progress[o],this.callEvent("onAfterUpdate",[t,n,e,i])}"wait"!==this._in_progress[o]?(s&&this.$gantt.setUserData(t,this.action_param,"",this._ganttMode),delete this._in_progress[o]):(delete this._in_progress[o],this.setUpdated(e,!0,this.$gantt.getUserData(t,this.action_param,this._ganttMode))),this.callEvent("onAfterUpdate",[l,n,e,i])}},t.prototype.afterUpdate=function(t,e,n){var i,r=this;i=3===arguments.length?arguments[1]:arguments[4];var a=this.getGanttMode(),o=i.filePath||i.url;a="REST"!==this._tMode&&"REST-JSON"!==this._tMode?-1!==o.indexOf("gantt_mode=links")?"link":-1!==o.indexOf("gantt_mode=assignments")?"assignment":"task":o.indexOf("/link")>=0?"link":o.indexOf("/assignment")>=0?"assignment":"task",this.setGanttMode(a);var s,l=this.$gantt.ajax;try{s=JSON.parse(e.xmlDoc.responseText)}catch(t){e.xmlDoc.responseText.length||(s={})}var c=function(e){var n=s.action||r.getState(e)||"updated",i=s.sid||e[0],o=s.tid||e[0];t.afterUpdateCallback(i,o,n,s,a)};if(s)return Array.isArray(n)&&n.length>1?n.forEach(function(t){return c(t)}):c(n),t.finalizeUpdate(),void this.setGanttMode(a);var u=l.xmltop("data",e.xmlDoc);if(!u)return this.cleanUpdate(n);var d=l.xpath("//data/action",u);if(!d.length)return this.cleanUpdate(n);for(var h=0;h<d.length;h++){var f=d[h],_=f.getAttribute("type"),g=f.getAttribute("sid"),p=f.getAttribute("tid");t.afterUpdateCallback(g,p,_,f,a)}t.finalizeUpdate()},t.prototype.cleanUpdate=function(t){if(t)for(var e=0;e<t.length;e++)delete this._in_progress[t[e]]},t.prototype.finalizeUpdate=function(){this._waitMode&&this._waitMode--,this.callEvent("onAfterUpdateFinish",[]),this.updatedRows.length||this.callEvent("onFullSync",[])},t.prototype.init=function(t){if(!this._initialized){this.$gantt=t,this.$gantt._dp_init&&this.$gantt._dp_init(this),this._setDefaultTransactionMode(),this.styles={updated:"gantt_updated",order:"gantt_updated",inserted:"gantt_inserted",deleted:"gantt_deleted",delete_confirmation:"gantt_deleted",invalid:"gantt_invalid",error:"gantt_error",clear:""},this._methods=["_row_style","setCellTextStyle","_change_id","_delete_task"],s.default(this.$gantt,this);var e=new o.default(this.$gantt,this);e.attach(),this.attachEvent("onDestroy",function(){delete this.setGanttMode,delete this._getRowData,delete this.$gantt._dp,delete this.$gantt._change_id,delete this.$gantt._row_style,delete this.$gantt._delete_task,delete this.$gantt._sendTaskOrder,delete this.$gantt,e.detach()}),this.$gantt.callEvent("onDataProcessorReady",[this]),this._initialized=!0}},t.prototype.setOnAfterUpdate=function(t){this.attachEvent("onAfterUpdate",t)},t.prototype.setOnBeforeUpdateHandler=function(t){this.attachEvent("onBeforeDataSending",t)},t.prototype.setAutoUpdate=function(t,e){var n=this;t=t||2e3,this._user=e||(new Date).valueOf(),this._needUpdate=!1,this._updateBusy=!1,this.attachEvent("onAfterUpdate",this.afterAutoUpdate),this.attachEvent("onFullSync",this.fullSync),setInterval(function(){n.loadUpdate()},t)},t.prototype.afterAutoUpdate=function(t,e,n,i){return"collision"!==e||(this._needUpdate=!0,!1)},t.prototype.fullSync=function(){return this._needUpdate&&(this._needUpdate=!1,this.loadUpdate()),!0},t.prototype.getUpdates=function(t,e){var n=this.$gantt.ajax;if(this._updateBusy)return!1;this._updateBusy=!0,n.get(t,e)},t.prototype.loadUpdate=function(){var t=this,e=this.$gantt.ajax,n=this.$gantt.getUserData(0,"version",this._ganttMode),i=this.serverProcessor+e.urlSeparator(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+n].join("&");i=i.replace("editing=true&",""),this.getUpdates(i,function(n){var i=e.xpath("//userdata",n);t.$gantt.setUserData(0,"version",t._getXmlNodeValue(i[0]),t._ganttMode);var r=e.xpath("//update",n);if(r.length){t._silent_mode=!0;for(var a=0;a<r.length;a++){var o=r[a].getAttribute("status"),s=r[a].getAttribute("id"),l=r[a].getAttribute("parent");switch(o){case"inserted":t.callEvent("insertCallback",[r[a],s,l]);break;case"updated":t.callEvent("updateCallback",[r[a],s,l]);break;case"deleted":t.callEvent("deleteCallback",[r[a],s,l])}}t._silent_mode=!1}t._updateBusy=!1})},t.prototype.destructor=function(){this.callEvent("onDestroy",[]),this.detachAllEvents(),this.updatedRows=[],this._in_progress={},this._invalid={},this._storage.clear(),this._storage=null,this._headers=null,this._payload=null,delete this._initialized},t.prototype.setGanttMode=function(t){"tasks"===t?t="task":"links"===t&&(t="link");var e=this.modes||{},n=this.getGanttMode();n&&(e[n]={_in_progress:this._in_progress,_invalid:this._invalid,_storage:this._storage,updatedRows:this.updatedRows});var i=e[t];i||(i=e[t]={_in_progress:{},_invalid:{},_storage:l.default.create(),updatedRows:[]}),this._in_progress=i._in_progress,this._invalid=i._invalid,this._storage=i._storage,this.updatedRows=i.updatedRows,this.modes=e,this._ganttMode=t},t.prototype.getGanttMode=function(){return this._ganttMode},t.prototype.storeItem=function(t){this._storage.storeItem(t)},t.prototype.url=function(t){this.serverProcessor=this._serverProcessor=t},t.prototype._beforeSendData=function(t,e){if(!this.callEvent("onBeforeUpdate",[e,this.getState(e),t]))return!1;this._sendData(t,e)},t.prototype._serializeAsJSON=function(t){if("string"==typeof t)return t;var e=a.copy(t);return"REST-JSON"===this._tMode&&(delete e.id,delete e[this.action_param]),JSON.stringify(e)},t.prototype._applyPayload=function(t){var e=this.$gantt.ajax;if(this._payload)for(var n in this._payload)t=t+e.urlSeparator(t)+this.escape(n)+"="+this.escape(this._payload[n]);return t},t.prototype._cleanupArgumentsBeforeSend=function(t){var e;if(void 0===t[this.action_param])for(var n in e={},t)e[n]=this._cleanupArgumentsBeforeSend(t[n]);else e=this._cleanupItemBeforeSend(t);return e},t.prototype._cleanupItemBeforeSend=function(t){var e=null;return t&&("deleted"===t[this.action_param]?((e={}).id=t.id,e[this.action_param]=t[this.action_param]):e=t),e},t.prototype._sendData=function(t,e){var n=this;if(t){if(!this.callEvent("onBeforeDataSending",e?[e,this.getState(e),t]:[null,null,t]))return!1;e&&(this._in_progress[e]=(new Date).valueOf());var i=this.$gantt.ajax;if("CUSTOM"!==this._tMode){var r;r={callback:function(i){var r=[];if(e)r.push(e);else if(t)for(var a in t)r.push(a);return n.afterUpdate(n,i,r)},headers:this._headers};var a,o="dhx_version="+this.$gantt.getUserData(0,"version",this._ganttMode),s=this.serverProcessor+(this._user?i.urlSeparator(this.serverProcessor)+["dhx_user="+this._user,o].join("&"):""),l=this._applyPayload(s);switch(this._tMode){case"GET":a=this._cleanupArgumentsBeforeSend(t),r.url=l+i.urlSeparator(l)+this.serialize(a,e),r.method="GET";break;case"POST":a=this._cleanupArgumentsBeforeSend(t),r.url=l,r.method="POST",r.data=this.serialize(a,e);break;case"JSON":a={};var c=this._cleanupItemBeforeSend(t);for(var u in c)u!==this.action_param&&"id"!==u&&"gr_id"!==u&&(a[u]=c[u]);r.url=l,r.method="POST",r.data=JSON.stringify({id:e,action:t[this.action_param],data:a});break;case"REST":case"REST-JSON":switch(l=s.replace(/(&|\?)editing=true/,""),a="",this.getState(e)){case"inserted":r.method="POST",r.data=this.serialize(t,e);break;case"deleted":r.method="DELETE",l=l+("/"===l.slice(-1)?"":"/")+e;break;default:r.method="PUT",r.data=this.serialize(t,e),l=l+("/"===l.slice(-1)?"":"/")+e}r.url=this._applyPayload(l)}return this._waitMode++,i.query(r)}var d=this.getState(e),h=this.getActionByState(d),f=this.getGanttMode(),_=function(t){var i=d||"updated",r=e,a=e;t&&(i=t.action||d,r=t.sid||r,a=t.id||t.tid||a),n.afterUpdateCallback(r,a,i,t,f)},g=void 0;if(this._router instanceof Function)if("object"===this._routerParametersFormat){var p={entity:f,action:h,data:t,id:e};g=this._router(p)}else g=this._router(f,h,t,e);else if(this._router[f]instanceof Function)g=this._router[f](h,t,e);else{var v="Incorrect configuration of gantt.createDataProcessor",m="\nYou need to either add missing properties to the dataProcessor router object or to use a router function.\nSee https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting and https://docs.dhtmlx.com/gantt/api__gantt_createdataprocessor.html for details.";if(!this._router[f])throw new Error(v+": router for the **"+f+"** entity is not defined. "+m);switch(d){case"inserted":if(!this._router[f].create)throw new Error(v+": **create** action for the **"+f+"** entity is not defined. "+m);g=this._router[f].create(t);break;case"deleted":if(!this._router[f].delete)throw new Error(v+": **delete** action for the **"+f+"** entity is not defined. "+m);g=this._router[f].delete(e);break;default:if(!this._router[f].update)throw new Error(v+': **update**" action for the **'+f+"** entity is not defined. "+m);g=this._router[f].update(t,e)}}if(g){if(!g.then&&void 0===g.id&&void 0===g.tid&&void 0===g.action)throw new Error("Incorrect router return value. A Promise or a response object is expected");g.then?g.then(_).catch(function(t){t&&t.action?_(t):_({action:"error",value:t})}):_(g)}else _(null)}},t.prototype._forEachUpdatedRow=function(t){for(var e=this.updatedRows.slice(),n=0;n<e.length;n++){var i=e[n];this.$gantt.getUserData(i,this.action_param,this._ganttMode)&&t.call(this,i)}},t.prototype._setDefaultTransactionMode=function(){this.serverProcessor&&(this.setTransactionMode("POST",!0),this.serverProcessor+=(-1!==this.serverProcessor.indexOf("?")?"&":"?")+"editing=true",this._serverProcessor=this.serverProcessor)},t.prototype._getXmlNodeValue=function(t){return t.firstChild?t.firstChild.nodeValue:""},t.prototype._getAllData=function(){var t={},e=!1;return this._forEachUpdatedRow(function(n){if(!this._in_progress[n]&&!this.is_invalid(n)){var i=this._getRowData(n);this.callEvent("onBeforeUpdate",[n,this.getState(n),i])&&(t[n]=i,e=!0,this._in_progress[n]=(new Date).valueOf())}}),e?t:null},t.prototype._prepareDate=function(t){return this.$gantt.defined(this.$gantt.templates.xml_format)?this.$gantt.templates.xml_format(t):this.$gantt.templates.format_date(t)},t.prototype._prepareArray=function(t,e){var n=this;return e.push(t),t.map(function(t){return r.isDate(t)?n._prepareDate(t):Array.isArray(t)&&!r.arrayIncludes(e,t)?n._prepareArray(t,e):t&&"object"==typeof t&&!r.arrayIncludes(e,t)?n._prepareObject(t,e):t})},t.prototype._prepareObject=function(t,e){var n={};for(var i in e.push(t),t)if("$"!==i.substr(0,1)){var a=t[i];r.isDate(a)?n[i]=this._prepareDate(a):null===a?n[i]="":Array.isArray(a)&&!r.arrayIncludes(e,a)?n[i]=this._prepareArray(a,e):a&&"object"==typeof a&&!r.arrayIncludes(e,a)?n[i]=this._prepareObject(a,e):n[i]=a}return n},t.prototype._prepareDataItem=function(t){var e=this._prepareObject(t,[]);return e[this.action_param]=this.$gantt.getUserData(t.id,this.action_param,this._ganttMode),e},t.prototype.getStoredItem=function(t){return this._storage.getStoredItem(t)},t.prototype._getRowData=function(t){var e,n=this.$gantt;return"task"===this.getGanttMode()?n.isTaskExists(t)&&(e=this.$gantt.getTask(t)):"assignment"===this.getGanttMode()?this.$gantt.$data.assignmentsStore.exists(t)&&(e=this.$gantt.$data.assignmentsStore.getItem(t)):n.isLinkExists(t)&&(e=this.$gantt.getLink(t)),e||(e=this.getStoredItem(t)),e||(e={id:t}),this._prepareDataItem(e)},t}();e.DataProcessor=c},function(t,e,n){var i=n(225);t.exports={DEPRECATED_api:function(t){return new i.DataProcessor(t)},createDataProcessor:i.createDataProcessor,getDataProcessorModes:i.getAvailableModes}},function(t,e,n){var i=n(15);t.exports={bindDataStore:function(t,e){var n=e.getDatastore(t),r=function(t,e){var i=e.getLayers(),r=n.getItem(t);if(r&&n.isVisible(t))for(var a=0;a<i.length;a++)i[a].render_item(r)},a=function(t){for(var e=t.getLayers(),i=0;i<e.length;i++)e[i].clear();for(var r=null,a={},o=0;o<e.length;o++){var s=e[o],l=void 0;if(s.get_visible_range){var c=s.get_visible_range(n);if(void 0!==c.start&&void 0!==c.end){var u=c.start+" - "+c.end;a[u]?l=a[u]:(l=n.getIndexRange(c.start,c.end),a[u]=l)}else{if(void 0===c.ids)throw new Error("Invalid range returned from 'getVisibleRange' of the layer");l=c.ids.map(function(t){return n.getItem(t)})}}else r||(r=n.getVisibleItems()),l=r;s.prepare_data&&s.prepare_data(l),e[o].render_items(l)}},o=function(t){if(t.update_items){var e;if(t.get_visible_range){var i=t.get_visible_range(n);if(void 0!==i.start&&void 0!==i.end)e=n.getIndexRange(i.start,i.end);else{if(void 0===i.ids)throw new Error("Invalid range returned from 'getVisibleRange' of the layer");e=i.ids.map(function(t){return n.getItem(t)})}}else e=n.getVisibleItems();t.prepare_data&&t.prepare_data(e,t),t.update_items(e)}};function s(t){return!!t.$services.getService("state").getState("batchUpdate").batch_update}n.attachEvent("onStoreUpdated",function(n,r,a){if(i(e))return!0;var s=e.$services.getService("layers").getDataRender(t);s&&(s.onUpdateRequest=function(t){o(t)})}),n.attachEvent("onStoreUpdated",function(t,i,r){s(e)||(t&&"move"!=r&&"delete"!=r?(n.callEvent("onBeforeRefreshItem",[i.id]),n.callEvent("onAfterRefreshItem",[i.id])):(n.callEvent("onBeforeRefreshAll",[]),n.callEvent("onAfterRefreshAll",[])))}),n.attachEvent("onAfterRefreshAll",function(){if(i(e))return!0;var n=e.$services.getService("layers").getDataRender(t);n&&!s(e)&&a(n)}),n.attachEvent("onAfterRefreshItem",function(n){if(i(e))return!0;var a=e.$services.getService("layers").getDataRender(t);a&&r(n,a)}),n.attachEvent("onItemOpen",function(){if(i(e))return!0;e.render()}),n.attachEvent("onItemClose",function(){if(i(e))return!0;e.render()}),n.attachEvent("onIdChange",function(a,o){if(i(e))return!0;if(n.callEvent("onBeforeIdChange",[a,o]),!s(e)&&!n.isSilent()){var l=e.$services.getService("layers").getDataRender(t);l?(function(t,e,n,i){for(var r=0;r<t.length;r++)t[r].change_id(e,n)}(l.getLayers(),a,o,n.getItem(o)),r(o,l)):e.render()}})}}},function(t,e){t.exports=function(t){var e=null,n=t._removeItemInner;function i(t){e=null,this.callEvent("onAfterUnselect",[t])}return t._removeItemInner=function(t){return e==t&&i.call(this,t),e&&this.eachItem&&this.eachItem(function(t){t.id==e&&i.call(this,t.id)},t),n.apply(this,arguments)},t.attachEvent("onIdChange",function(e,n){t.getSelectedId()==e&&t.silent(function(){t.unselect(e),t.select(n)})}),{select:function(t){if(t){if(e==t)return e;if(!this._skip_refresh&&!this.callEvent("onBeforeSelect",[t]))return!1;this.unselect(),e=t,this._skip_refresh||(this.refresh(t),this.callEvent("onAfterSelect",[t]))}return e},getSelectedId:function(){return e},isSelected:function(t){return t==e},unselect:function(t){(t=t||e)&&(e=null,this._skip_refresh||(this.refresh(t),i.call(this,t)))}}}},function(t,e,n){var i=n(0);t.exports=function(){return{getLinkCount:function(){return this.$data.linksStore.count()},getLink:function(t){return this.$data.linksStore.getItem(t)},getLinks:function(){return this.$data.linksStore.getItems()},isLinkExists:function(t){return this.$data.linksStore.exists(t)},addLink:function(t){var e=this.$data.linksStore.addItem(t);return this.$data.linksStore.isSilent()&&this.$data.linksStore.fullOrder.push(e),e},updateLink:function(t,e){i.defined(e)||(e=this.getLink(t)),this.$data.linksStore.updateItem(t,e)},deleteLink:function(t){return this.$data.linksStore.removeItem(t)},changeLinkId:function(t,e){return this.$data.linksStore.changeId(t,e)}}}},function(t,e,n){var i=n(0),r=n(2).replaceValidZeroId;t.exports=function(){return{getTask:function(t){t=r(t,this.config.root_id),this.assert(t,"Invalid argument for gantt.getTask");var e=this.$data.tasksStore.getItem(t);return this.assert(e,"Task not found id="+t),e},getTaskByTime:function(t,e){var n=this.$data.tasksStore.getItems(),i=[];if(t||e){t=+t||-1/0,e=+e||1/0;for(var r=0;r<n.length;r++){var a=n[r];+a.start_date<e&&+a.end_date>t&&i.push(a)}}else i=n;return i},isTaskExists:function(t){return!(!this.$data||!this.$data.tasksStore)&&this.$data.tasksStore.exists(t)},updateTask:function(t,e){i.defined(e)||(e=this.getTask(t)),this.$data.tasksStore.updateItem(t,e),this.isTaskExists(t)&&this.refreshTask(t)},addTask:function(t,e,n){return i.defined(t.id)||(t.id=i.uid()),this.isTaskExists(t.id)&&this.getTask(t.id).$index!=t.$index?(t.start_date&&"string"==typeof t.start_date&&(t.start_date=this.date.parseDate(t.start_date,"parse_date")),t.end_date&&"string"==typeof t.end_date&&(t.end_date=this.date.parseDate(t.end_date,"parse_date")),this.$data.tasksStore.updateItem(t.id,t)):(i.defined(e)||(e=this.getParent(t)||0),this.isTaskExists(e)||(e=this.config.root_id),this.setParent(t,e),this.$data.tasksStore.addItem(t,n,e))},deleteTask:function(t){return t=r(t,this.config.root_id),this.$data.tasksStore.removeItem(t)},getTaskCount:function(){return this.$data.tasksStore.count()},getVisibleTaskCount:function(){return this.$data.tasksStore.countVisible()},getTaskIndex:function(t){return this.$data.tasksStore.getBranchIndex(t)},getGlobalTaskIndex:function(t){return t=r(t,this.config.root_id),this.assert(t,"Invalid argument"),this.$data.tasksStore.getIndexById(t)},eachTask:function(t,e,n){return this.$data.tasksStore.eachItem(i.bind(t,n||this),e)},eachParent:function(t,e,n){return this.$data.tasksStore.eachParent(i.bind(t,n||this),e)},changeTaskId:function(t,e){this.$data.tasksStore.changeId(t,e);var n=this.$data.tasksStore.getItem(e),i=[];n.$source&&(i=i.concat(n.$source)),n.$target&&(i=i.concat(n.$target));for(var r=0;r<i.length;r++){var a=this.getLink(i[r]);a.source==t&&(a.source=e),a.target==t&&(a.target=e)}},calculateTaskLevel:function(t){return this.$data.tasksStore.calculateItemLevel(t)},getNext:function(t){return this.$data.tasksStore.getNext(t)},getPrev:function(t){return this.$data.tasksStore.getPrev(t)},getParent:function(t){return this.$data.tasksStore.getParent(t)},setParent:function(t,e,n){return this.$data.tasksStore.setParent(t,e,n)},getSiblings:function(t){return this.$data.tasksStore.getSiblings(t).slice()},getNextSibling:function(t){return this.$data.tasksStore.getNextSibling(t)},getPrevSibling:function(t){return this.$data.tasksStore.getPrevSibling(t)},getTaskByIndex:function(t){var e=this.$data.tasksStore.getIdByIndex(t);return this.isTaskExists(e)?this.getTask(e):null},getChildren:function(t){return this.hasChild(t)?this.$data.tasksStore.getChildren(t).slice():[]},hasChild:function(t){return this.$data.tasksStore.hasChild(t)},open:function(t){this.$data.tasksStore.open(t)},close:function(t){this.$data.tasksStore.close(t)},moveTask:function(t,e,n){return n=r(n,this.config.root_id),this.$data.tasksStore.move.apply(this.$data.tasksStore,arguments)},sort:function(t,e,n,i){var r=!i;this.$data.tasksStore.sort(t,e,n),this.callEvent("onAfterSort",[t,e,n]),r&&this.render()}}}},function(t,e,n){var i=n(0),r=n(230),a=n(229),o=n(49),s=n(47),l=n(228),c=n(227),u=n(15),d=n(2).replaceValidZeroId;function h(){for(var t=this.$services.getService("datastores"),e=[],n=0;n<t.length;n++){var i=this.getDatastore(t[n]);i.$destroyed||e.push(i)}return e}o.default&&(o=o.default);var f=function(){return{createDatastore:function(t){var e="treedatastore"==(t.type||"").toLowerCase()?s:o;if(t){var n=this;t.openInitially=function(){return n.config.open_tree_initially},t.copyOnParse=function(){return n.config.deepcopy_on_parse}}var i=new e(t);if(this.mixin(i,l(i)),t.name){var r="datastore:"+t.name;i.attachEvent("onDestroy",function(){this.$services.dropService(r);for(var e=this.$services.getService("datastores"),n=0;n<e.length;n++)if(e[n]===t.name){e.splice(n,1);break}}.bind(this)),this.$services.dropService(r),this.$services.setService(r,function(){return i});var a=this.$services.getService("datastores");a?a.indexOf(t.name)<0&&a.push(t.name):(a=[],this.$services.setService("datastores",function(){return a}),a.push(t.name)),c.bindDataStore(t.name,this)}return i},getDatastore:function(t){return this.$services.getService("datastore:"+t)},_getDatastores:h,refreshData:function(){var t;u(this)||(t=this.getScrollState()),this.callEvent("onBeforeDataRender",[]);for(var e=h.call(this),n=0;n<e.length;n++)e[n].refresh();this.config.preserve_scroll&&!u(this)&&(t.x||t.y)&&this.scrollTo(t.x,t.y),this.callEvent("onDataRender",[])},isChildOf:function(t,e){return this.$data.tasksStore.isChildOf(t,e)},refreshTask:function(t,e){var n=this.getTask(t),i=this;function r(){if(void 0===e||e){for(var t=0;t<n.$source.length;t++)i.refreshLink(n.$source[t]);for(t=0;t<n.$target.length;t++)i.refreshLink(n.$target[t])}}if(n&&this.isTaskVisible(t))this.$data.tasksStore.refresh(t,!!this.getState("tasksDnd").drag_id||!1===e),r();else if(this.isTaskExists(t)&&this.isTaskExists(this.getParent(t))&&!this._bulk_dnd){this.refreshTask(this.getParent(t));var a=!1;this.eachParent(function(t){(a||this.isSplitTask(t))&&(a=!0)},t),a&&r()}},refreshLink:function(t){this.$data.linksStore.refresh(t,!!this.getState("tasksDnd").drag_id)},silent:function(t){var e=this;e.$data.tasksStore.silent(function(){e.$data.linksStore.silent(function(){t()})})},clearAll:function(){for(var t=h.call(this),e=0;e<t.length;e++)t[e].silent(function(){t[e].clearAll()});for(e=0;e<t.length;e++)t[e].clearAll();this._update_flags(),this.userdata={},this.callEvent("onClear",[]),this.render()},_clear_data:function(){this.$data.tasksStore.clearAll(),this.$data.linksStore.clearAll(),this._update_flags(),this.userdata={}},selectTask:function(t){var e=this.$data.tasksStore;if(!this.config.select_task)return!1;if(t=d(t,this.config.root_id)){var n=this.getSelectedId();e._skipResourceRepaint=!0,e.select(t),e._skipResourceRepaint=!1,n&&e.pull[n].$split_subtask&&n!=t&&this.refreshTask(n),e.pull[t].$split_subtask&&n!=t&&this.refreshTask(t)}return e.getSelectedId()},unselectTask:function(t){var e=this.$data.tasksStore;e.unselect(t),t&&e.pull[t].$split_subtask&&this.refreshTask(t)},isSelectedTask:function(t){return this.$data.tasksStore.isSelected(t)},getSelectedId:function(){return this.$data.tasksStore.getSelectedId()}}};t.exports={create:function(){var t=i.mixin({},f());return i.mixin(t,r()),i.mixin(t,a()),t}}},function(t,e,n){var i=n(0),r=n(231),a=n(46),o=n(16);t.exports=function(t){var e=r.create();i.mixin(t,e);var s=t.createDatastore({name:"task",type:"treeDatastore",rootId:function(){return t.config.root_id},initItem:i.bind(function(e){this.defined(e.id)||(e.id=this.uid()),e.start_date&&(e.start_date=t.date.parseDate(e.start_date,"parse_date")),e.end_date&&(e.end_date=t.date.parseDate(e.end_date,"parse_date"));var n=null;(e.duration||0===e.duration)&&(e.duration=n=1*e.duration),n&&(e.start_date&&!e.end_date?e.end_date=this.calculateEndDate(e):!e.start_date&&e.end_date&&(e.start_date=this.calculateEndDate({start_date:e.end_date,duration:-e.duration,task:e}))),e.progress=Number(e.progress)||0,this._isAllowedUnscheduledTask(e)&&this._set_default_task_timing(e),this._init_task_timing(e),e.start_date&&e.end_date&&this.correctTaskWorkTime(e),e.$source=[],e.$target=[];var r=this.$data.tasksStore.getItem(e.id);return r&&!i.defined(e.open)&&(e.$open=r.$open),void 0===e.parent&&(e.parent=this.config.root_id),e},t),getConfig:function(){return t.config}}),l=t.createDatastore({name:"link",initItem:i.bind(function(t){return this.defined(t.id)||(t.id=this.uid()),t},t)});function c(e){var n=t.isTaskVisible(e);if(!n&&t.isTaskExists(e)){var i=t.getParent(e);t.isTaskExists(i)&&t.isTaskVisible(i)&&(i=t.getTask(i),t.isSplitTask(i)&&(n=!0))}return n}function u(e){if(t.isTaskExists(e.source)){var n=t.getTask(e.source);n.$source=n.$source||[],n.$source.push(e.id)}if(t.isTaskExists(e.target)){var i=t.getTask(e.target);i.$target=i.$target||[],i.$target.push(e.id)}}function d(e){if(t.isTaskExists(e.source))for(var n=t.getTask(e.source),i=0;i<n.$source.length;i++)if(n.$source[i]==e.id){n.$source.splice(i,1);break}if(t.isTaskExists(e.target)){var r=t.getTask(e.target);for(i=0;i<r.$target.length;i++)if(r.$target[i]==e.id){r.$target.splice(i,1);break}}}function h(){for(var e=null,n=t.$data.tasksStore.getItems(),i=0,r=n.length;i<r;i++)(e=n[i]).$source=[],e.$target=[];var a=t.$data.linksStore.getItems();for(i=0,r=a.length;i<r;i++)u(a[i])}function f(t){var e=t.source,n=t.target;for(var i in t.events)!function(t,i){e.attachEvent(t,function(){return n.callEvent(i,Array.prototype.slice.call(arguments))},i)}(i,t.events[i])}t.attachEvent("onDestroy",function(){s.destructor(),l.destructor()}),t.attachEvent("onLinkValidation",function(e){if(t.isLinkExists(e.id)||"predecessor_generated"===e.id)return!0;for(var n=t.getTask(e.source).$source,i=0;i<n.length;i++){var r=t.getLink(n[i]),a=e.source==r.source,o=e.target==r.target,s=e.type==r.type;if(a&&o&&s)return!1}return!0}),s.attachEvent("onBeforeRefreshAll",function(){if(!s._skipTaskRecalculation)for(var e=s.getVisibleItems(),n=0;n<e.length;n++){var i=e[n];i.$index=n,i.$local_index=t.getTaskIndex(i.id),t.resetProjectDates(i)}}),s.attachEvent("onFilterItem",function(e,n){if(t.config.show_tasks_outside_timescale)return!0;var i=null,r=null;if(t.config.start_date&&t.config.end_date){if(t._isAllowedUnscheduledTask(n))return!0;if(i=t.config.start_date.valueOf(),r=t.config.end_date.valueOf(),+n.start_date>r||+n.end_date<+i)return!1}return!0}),s.attachEvent("onIdChange",function(e,n){t._update_flags(e,n);var i=t.getTask(n);s.isSilent()||(i.$split_subtask||i.rollup)&&t.eachParent(function(e){t.refreshTask(e.id)},n)}),s.attachEvent("onAfterUpdate",function(e){if(t._update_parents(e),t.getState("batchUpdate").batch_update)return!0;var n=s.getItem(e);n.$source||(n.$source=[]);for(var i=0;i<n.$source.length;i++)l.refresh(n.$source[i]);for(n.$target||(n.$target=[]),i=0;i<n.$target.length;i++)l.refresh(n.$target[i])}),s.attachEvent("onBeforeItemMove",function(e,n,i){return!o(e,t,s)||(console.log("The placeholder task cannot be moved to another position."),!1)}),s.attachEvent("onAfterItemMove",function(e,n,i){var r=t.getTask(e);null!==this.getNextSibling(e)?r.$drop_target=this.getNextSibling(e):null!==this.getPrevSibling(e)?r.$drop_target="next:"+this.getPrevSibling(e):r.$drop_target="next:null"}),s.attachEvent("onStoreUpdated",function(e,n,i){if("delete"==i&&t._update_flags(e,null),!t.$services.getService("state").getState("batchUpdate").batch_update){if(t.config.fit_tasks&&"paint"!==i){var r=t.getState();a(t);var o=t.getState();if(+r.min_date!=+o.min_date||+r.max_date!=+o.max_date)return t.render(),t.callEvent("onScaleAdjusted",[]),!0}"add"==i||"move"==i||"delete"==i?t.$layout&&("task"!=this.$config.name||"add"!=i&&"delete"!=i||"lightbox"!=this._skipTaskRecalculation&&(this._skipTaskRecalculation=!0),t.$layout.resize()):e||l.refresh()}}),l.attachEvent("onAfterAdd",function(t,e){u(e)}),l.attachEvent("onAfterUpdate",function(t,e){h()}),l.attachEvent("onAfterDelete",function(t,e){d(e)}),l.attachEvent("onBeforeIdChange",function(e,n){d(t.mixin({id:e},t.$data.linksStore.getItem(n))),u(t.$data.linksStore.getItem(n))}),l.attachEvent("onFilterItem",function(e,n){if(!t.config.show_links)return!1;var i=c(n.source),r=c(n.target);return!(!i||!r||t._isAllowedUnscheduledTask(t.getTask(n.source))||t._isAllowedUnscheduledTask(t.getTask(n.target)))&&t.callEvent("onBeforeLinkDisplay",[e,n])}),function(){var e=n(45),i={};t.attachEvent("onBeforeTaskDelete",function(n,r){return i[n]=e.getSubtreeLinks(t,n),!0}),t.attachEvent("onAfterTaskDelete",function(e,n){i[e]&&t.$data.linksStore.silent(function(){for(var n in i[e])t.isLinkExists(n)&&t.$data.linksStore.removeItem(n),d(i[e][n]);i[e]=null})})}(),t.attachEvent("onAfterLinkDelete",function(e,n){t.refreshTask(n.source),t.refreshTask(n.target)}),t.attachEvent("onParse",h),f({source:l,target:t,events:{onItemLoading:"onLinkLoading",onBeforeAdd:"onBeforeLinkAdd",onAfterAdd:"onAfterLinkAdd",onBeforeUpdate:"onBeforeLinkUpdate",onAfterUpdate:"onAfterLinkUpdate",onBeforeDelete:"onBeforeLinkDelete",onAfterDelete:"onAfterLinkDelete",onIdChange:"onLinkIdChange"}}),f({source:s,target:t,events:{onItemLoading:"onTaskLoading",onBeforeAdd:"onBeforeTaskAdd",onAfterAdd:"onAfterTaskAdd",onBeforeUpdate:"onBeforeTaskUpdate",onAfterUpdate:"onAfterTaskUpdate",onBeforeDelete:"onBeforeTaskDelete",onAfterDelete:"onAfterTaskDelete",onIdChange:"onTaskIdChange",onBeforeItemMove:"onBeforeTaskMove",onAfterItemMove:"onAfterTaskMove",onFilterItem:"onBeforeTaskDisplay",onItemOpen:"onTaskOpened",onItemClose:"onTaskClosed",onBeforeSelect:"onBeforeTaskSelected",onAfterSelect:"onTaskSelected",onAfterUnselect:"onTaskUnselected"}}),t.$data={tasksStore:s,linksStore:l}}},function(t,e,n){(function(n,i,r){var a,o,s;function l(t){"@babel/helpers - typeof";return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)} +var i=n(291),r=n(290),a=n(67);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(o()<e)throw new RangeError("Invalid typed array length");return l.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=l.prototype:(null===t&&(t=new l(e)),t.length=e),t}function l(t,e,n){if(!(l.TYPED_ARRAY_SUPPORT||this instanceof l))return new l(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return d(this,t)}return c(this,t,e,n)}function c(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i);l.TYPED_ARRAY_SUPPORT?(t=e).__proto__=l.prototype:t=h(t,e);return t}(t,e,n,i):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!l.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|_(e,n),r=(t=s(t,i)).write(e,n);r!==i&&(t=t.slice(0,r));return t}(t,e,n):function(t,e){if(l.isBuffer(e)){var n=0|f(e.length);return 0===(t=s(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||function(t){return t!=t}(e.length)?s(t,0):h(t,e);if("Buffer"===e.type&&a(e.data))return h(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function u(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function d(t,e){if(u(e),t=s(t,e<0?0:0|f(e)),!l.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function h(t,e){var n=e.length<0?0:0|f(e.length);t=s(t,n);for(var i=0;i<n;i+=1)t[i]=255&e[i];return t}function f(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function _(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return B(t).length;default:if(i)return F(t).length;e=(""+e).toLowerCase(),i=!0}}function g(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function p(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=l.from(e,i)),l.isBuffer(e))return 0===e.length?-1:v(t,e,n,i,r);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):v(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function v(t,e,n,i,r){var a,o=1,s=t.length,l=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,n/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(r){var u=-1;for(a=n;a<s;a++)if(c(t,a)===c(e,-1===u?0:a-u)){if(-1===u&&(u=a),a-u+1===l)return u*o}else-1!==u&&(a-=a-u),u=-1}else for(n+l>s&&(n=s-l),a=n;a>=0;a--){for(var d=!0,h=0;h<l;h++)if(c(t,a+h)!==c(e,h)){d=!1;break}if(d)return a}return-1}function m(t,e,n,i){n=Number(n)||0;var r=t.length-n;i?(i=Number(i))>r&&(i=r):i=r;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");i>a/2&&(i=a/2);for(var o=0;o<i;++o){var s=parseInt(e.substr(2*o,2),16);if(isNaN(s))return o;t[n+o]=s}return o}function y(t,e,n,i){return z(F(e,t.length-n),t,n,i)}function k(t,e,n,i){return z(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,i)}function b(t,e,n,i){return k(t,e,n,i)}function x(t,e,n,i){return z(B(e),t,n,i)}function w(t,e,n,i){return z(function(t,e){for(var n,i,r,a=[],o=0;o<t.length&&!((e-=2)<0);++o)n=t.charCodeAt(o),i=n>>8,r=n%256,a.push(r),a.push(i);return a}(e,t.length-n),t,n,i)}function S(t,e,n){return 0===e&&n===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,n))}function T(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r<n;){var a,o,s,l,c=t[r],u=null,d=c>239?4:c>223?3:c>191?2:1;if(r+d<=n)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(a=t[r+1]))&&(l=(31&c)<<6|63&a)>127&&(u=l);break;case 3:a=t[r+1],o=t[r+2],128==(192&a)&&128==(192&o)&&(l=(15&c)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=t[r+1],o=t[r+2],s=t[r+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,d=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),r+=d}return function(t){var e=t.length;if(e<=$)return String.fromCharCode.apply(String,t);var n="",i=0;for(;i<e;)n+=String.fromCharCode.apply(String,t.slice(i,i+=$));return n}(i)}e.Buffer=l,e.SlowBuffer=function(t){+t!=t&&(t=0);return l.alloc(+t)},e.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=o(),l.poolSize=8192,l._augment=function(t){return t.__proto__=l.prototype,t},l.from=function(t,e,n){return c(null,t,e,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(t,e,n){return function(t,e,n,i){return u(e),e<=0?s(t,e):void 0!==n?"string"==typeof i?s(t,e).fill(n,i):s(t,e).fill(n):s(t,e)}(null,t,e,n)},l.allocUnsafe=function(t){return d(null,t)},l.allocUnsafeSlow=function(t){return d(null,t)},l.isBuffer=function(t){return!(null==t||!t._isBuffer)},l.compare=function(t,e){if(!l.isBuffer(t)||!l.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,i=e.length,r=0,a=Math.min(n,i);r<a;++r)if(t[r]!==e[r]){n=t[r],i=e[r];break}return n<i?-1:i<n?1:0},l.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(t,e){if(!a(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return l.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var i=l.allocUnsafe(e),r=0;for(n=0;n<t.length;++n){var o=t[n];if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,r),r+=o.length}return i},l.byteLength=_,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},l.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},l.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},l.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?T(this,0,t):function(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return A(this,e,n);case"utf8":case"utf-8":return T(this,e,n);case"ascii":return C(this,e,n);case"latin1":case"binary":return E(this,e,n);case"base64":return S(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}.apply(this,arguments)},l.prototype.equals=function(t){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===l.compare(this,t)},l.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},l.prototype.compare=function(t,e,n,i,r){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,i>>>=0,r>>>=0,this===t)return 0;for(var a=r-i,o=n-e,s=Math.min(a,o),c=this.slice(i,r),u=t.slice(e,n),d=0;d<s;++d)if(c[d]!==u[d]){a=c[d],o=u[d];break}return a<o?-1:o<a?1:0},l.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},l.prototype.indexOf=function(t,e,n){return p(this,t,e,n,!0)},l.prototype.lastIndexOf=function(t,e,n){return p(this,t,e,n,!1)},l.prototype.write=function(t,e,n,i){if(void 0===e)i="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)i=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var a=!1;;)switch(i){case"hex":return m(this,t,e,n);case"utf8":case"utf-8":return y(this,t,e,n);case"ascii":return k(this,t,e,n);case"latin1":case"binary":return b(this,t,e,n);case"base64":return x(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,t,e,n);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;function C(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(127&t[r]);return i}function E(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(t[r]);return i}function A(t,e,n){var i=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>i)&&(n=i);for(var r="",a=e;a<n;++a)r+=H(t[a]);return r}function D(t,e,n){for(var i=t.slice(e,n),r="",a=0;a<i.length;a+=2)r+=String.fromCharCode(i[a]+256*i[a+1]);return r}function M(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function I(t,e,n,i,r,a){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||e<a)throw new RangeError('"value" argument is out of bounds');if(n+i>t.length)throw new RangeError("Index out of range")}function P(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,a=Math.min(t.length-n,2);r<a;++r)t[n+r]=(e&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function N(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,a=Math.min(t.length-n,4);r<a;++r)t[n+r]=e>>>8*(i?r:3-r)&255}function O(t,e,n,i,r,a){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function L(t,e,n,i,a){return a||O(t,0,n,4),r.write(t,e,n,i,23,4),n+4}function R(t,e,n,i,a){return a||O(t,0,n,8),r.write(t,e,n,i,52,8),n+8}l.prototype.slice=function(t,e){var n,i=this.length;if(t=~~t,e=void 0===e?i:~~e,t<0?(t+=i)<0&&(t=0):t>i&&(t=i),e<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),l.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=l.prototype;else{var r=e-t;n=new l(r,void 0);for(var a=0;a<r;++a)n[a]=this[a+t]}return n},l.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=this[t],r=1,a=0;++a<e&&(r*=256);)i+=this[t+a]*r;return i},l.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},l.prototype.readUInt8=function(t,e){return e||M(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||M(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||M(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=this[t],r=1,a=0;++a<e&&(r*=256);)i+=this[t+a]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},l.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var i=e,r=1,a=this[t+--i];i>0&&(r*=256);)a+=this[t+--i]*r;return a>=(r*=128)&&(a-=Math.pow(2,8*e)),a},l.prototype.readInt8=function(t,e){return e||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||M(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(t,e){e||M(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(t,e){return e||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||M(t,4,this.length),r.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||M(t,4,this.length),r.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||M(t,8,this.length),r.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||M(t,8,this.length),r.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||I(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,a=0;for(this[e]=255&t;++a<n&&(r*=256);)this[e+a]=t/r&255;return e+n},l.prototype.writeUIntBE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||I(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,a=1;for(this[e+r]=255&t;--r>=0&&(a*=256);)this[e+r]=t/a&255;return e+n},l.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):P(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):P(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):N(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);I(this,t,e,n,r-1,-r)}var a=0,o=1,s=0;for(this[e]=255&t;++a<n&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);I(this,t,e,n,r-1,-r)}var a=n-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},l.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):P(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):P(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):N(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,n){return L(this,t,e,!0,n)},l.prototype.writeFloatBE=function(t,e,n){return L(this,t,e,!1,n)},l.prototype.writeDoubleLE=function(t,e,n){return R(this,t,e,!0,n)},l.prototype.writeDoubleBE=function(t,e,n){return R(this,t,e,!1,n)},l.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,a=i-n;if(this===t&&n<e&&e<i)for(r=a-1;r>=0;--r)t[r+e]=this[r+n];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r<a;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},l.prototype.fill=function(t,e,n,i){if("string"==typeof t){if("string"==typeof e?(i=e,e=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!l.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var a;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var o=l.isBuffer(t)?t:F(new l(t,i).toString()),s=o.length;for(a=0;a<n-e;++a)this[a+e]=o[a%s]}return this};var j=/[^+\/0-9A-Za-z-_]/g;function H(t){return t<16?"0"+t.toString(16):t.toString(16)}function F(t,e){var n;e=e||1/0;for(var i=t.length,r=null,a=[],o=0;o<i;++o){if((n=t.charCodeAt(o))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&a.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&a.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;a.push(n)}else if(n<2048){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function B(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(j,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}}).call(this,n(4))},function(t,e,n){var i=n(0),r=n(5),a=n(1),o=function(){"use strict";function t(t,e,n,o){t&&(this.$container=a.toNode(t),this.$parent=t),this.$config=i.mixin(e,{headerHeight:33}),this.$gantt=o,this.$domEvents=o._createDomEventScope(),this.$id=e.id||"c"+i.uid(),this.$name="cell",this.$factory=n,r(this)}return t.prototype.destructor=function(){this.$parent=this.$container=this.$view=null,this.$gantt.$services.getService("mouseEvents").detach("click","gantt_header_arrow",this._headerClickHandler),this.$domEvents.detachAll(),this.callEvent("onDestroy",[]),this.detachAllEvents()},t.prototype.cell=function(t){return null},t.prototype.scrollTo=function(t,e){var n=this.$view;this.$config.html&&(n=this.$view.firstChild),1*t==t&&(n.scrollLeft=t),1*e==e&&(n.scrollTop=e)},t.prototype.clear=function(){this.getNode().innerHTML="",this.getNode().className="gantt_layout_content",this.getNode().style.padding="0"},t.prototype.resize=function(t){if(this.$parent)return this.$parent.resize(t);!1===t&&(this.$preResize=!0);var e=this.$container,n=e.offsetWidth,i=e.offsetHeight,r=this.getSize();e===document.body&&(n=document.body.offsetWidth,i=document.body.offsetHeight),n<r.minWidth&&(n=r.minWidth),n>r.maxWidth&&(n=r.maxWidth),i<r.minHeight&&(i=r.minHeight),i>r.maxHeight&&(i=r.maxHeight),this.setSize(n,i),this.$preResize,this.$preResize=!1},t.prototype.hide=function(){this._hide(!0),this.resize()},t.prototype.show=function(t){this._hide(!1),t&&this.$parent&&this.$parent.show(),this.resize()},t.prototype._hide=function(t){if(!0===t&&this.$view.parentNode)this.$view.parentNode.removeChild(this.$view);else if(!1===t&&!this.$view.parentNode){var e=this.$parent.cellIndex(this.$id);this.$parent.moveView(this,e)}this.$config.hidden=t},t.prototype.$toHTML=function(t,e){void 0===t&&(t=""),e=[e||"",this.$config.css||""].join(" ");var n=this.$config,i="";n.raw?t="string"==typeof n.raw?n.raw:"":(t||(t="<div class='gantt_layout_content' "+(e?" class='"+e+"' ":"")+" >"+(n.html||"")+"</div>"),n.header&&(i="<div class='gantt_layout_header'>"+(n.canCollapse?"<div class='gantt_layout_header_arrow'></div>":"")+"<div class='gantt_layout_header_content'>"+n.header+"</div></div>"));return"<div class='gantt_layout_cell "+e+"' data-cell-id='"+this.$id+"'>"+i+t+"</div>"},t.prototype.$fill=function(t,e){this.$view=t,this.$parent=e,this.init()},t.prototype.getNode=function(){return this.$view.querySelector("gantt_layout_cell")||this.$view},t.prototype.init=function(){var t=this;this._headerClickHandler=function(e){a.locateAttribute(e,"data-cell-id")==t.$id&&t.toggle()},this.$gantt.$services.getService("mouseEvents").delegate("click","gantt_header_arrow",this._headerClickHandler),this.callEvent("onReady",[])},t.prototype.toggle=function(){this.$config.collapsed=!this.$config.collapsed,this.resize()},t.prototype.getSize=function(){var t={height:this.$config.height||0,width:this.$config.width||0,gravity:this.$config.gravity||1,minHeight:this.$config.minHeight||0,minWidth:this.$config.minWidth||0,maxHeight:this.$config.maxHeight||1e11,maxWidth:this.$config.maxWidth||1e11};if(this.$config.collapsed){var e="x"===this.$config.mode;t[e?"width":"height"]=t[e?"maxWidth":"maxHeight"]=this.$config.headerHeight}return t},t.prototype.getContentSize=function(){var t=this.$lastSize.contentX;t!==1*t&&(t=this.$lastSize.width);var e=this.$lastSize.contentY;return e!==1*e&&(e=this.$lastSize.height),{width:t,height:e}},t.prototype._getBorderSizes=function(){var t={top:0,right:0,bottom:0,left:0,horizontal:0,vertical:0};return this._currentBorders&&(this._currentBorders[this._borders.left]&&(t.left=1,t.horizontal++),this._currentBorders[this._borders.right]&&(t.right=1,t.horizontal++),this._currentBorders[this._borders.top]&&(t.top=1,t.vertical++),this._currentBorders[this._borders.bottom]&&(t.bottom=1,t.vertical++)),t},t.prototype.setSize=function(t,e){this.$view.style.width=t+"px",this.$view.style.height=e+"px";var n=this._getBorderSizes(),i=e-n.vertical,r=t-n.horizontal;this.$lastSize={x:t,y:e,contentX:r,contentY:i},this.$config.header?this._sizeHeader():this._sizeContent()},t.prototype._borders={left:"gantt_layout_cell_border_left",right:"gantt_layout_cell_border_right",top:"gantt_layout_cell_border_top",bottom:"gantt_layout_cell_border_bottom"},t.prototype._setBorders=function(t,e){e||(e=this);var n=e.$view;for(var i in this._borders)a.removeClassName(n,this._borders[i]);"string"==typeof t&&(t=[t]);var r={};for(i=0;i<t.length;i++)a.addClassName(n,t[i]),r[t[i]]=!0;e._currentBorders=r},t.prototype._sizeContent=function(){var t=this.$view.childNodes[0];t&&"gantt_layout_content"==t.className&&(t.style.height=this.$lastSize.contentY+"px")},t.prototype._sizeHeader=function(){var t=this.$lastSize;t.contentY-=this.$config.headerHeight;var e=this.$view.childNodes[0],n=this.$view.childNodes[1],i="x"===this.$config.mode;if(this.$config.collapsed)if(n.style.display="none",i){e.className="gantt_layout_header collapsed_x",e.style.width=t.y+"px";var r=Math.floor(t.y/2-t.x/2);e.style.transform="rotate(90deg) translate("+r+"px, "+r+"px)",n.style.display="none"}else e.className="gantt_layout_header collapsed_y";else e.className=i?"gantt_layout_header":"gantt_layout_header vertical",e.style.width="auto",e.style.transform="",n.style.display="",n.style.height=t.contentY+"px";e.style.height=this.$config.headerHeight+"px"},t}();t.exports=o},function(t,e,n){var i=n(11);t.exports=function(t){return i.isNode||!t.$root}},function(t,e){t.exports=function(t,e,n,i){if((i=e?e.config:i)&&i.placeholder_task&&n.exists(t))return n.getItem(t).type===i.types.placeholder;return!1}},function(t,e,n){(function(t){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===i(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"===n(t)},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===i(t)},e.isObject=function(t){return"object"===n(t)&&null!==t},e.isDate=function(t){return"[object Date]"===i(t)},e.isError=function(t){return"[object Error]"===i(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"===n(t)||void 0===t},e.isBuffer=t.isBuffer}).call(this,n(13).Buffer)},function(t,e,n){var i=n(3),r=n(36);t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}return i(a,e),a.prototype.render=function(t){var e=(t.height||"23")+"px",n="<div class='gantt_cal_ltext gantt_section_"+t.name+"' style='height:"+e+";'>";return n+=r.getHtmlSelect(t.options,[{key:"style",value:"width:100%;"},{key:"title",value:t.name}]),n+="</div>"},a.prototype.set_value=function(t,e,n,i){var r=t.firstChild;!r._dhx_onchange&&i.onchange&&(r.onchange=i.onchange,r._dhx_onchange=!0),void 0===e&&(e=(r.options[0]||{}).value),r.value=e||""},a.prototype.get_value=function(t){return t.firstChild.value},a.prototype.focus=function(e){var n=e.firstChild;t._focus(n,!0)},a}},function(t,e){t.exports=function(t,e,n,i,r){if(!t.start_date||!t.end_date)return null;var a=n.getItemTop(t.id),o=n.getItemHeight(t.id);if(a>e.y_end||a+o<e.y)return!1;var s=n.posFromDate(t.start_date),l=n.posFromDate(t.end_date),c=Math.min(s,l)-200,u=Math.max(s,l)+200;return!(c>e.x_end||u<e.x)}},function(t,e){t.exports=function(t){return t.config.smart_rendering&&t._smart_render}},function(t,e,n){(function(e){var n;n="undefined"!=typeof window?window:e,t.exports=n}).call(this,n(4))},function(t,e,n){var i=n(13),r=i.Buffer;function a(t,e){for(var n in t)e[n]=t[n]}function o(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=i:(a(i,e),e.Buffer=o),a(r,o),o.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},o.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},o.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},o.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},function(t,e,n){"use strict";(function(e){!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,n,i,r){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,o,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,i)});case 4:return e.nextTick(function(){t.call(null,n,i,r)});default:for(a=new Array(s-1),o=0;o<a.length;)a[o++]=arguments[o];return e.nextTick(function(){t.apply(null,a)})}}}:t.exports=e}).call(this,n(9))},function(t,e,n){var i=n(0);t.exports={createDropTargetObject:function(t){var e={targetParent:null,targetIndex:0,targetId:null,child:!1,nextSibling:!1,prevSibling:!1};return t&&i.mixin(e,t,!0),e},nextSiblingTarget:function(t,e,n){var i=this.createDropTargetObject();return i.targetId=e,i.nextSibling=!0,i.targetParent=n.getParent(i.targetId),i.targetIndex=n.getBranchIndex(i.targetId),(n.getParent(t)!=i.targetParent||i.targetIndex<n.getBranchIndex(t))&&(i.targetIndex+=1),i},prevSiblingTarget:function(t,e,n){var i=this.createDropTargetObject();return i.targetId=e,i.prevSibling=!0,i.targetParent=n.getParent(i.targetId),i.targetIndex=n.getBranchIndex(i.targetId),n.getParent(t)==i.targetParent&&i.targetIndex>n.getBranchIndex(t)&&(i.targetIndex-=1),i},firstChildTarget:function(t,e,n){var i=this.createDropTargetObject();return i.targetId=e,i.targetParent=i.targetId,i.targetIndex=0,i.child=!0,i},lastChildTarget:function(t,e,n){var i=n.getChildren(e),r=this.createDropTargetObject();return r.targetId=i[i.length-1],r.targetParent=e,r.targetIndex=i.length,r.nextSibling=!0,r}}},function(t,e,n){var i=n(20);t.exports=function(t,e,n,r){var a=e.width[t];if(a<=0)return!1;if(!r.config.smart_rendering||i(r))return!0;var o=e.left[t]-a,s=e.left[t]+a;return o<=n.x_end&&s>=n.x}},function(t,e){t.exports=function(t,e){var n=0,i=t.left.length-1;if(e)for(var r=0;r<t.left.length;r++){var a=t.left[r];if(a<e.x&&(n=r),a>e.x_end){i=r;break}}return{start:n,end:i}}},function(t,e){t.exports=function(t,e,n){return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:0,right:1/0}}},function(t,e){t.exports=function(t){function e(e,a,o){if(!t._isAllowedUnscheduledTask(e)&&t._isTaskInTimelineLimits(e)){var s=a.getItemPosition(e),l=o,c=a.$getTemplates(),u=t.getTaskType(e.type),d=a.getBarHeight(e.id,u==l.types.milestone),h=0;u==l.types.milestone&&(h=(d-s.height)/2);var f=Math.floor((a.getItemHeight(e.id)-d)/2);u==l.types.milestone&&(s.left-=Math.round(d/2),s.width=d);var _=document.createElement("div"),g=Math.round(s.width);a.$config.item_attribute&&(_.setAttribute(a.$config.item_attribute,e.id),_.setAttribute(a.$config.bind+"_id",e.id)),l.show_progress&&u!=l.types.milestone&&function(e,n,i,r,a){var o=1*e.progress||0;i=Math.max(i-2,0);var s=document.createElement("div"),l=Math.round(i*o);l=Math.min(i,l),e.progressColor&&(s.style.backgroundColor=e.progressColor,s.style.opacity=1),s.style.width=l+"px",s.className="gantt_task_progress",s.innerHTML=a.progress_text(e.start_date,e.end_date,e),r.rtl&&(s.style.position="absolute",s.style.right="0px");var c=document.createElement("div");if(c.className="gantt_task_progress_wrapper",c.appendChild(s),n.appendChild(c),t.config.drag_progress&&!t.isReadonly(e)){var u=document.createElement("div"),d=l;r.rtl&&(d=i-l),u.style.left=d+"px",u.className="gantt_task_progress_drag",s.appendChild(u),n.appendChild(u)}}(e,_,g,l,c);var p=function(e,n,i){var r=document.createElement("div");return t.getTaskType(e.type)!=t.config.types.milestone?r.innerHTML=i.task_text(e.start_date,e.end_date,e):t.getTaskType(e.type)==t.config.types.milestone&&n&&(r.style.height=r.style.width=n+"px"),r.className="gantt_task_content",r}(e,g,c);e.textColor&&(p.style.color=e.textColor),_.appendChild(p);var v=function(e,n,i,r){var a=r.$getConfig(),o=[e];n&&o.push(n);var s=t.getState(),l=t.getTask(i);if(t.getTaskType(l.type)==a.types.milestone?o.push("gantt_milestone"):t.getTaskType(l.type)==a.types.project&&o.push("gantt_project"),o.push("gantt_bar_"+t.getTaskType(l.type)),t.isSummaryTask(l)&&o.push("gantt_dependent_task"),t.isSplitTask(l)&&(a.open_split_tasks&&!l.$open||!a.open_split_tasks)&&o.push("gantt_split_parent"),a.select_task&&t.isSelectedTask(i)&&o.push("gantt_selected"),i==s.drag_id&&(o.push("gantt_drag_"+s.drag_mode),s.touch_drag&&o.push("gantt_touch_"+s.drag_mode)),s.link_source_id==i&&o.push("gantt_link_source"),s.link_target_id==i&&o.push("gantt_link_target"),a.highlight_critical_path&&t.isCriticalTask&&t.isCriticalTask(l)&&o.push("gantt_critical_task"),s.link_landing_area&&s.link_target_id&&s.link_source_id&&s.link_target_id!=s.link_source_id&&(s.link_target_id==i||s.link_source_id==i)){var c=s.link_source_id,u=s.link_from_start,d=s.link_to_start,h=t.isLinkAllowed(c,i,u,d),f="";f=h?d?"link_start_allow":"link_finish_allow":d?"link_start_deny":"link_finish_deny",o.push(f)}return o.join(" ")}("gantt_task_line",c.task_class(e.start_date,e.end_date,e),e.id,a);(e.color||e.progressColor||e.textColor)&&(v+=" gantt_task_inline_color"),s.width<20&&(v+=" gantt_thin_task"),_.className=v;var m=["left:"+s.left+"px","top:"+(f+s.top)+"px","height:"+(u==l.types.milestone?s.height:d)+"px","line-height:"+Math.max(d<30?d-2:d,0)+"px","width:"+g+"px"];e.color&&m.push("background-color:"+e.color),e.textColor&&m.push("color:"+e.textColor),_.style.cssText=m.join(";");var y=function(t,e,r,a){var o="gantt_left "+i(!e.rtl,t),s=null;return a&&(s={type:"marginRight",value:a}),n(t,r.leftside_text,o,s)}(e,l,c,h);y&&_.appendChild(y),(y=function(t,e,r,a){var o="gantt_right "+i(!!e.rtl,t),s=null;return a&&(s={type:"marginLeft",value:a}),n(t,r.rightside_text,o,s)}(e,l,c,h))&&_.appendChild(y),t._waiAria.setTaskBarAttr(e,_);var k=t.getState();return t.isReadonly(e)||(l.drag_resize&&!t.isSummaryTask(e)&&u!=l.types.milestone&&r(_,"gantt_task_drag",e,function(t){var e=document.createElement("div");return e.className=t,e},l),l.drag_links&&l.show_links&&r(_,"gantt_link_control",e,function(t){var e=document.createElement("div");e.className=t,e.style.cssText=["height:"+d+"px","line-height:"+d+"px"].join(";");var n=document.createElement("div");n.className="gantt_link_point";var i=!1;return k.link_source_id&&l.touch&&(i=!0),n.style.display=i?"block":"",e.appendChild(n),e},l,h)),_}}function n(t,e,n,i){if(!e)return null;var r=e(t.start_date,t.end_date,t);if(!r)return null;var a=document.createElement("div");return a.className="gantt_side_content "+n,a.innerHTML=r,i&&(a.style[i.type]=Math.abs(i.value)+"px"),a}function i(e,n){var i=function(e){return e?{$source:[t.config.links.start_to_start],$target:[t.config.links.start_to_start,t.config.links.finish_to_start]}:{$source:[t.config.links.finish_to_start,t.config.links.finish_to_finish],$target:[t.config.links.finish_to_finish]}}(e);for(var r in i)for(var a=n[r],o=0;o<a.length;o++)for(var s=t.getLink(a[o]),l=0;l<i[r].length;l++)if(s.type==i[r][l])return"gantt_link_crossing";return""}function r(e,n,i,r,a,o){var s,l=t.getState();+i.start_date>=+l.min_date&&((s=r([n,a.rtl?"task_right":"task_left","task_start_date"].join(" "))).setAttribute("data-bind-property","start_date"),o&&(s.style.marginLeft=o+"px"),e.appendChild(s)),+i.end_date<=+l.max_date&&((s=r([n,a.rtl?"task_left":"task_right","task_end_date"].join(" "))).setAttribute("data-bind-property","end_date"),o&&(s.style.marginRight=o+"px"),e.appendChild(s))}return function(n,i,r){var a=(r=i.$getConfig()).type_renderers[t.getTaskType(n.type)],o=e;return a?a.call(t,n,function(e){return o.call(t,e,i,r)},i):o.call(t,n,i,r)}}},function(t,e,n){var i=n(33),r=n(5),a=n(0),o=n(2),s=n(43),l=n(128),c=function(t,e,n,o){this.$config=a.mixin({},e||{}),this.$scaleHelper=new i(o),this.$gantt=o,this._posFromDateCache={},this._timelineDragScroll=null,a.mixin(this,s(this)),r(this)};c.prototype={init:function(t){t.innerHTML+="<div class='gantt_task' style='width:inherit;height:inherit;'></div>",this.$task=t.childNodes[0],this.$task.innerHTML="<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>",this.$task_scale=this.$task.childNodes[0],this.$task_data=this.$task.childNodes[1],this.$task_data.innerHTML="<div class='gantt_task_bg'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div>",this.$task_bg=this.$task_data.childNodes[0],this.$task_links=this.$task_data.childNodes[1],this.$task_bars=this.$task_data.childNodes[2],this._tasks={col_width:0,width:[],full_width:0,trace_x:[],rendered:{}};var e=this.$getConfig(),n=e[this.$config.bind+"_attribute"],i=e[this.$config.bindLinks+"_attribute"];!n&&this.$config.bind&&(n="data-"+this.$config.bind+"-id"),!i&&this.$config.bindLinks&&(i="data-"+this.$config.bindLinks+"-id"),this.$config.item_attribute=n||null,this.$config.link_attribute=i||null;var r=this._createLayerConfig();this.$config.layers||(this.$config.layers=r.tasks),this.$config.linkLayers||(this.$config.linkLayers=r.links),this._attachLayers(this.$gantt),this.callEvent("onReady",[]),this.$gantt.ext.dragTimeline&&(this._timelineDragScroll=this.$gantt.ext.dragTimeline.create(),this._timelineDragScroll.attach(this))},setSize:function(t,e){var n=this.$getConfig();if(1*t===t&&(this.$config.width=t),1*e===e){this.$config.height=e;var i=Math.max(this.$config.height-n.scale_height);this.$task_data.style.height=i+"px"}this.refresh(),this.$task_bg.style.backgroundImage="",n.smart_rendering&&this.$config.rowStore?this.$task_bg.style.height=this.getTotalHeight()+"px":this.$task_bg.style.height="";for(var r=this._tasks,a=this.$task_data.childNodes,o=0,s=a.length;o<s;o++){var l=a[o];l.hasAttribute("data-layer")&&l.style&&(l.style.width=r.full_width+"px")}},isVisible:function(){return this.$parent&&this.$parent.$config?!this.$parent.$config.hidden:this.$task.offsetWidth},getSize:function(){var t=this.$getConfig(),e=this.$config.rowStore?this.getTotalHeight():0,n=this.isVisible()?this._tasks.full_width:0;return{x:this.isVisible()?this.$config.width:0,y:this.isVisible()?this.$config.height:0,contentX:this.isVisible()?n:0,contentY:this.isVisible()?t.scale_height+e:0,scrollHeight:this.isVisible()?e:0,scrollWidth:this.isVisible()?n:0}},scrollTo:function(t,e){if(this.isVisible()){var n=!1;this.$config.scrollTop=this.$config.scrollTop||0,this.$config.scrollLeft=this.$config.scrollLeft||0,1*e===e&&(this.$config.scrollTop=e,this.$task_data.scrollTop=this.$config.scrollTop,n=!0),1*t===t&&(this.$task.scrollLeft=t,this.$config.scrollLeft=this.$task.scrollLeft,this._refreshScales(),n=!0),n&&this.callEvent("onScroll",[this.$config.scrollLeft,this.$config.scrollTop])}},_refreshScales:function(){if(this.isVisible()&&this.$getConfig().smart_scales){var t=this.getViewPort(),e=this._scales;this.$task_scale.innerHTML=this._getScaleChunkHtml(e,t.x,t.x_end)}},getViewPort:function(){var t=this.$config.scrollLeft||0,e=this.$config.scrollTop||0,n=this.$config.height||0,i=this.$config.width||0;return{y:e,y_end:e+n,x:t,x_end:t+i,height:n,width:i}},_createLayerConfig:function(){var t=this,e=function(){return t.isVisible()};return{tasks:[{expose:!0,renderer:this.$gantt.$ui.layers.taskBar(),container:this.$task_bars,filter:[e,function(t,e){return!e.hide_bar}]},{renderer:this.$gantt.$ui.layers.taskSplitBar(),filter:[e],container:this.$task_bars,append:!0},{renderer:this.$gantt.$ui.layers.taskRollupBar(),filter:[e],container:this.$task_bars,append:!0},{renderer:this.$gantt.$ui.layers.taskBg(),container:this.$task_bg,filter:[e]}],links:[{expose:!0,renderer:this.$gantt.$ui.layers.link(),container:this.$task_links,filter:[e]}]}},_attachLayers:function(t){this._taskLayers=[],this._linkLayers=[];var e=this,n=this.$gantt.$services.getService("layers");if(this.$config.bind){this._bindStore();var i=n.getDataRender(this.$config.bind);i||(i=n.createDataRender({name:this.$config.bind,defaultContainer:function(){return e.$task_data}})),i.container=function(){return e.$task_data};for(var r=this.$config.layers,a=0;r&&a<r.length;a++){"string"==typeof(c=r[a])&&(c=this.$gantt.$ui.layers[c]()),("function"==typeof c||c&&c.render&&c.update)&&(c={renderer:c}),c.view=this;var o=i.addLayer(c);this._taskLayers.push(o),c.expose&&(this._taskRenderer=i.getLayer(o))}this._initStaticBackgroundRender()}if(this.$config.bindLinks){e.$config.linkStore=e.$gantt.getDatastore(e.$config.bindLinks);var s=n.getDataRender(this.$config.bindLinks);s||(s=n.createDataRender({name:this.$config.bindLinks,defaultContainer:function(){return e.$task_data}}));var l=this.$config.linkLayers;for(a=0;l&&a<l.length;a++){var c;"string"==typeof c&&(c=this.$gantt.$ui.layers[c]()),(c=l[a]).view=this;var u=s.addLayer(c);this._taskLayers.push(u),l[a].expose&&(this._linkRenderer=s.getLayer(u))}}},_initStaticBackgroundRender:function(){var t=this,e=l.create(),n=t.$config.rowStore;n&&(this._staticBgHandler=n.attachEvent("onStoreUpdated",function(n,i,r){if(null===n&&t.isVisible()){var a=t.$getConfig();if(a.static_background||a.timeline_placeholder){var o=t.$gantt.getDatastore(t.$config.bind),s=t.$task_bg_static;if(s||((s=document.createElement("div")).className="gantt_task_bg",t.$task_bg_static=s,t.$task_bg.nextSibling?t.$task_data.insertBefore(s,t.$task_bg.nextSibling):t.$task_data.appendChild(s)),o){var l=t.getTotalHeight();a.timeline_placeholder&&(l=a.timeline_placeholder.height||t.$task_data.offsetHeight||99999),e.render(s,a,t.getScale(),l,t.getItemHeight(i?i.id:null))}}else a.static_background&&t.$task_bg_static&&t.$task_bg_static.parentNode&&t.$task_bg_static.parentNode.removeChild(t.$task_bg_static)}}),this.attachEvent("onDestroy",function(){e.destroy()}),this._initStaticBackgroundRender=function(){})},_clearLayers:function(t){var e=this.$gantt.$services.getService("layers"),n=e.getDataRender(this.$config.bind),i=e.getDataRender(this.$config.bindLinks);if(this._taskLayers)for(var r=0;r<this._taskLayers.length;r++)n.removeLayer(this._taskLayers[r]);if(this._linkLayers)for(r=0;r<this._linkLayers.length;r++)i.removeLayer(this._linkLayers[r]);this._linkLayers=[],this._taskLayers=[]},_render_tasks_scales:function(){var t=this.$getConfig(),e="",n=0,i=0,r=this.$gantt.getState();if(this.isVisible()){var a=this.$scaleHelper,o=this._getScales();i=t.scale_height;var s=this.$config.width;"x"!=t.autosize&&"xy"!=t.autosize||(s=Math.max(t.autosize_min_width,0));var l=a.prepareConfigs(o,t.min_column_width,s,i-1,r.min_date,r.max_date,t.rtl),c=this._tasks=l[l.length-1];this._scales=l,this._posFromDateCache={},e=this._getScaleChunkHtml(l,0,this.$config.width),n=c.full_width+"px",i+="px"}this.$task_scale.style.height=i,this.$task_data.style.width=this.$task_scale.style.width=n,this.$task_scale.innerHTML=e},_getScaleChunkHtml:function(t,e,n){for(var i=[],r=this.$gantt.templates.scale_row_class,a=0;a<t.length;a++){var o="gantt_scale_line",s=r(t[a]);s&&(o+=" "+s),i.push('<div class="'+o+'" style="height:'+t[a].height+"px;position:relative;line-height:"+t[a].height+'px">'+this._prepareScaleHtml(t[a],e,n)+"</div>")}return i.join("")},_prepareScaleHtml:function(t,e,n){var i=this.$getConfig(),r=this.$gantt.templates,a=[],s=null,l=null,c=t.format||t.template||t.date;"string"==typeof c&&(c=this.$gantt.date.date_to_str(c));var u=0,d=t.count;!i.smart_scales||isNaN(e)||isNaN(n)||(u=o.findBinary(t.left,e),d=o.findBinary(t.left,n)+1),l=t.css||function(){},!t.css&&i.inherit_scale_class&&(l=r.scale_cell_class);for(var h=u;h<d&&t.trace_x[h];h++){s=new Date(t.trace_x[h]);var f=c.call(this,s),_=t.width[h],g=t.height,p=t.left[h],v="",m="",y="";if(_){v="width:"+_+"px;height:"+g+"px;"+(i.smart_scales?"position:absolute;left:"+p+"px":""),y="gantt_scale_cell"+(h==t.count-1?" gantt_last_cell":""),(m=l.call(this,s))&&(y+=" "+m);var k="<div class='"+y+"'"+this.$gantt._waiAria.getTimelineCellAttr(f)+" style='"+v+"'>"+f+"</div>";a.push(k)}}return a.join("")},dateFromPos:function(t){var e=this._tasks;if(t<0||t>e.full_width||!e.full_width)return null;var n=o.findBinary(this._tasks.left,t),i=this._tasks.left[n],r=e.width[n]||e.col_width,a=0;r&&(a=(t-i)/r,e.rtl&&(a=1-a));var s=0;return a&&(s=this._getColumnDuration(e,e.trace_x[n])),new Date(e.trace_x[n].valueOf()+Math.round(a*s))},posFromDate:function(t){if(!this.isVisible())return 0;if(!t)return 0;var e=String(t.valueOf());if(void 0!==this._posFromDateCache[e])return this._posFromDateCache[e];var n=this.columnIndexByDate(t);this.$gantt.assert(n>=0,"Invalid day index");var i=Math.floor(n),r=n%1,a=this._tasks.left[Math.min(i,this._tasks.width.length-1)];i==this._tasks.width.length&&(a+=this._tasks.width[this._tasks.width.length-1]),r&&(i<this._tasks.width.length?a+=this._tasks.width[i]*(r%1):a+=1);var o=Math.round(a);return this._posFromDateCache[e]=o,Math.round(o)},_getNextVisibleColumn:function(t,e,n){for(var i=+e[t],r=t;n[i];)i=+e[++r];return r},_getPrevVisibleColumn:function(t,e,n){for(var i=+e[t],r=t;n[i];)i=+e[--r];return r},_getClosestVisibleColumn:function(t,e,n){var i=this._getNextVisibleColumn(t,e,n);return e[i]||(i=this._getPrevVisibleColumn(t,e,n)),i},columnIndexByDate:function(t){var e=new Date(t).valueOf(),n=this._tasks.trace_x_ascending,i=this._tasks.ignore_x,r=this.$gantt.getState();if(e<=r.min_date)return this._tasks.rtl?n.length:0;if(e>=r.max_date)return this._tasks.rtl?0:n.length;var a=o.findBinary(n,e),s=this._getClosestVisibleColumn(a,n,i),l=n[s],c=this._tasks.trace_index_transition;if(!l)return c?c[0]:0;var u=(t-n[s])/this._getColumnDuration(this._tasks,n[s]);return c?c[s]+(1-u):s+u},getItemPosition:function(t,e,n){var i,r,a;return this._tasks.rtl?(r=this.posFromDate(e||t.start_date),i=this.posFromDate(n||t.end_date)):(i=this.posFromDate(e||t.start_date),r=this.posFromDate(n||t.end_date)),a=Math.max(r-i,0),{left:i,top:this.getItemTop(t.id),height:this.getBarHeight(t.id),width:a,rowHeight:this.getItemHeight(t.id)}},getBarHeight:function(t,e){var n=this.$getConfig(),i=this.$config.rowStore.getItem(t),r=i.task_height||i.bar_height||n.bar_height||n.task_height,a=this.getItemHeight(t);"full"==r&&(r=a-(n.task_height_offset||5));return r=Math.min(r,a),e&&(r=Math.round(r/Math.sqrt(2))),Math.max(r,0)},getScale:function(){return this._tasks},_getScales:function(){var t=this.$getConfig(),e=this.$scaleHelper,n=[e.primaryScale(t)].concat(e.getSubScales(t));return e.sortScales(n),n},_getColumnDuration:function(t,e){return this.$gantt.date.add(e,t.step,t.unit)-e},_bindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=t,t&&!t._timelineCacheAttached){var e=this;t._timelineCacheAttached=t.attachEvent("onBeforeFilter",function(){e._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);t&&t._timelineCacheAttached&&(t.detachEvent(t._timelineCacheAttached),t._timelineCacheAttached=!1)}},refresh:function(){this._bindStore(),this.$config.bindLinks&&(this.$config.linkStore=this.$gantt.getDatastore(this.$config.bindLinks)),this._resetTopPositionHeight(),this._resetHeight(),this._initStaticBackgroundRender(),this._render_tasks_scales()},destructor:function(){var t=this.$gantt;this._clearLayers(t),this._unbindStore(),this.$task=null,this.$task_scale=null,this.$task_data=null,this.$task_bg=null,this.$task_links=null,this.$task_bars=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.$config.linkStore&&(this.$config.linkStore=null),this._timelineDragScroll&&(this._timelineDragScroll.destructor(),this._timelineDragScroll=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},t.exports=c},function(t,e){t.exports=function(t,e,n){return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:0,right:1/0}}},function(t,e){t.exports=function(t){var e=[];return{delegate:function(n,i,r,a){e.push([n,i,r,a]),t.$services.getService("mouseEvents").delegate(n,i,r,a)},destructor:function(){for(var n=t.$services.getService("mouseEvents"),i=0;i<e.length;i++){var r=e[i];n.detach(r[0],r[1],r[2],r[3])}e=[]}}}},function(t,e,n){var i=n(1),r=n(0),a=n(5),o=n(209),s=n(43),l=n(207),c=n(206).default,u=function(t,e,n,i){this.$config=r.mixin({},e||{}),this.$gantt=i,this.$parent=t,a(this),this.$state={},r.mixin(this,s(this))};u.prototype={init:function(t){var e=this.$gantt,i=e._waiAria.gridAttrString(),r=e._waiAria.gridDataAttrString(),a=this.$getConfig(),s=a.reorder_grid_columns||!1;void 0!==this.$config.reorder_grid_columns&&(s=this.$config.reorder_grid_columns),t.innerHTML="<div class='gantt_grid' style='height:inherit;width:inherit;' "+i+"></div>",this.$grid=t.childNodes[0],this.$grid.innerHTML="<div class='gantt_grid_scale' "+e._waiAria.gridScaleRowAttrString()+"></div><div class='gantt_grid_data' "+r+"></div>",this.$grid_scale=this.$grid.childNodes[0],this.$grid_data=this.$grid.childNodes[1];var u=a[this.$config.bind+"_attribute"];if(!u&&this.$config.bind&&(u="data-"+this.$config.bind+"-id"),this.$config.item_attribute=u||null,!this.$config.layers){var d=this._createLayerConfig();this.$config.layers=d}var h=o(e,this);h.init(),this._renderHeaderResizers=h.doOnRender,this._mouseDelegates=n(31)(e),l(e,this).init(),this._addLayers(this.$gantt),this._initEvents(),s&&(this._columnDND=new c(e,this),this._columnDND.init()),this.callEvent("onReady",[])},_validateColumnWidth:function(t,e){var n=t[e];if(n&&"*"!=n){var i=this.$gantt,r=1*n;isNaN(r)?i.assert(!1,"Wrong "+e+" value of column "+t.name):t[e]=r}},setSize:function(t,e){this.$config.width=this.$state.width=t,this.$config.height=this.$state.height=e;for(var n,i=this.getGridColumns(),r=0,a=(d=this.$getConfig()).grid_elastic_columns,o=0,s=i.length;o<s;o++)this._validateColumnWidth(i[o],"min_width"),this._validateColumnWidth(i[o],"max_width"),this._validateColumnWidth(i[o],"width"),r+=1*i[o].width;if(!isNaN(r)&&this.$config.scrollable||(r=n=this._setColumnsWidth(t+1)),this.$config.scrollable&&a&&!isNaN(r)){var l="width";"min_width"==a&&(l="min_width");var c=0;i.forEach(function(t){c+=t[l]||d.min_grid_column_width});var u=Math.max(c,t);r=this._setColumnsWidth(u),n=t}this.$config.scrollable?(this.$grid_scale.style.width=r+"px",this.$grid_data.style.width=r+"px"):(this.$grid_scale.style.width="inherit",this.$grid_data.style.width="inherit"),this.$config.width-=1;var d=this.$getConfig();n!==t&&(void 0!==n?(d.grid_width=n,this.$config.width=n-1):isNaN(r)||(this._setColumnsWidth(r),d.grid_width=r,this.$config.width=r-1));var h=Math.max(this.$state.height-d.scale_height,0);this.$grid_data.style.height=h+"px",this.refresh()},getSize:function(){var t=this.$getConfig(),e=this.$config.rowStore?this.getTotalHeight():0,n=this._getGridWidth();return{x:this.$state.width,y:this.$state.height,contentX:this.isVisible()?n:0,contentY:this.isVisible()?t.scale_height+e:0,scrollHeight:this.isVisible()?e:0,scrollWidth:this.isVisible()?n:0}},_bindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);if(this.$config.rowStore=t,t&&!t._gridCacheAttached){var e=this;t._gridCacheAttached=t.attachEvent("onBeforeFilter",function(){e._resetTopPositionHeight()})}}},_unbindStore:function(){if(this.$config.bind){var t=this.$gantt.getDatastore(this.$config.bind);t&&t._gridCacheAttached&&(t.detachEvent(t._gridCacheAttached),t._gridCacheAttached=!1)}},refresh:function(){this._bindStore(),this._resetTopPositionHeight(),this._resetHeight(),this._initSmartRenderingPlaceholder(),this._calculateGridWidth(),this._renderGridHeader()},getViewPort:function(){var t=this.$config.scrollLeft||0,e=this.$config.scrollTop||0,n=this.$config.height||0,i=this.$config.width||0;return{y:e,y_end:e+n,x:t,x_end:t+i,height:n,width:i}},scrollTo:function(t,e){if(this.isVisible()){var n=!1;this.$config.scrollTop=this.$config.scrollTop||0,this.$config.scrollLeft=this.$config.scrollLeft||0,1*t==t&&(this.$config.scrollLeft=this.$state.scrollLeft=this.$grid.scrollLeft=t,n=!0),1*e==e&&(this.$config.scrollTop=this.$state.scrollTop=this.$grid_data.scrollTop=e,n=!0),n&&this.callEvent("onScroll",[this.$config.scrollLeft,this.$config.scrollTop])}},getColumnIndex:function(t,e){for(var n=this.$getConfig().columns,i=0,r=0;r<n.length;r++)if(e&&n[r].hide&&i++,n[r].name==t)return r-i;return null},getColumn:function(t){var e=this.getColumnIndex(t);return null===e?null:this.$getConfig().columns[e]},getGridColumns:function(){return this.$getConfig().columns.slice()},isVisible:function(){return this.$parent&&this.$parent.$config?!this.$parent.$config.hidden:this.$grid.offsetWidth},_createLayerConfig:function(){var t=this.$gantt,e=this;return[{renderer:t.$ui.layers.gridLine(),container:this.$grid_data,filter:[function(){return e.isVisible()}]},{renderer:t.$ui.layers.gridTaskRowResizer(),container:this.$grid_data,append:!0,filter:[function(){return t.config.resize_rows}]}]},_addLayers:function(t){if(this.$config.bind){this._taskLayers=[];var e=this,n=this.$gantt.$services.getService("layers"),i=n.getDataRender(this.$config.bind);i||(i=n.createDataRender({name:this.$config.bind,defaultContainer:function(){return e.$grid_data}}));for(var r=this.$config.layers,a=0;r&&a<r.length;a++){var o=r[a];o.view=this;var s=i.addLayer(o);this._taskLayers.push(s)}this._bindStore(),this._initSmartRenderingPlaceholder()}},_refreshPlaceholderOnStoreUpdate:function(t){var e=this.$getConfig(),n=this.$config.rowStore;if(n&&null===t&&this.isVisible()&&e.smart_rendering){var i;if(this.$config.scrollY){var r=this.$gantt.$ui.getView(this.$config.scrollY);r&&(i=r.getScrollState().scrollSize)}if(i||(i=n?this.getTotalHeight():0),i){this.$rowsPlaceholder&&this.$rowsPlaceholder.parentNode&&this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);var a=this.$rowsPlaceholder=document.createElement("div");a.style.visibility="hidden",a.style.height=i+"px",a.style.width="1px",this.$grid_data.appendChild(a)}}},_initSmartRenderingPlaceholder:function(){var t=this.$config.rowStore;t&&(this._initSmartRenderingPlaceholder=function(){},this._staticBgHandler=t.attachEvent("onStoreUpdated",r.bind(this._refreshPlaceholderOnStoreUpdate,this)))},_initEvents:function(){var t=this.$gantt;this._mouseDelegates.delegate("click","gantt_close",t.bind(function(t,e,n){var r=this.$config.rowStore;if(!r)return!0;var a=i.locateAttribute(t,this.$config.item_attribute);return a&&r.close(a.getAttribute(this.$config.item_attribute)),!1},this),this.$grid),this._mouseDelegates.delegate("click","gantt_open",t.bind(function(t,e,n){var r=this.$config.rowStore;if(!r)return!0;var a=i.locateAttribute(t,this.$config.item_attribute);return a&&r.open(a.getAttribute(this.$config.item_attribute)),!1},this),this.$grid)},_clearLayers:function(t){var e=this.$gantt.$services.getService("layers").getDataRender(this.$config.bind);if(this._taskLayers)for(var n=0;n<this._taskLayers.length;n++)e.removeLayer(this._taskLayers[n]);this._taskLayers=[]},_getColumnWidth:function(t,e,n){var i=t.min_width||e.min_grid_column_width,r=Math.max(n,i||10);return t.max_width&&(r=Math.min(r,t.max_width)),r},_checkGridColumnMinWidthLimits:function(t,e){for(var n=0,i=t.length;n<i;n++){var r=1*t[n].width;!t[n].min_width&&r<e.min_grid_column_width&&(t[n].min_width=r)}},_getGridWidthLimits:function(){for(var t=this.$getConfig(),e=this.getGridColumns(),n=0,i=0,r=0;r<e.length;r++)n+=e[r].min_width?e[r].min_width:t.min_grid_column_width,void 0!==i&&(i=e[r].max_width?i+e[r].max_width:void 0);return this._checkGridColumnMinWidthLimits(e,t),[n,i]},_setColumnsWidth:function(t,e){var n=this.$getConfig(),i=this.getGridColumns(),r=0,a=t;e=window.isNaN(e)?-1:e;for(var o=0,s=i.length;o<s;o++)r+=1*i[o].width;if(window.isNaN(r)){this._calculateGridWidth(),r=0;for(o=0,s=i.length;o<s;o++)r+=1*i[o].width}var l=a-r,c=0;for(o=0;o<e+1;o++)c+=i[o].width;r-=c;for(o=e+1;o<i.length;o++){var u=i[o],d=Math.round(l*(u.width/r));l<0?u.min_width&&u.width+d<u.min_width?d=u.min_width-u.width:!u.min_width&&n.min_grid_column_width&&u.width+d<n.min_grid_column_width&&(d=n.min_grid_column_width-u.width):u.max_width&&u.width+d>u.max_width&&(d=u.max_width-u.width),r-=u.width,u.width+=d,l-=d}for(var h=l>0?1:-1;l>0&&1===h||l<0&&-1===h;){var f=l;for(o=e+1;o<i.length;o++){var _;if((_=i[o].width+h)==this._getColumnWidth(i[o],n,_)&&(l-=h,i[o].width=_),!l)break}if(f==l)break}l&&e>-1&&((_=i[e].width+l)==this._getColumnWidth(i[e],n,_)&&(i[e].width=_));return this._getColsTotalWidth()},_getColsTotalWidth:function(){for(var t=this.getGridColumns(),e=0,n=0;n<t.length;n++){var i=parseFloat(t[n].width);if(window.isNaN(i))return!1;e+=i}return e},_calculateGridWidth:function(){for(var t=this.$getConfig(),e=this.getGridColumns(),n=0,i=[],r=[],a=0;a<e.length;a++){var o=parseFloat(e[a].width);window.isNaN(o)&&(o=t.min_grid_column_width||10,i.push(a)),r[a]=o,n+=o}var s=this._getGridWidth()+1;if(t.autofit||i.length){var l=s-n;if(t.autofit&&!t.grid_elastic_columns)for(a=0;a<r.length;a++){var c=Math.round(l/(r.length-a));r[a]+=c,(u=this._getColumnWidth(e[a],t,r[a]))!=r[a]&&(c=u-r[a],r[a]=u),l-=c}else if(i.length)for(a=0;a<i.length;a++){c=Math.round(l/(i.length-a));var u,d=i[a];r[d]+=c,(u=this._getColumnWidth(e[d],t,r[d]))!=r[d]&&(c=u-r[d],r[d]=u),l-=c}for(a=0;a<r.length;a++)e[a].width=r[a]}else{var h=s!=n;this.$config.width=n-1,t.grid_width=n,h&&this.$parent._setContentSize(this.$config.width,null)}},_renderGridHeader:function(){var t=this.$gantt,e=this.$getConfig(),n=this.$gantt.locale,i=this.$gantt.templates,r=this.getGridColumns();e.rtl&&(r=r.reverse());for(var a=[],o=0,s=n.labels,l=e.scale_height-1,c=0;c<r.length;c++){var u=c==r.length-1,d=r[c];d.name||(d.name=t.uid()+"");var h=1*d.width,f=this._getGridWidth();u&&f>o+h&&(d.width=h=f-o),o+=h;var _=t._sort&&d.name==t._sort.name?"<div class='gantt_sort gantt_"+t._sort.direction+"'></div>":"",g=["gantt_grid_head_cell","gantt_grid_head_"+d.name,u?"gantt_last_cell":"",i.grid_header_class(d.name,d)].join(" "),p="width:"+(h-(u?1:0))+"px;",v=d.label||s["column_"+d.name]||s[d.name];v=v||"";var m="<div class='"+g+"' style='"+p+"' "+t._waiAria.gridScaleCellAttrString(d,v)+" data-column-id='"+d.name+"' column_id='"+d.name+"' data-column-name='"+d.name+"' data-column-index='"+c+"'>"+v+_+"</div>";a.push(m)}this.$grid_scale.style.height=e.scale_height+"px",this.$grid_scale.style.lineHeight=l+"px",this.$grid_scale.innerHTML=a.join(""),this._renderHeaderResizers&&this._renderHeaderResizers()},_getGridWidth:function(){return this.$config.width},destructor:function(){this._clearLayers(this.$gantt),this._mouseDelegates&&(this._mouseDelegates.destructor(),this._mouseDelegates=null),this._unbindStore(),this.$grid=null,this.$grid_scale=null,this.$grid_data=null,this.$gantt=null,this.$config.rowStore&&(this.$config.rowStore.detachEvent(this._staticBgHandler),this.$config.rowStore=null),this.callEvent("onDestroy",[]),this.detachAllEvents()}},t.exports=u},function(t,e,n){var i=n(0);t.exports=function(t){var e=t.date,n=t.$services;return{getSum:function(t,e,n){void 0===n&&(n=t.length-1),void 0===e&&(e=0);for(var i=0,r=e;r<=n;r++)i+=t[r];return i},setSumWidth:function(t,e,n,i){var r=e.width;void 0===i&&(i=r.length-1),void 0===n&&(n=0);var a=i-n+1;if(!(n>r.length-1||a<=0||i>r.length-1)){var o=t-this.getSum(r,n,i);this.adjustSize(o,r,n,i),this.adjustSize(-o,r,i+1),e.full_width=this.getSum(r)}},splitSize:function(t,e){for(var n=[],i=0;i<e;i++)n[i]=0;return this.adjustSize(t,n),n},adjustSize:function(t,e,n,i){n||(n=0),void 0===i&&(i=e.length-1);for(var r=i-n+1,a=this.getSum(e,n,i),o=n;o<=i;o++){var s=Math.floor(t*(a?e[o]/a:1/r));a-=e[o],t-=s,r--,e[o]+=s}e[e.length-1]+=t},sortScales:function(t){function n(t,n){var i=new Date(1970,0,1);return e.add(i,n,t)-i}t.sort(function(t,e){return n(t.unit,t.step)<n(e.unit,e.step)?1:n(t.unit,t.step)>n(e.unit,e.step)?-1:0});for(var i=0;i<t.length;i++)t[i].index=i},_isLegacyMode:function(e){var n=e||t.config;return n.scale_unit||n.date_scale||n.subscales},_prepareScaleObject:function(e){var n=e.format;return n||(n=e.template||e.date||"%d %M"),"string"==typeof n&&(n=t.date.date_to_str(n)),{unit:e.unit||"day",step:e.step||1,format:n,css:e.css}},primaryScale:function(e){var i,r=n.getService("templateLoader"),a=this._isLegacyMode(e),o=e||t.config;if(a)r.initTemplate("date_scale",void 0,void 0,o,t.config.templates),i={unit:t.config.scale_unit,step:t.config.step,template:t.templates.date_scale,date:t.config.date_scale,css:t.templates.scale_cell_class};else{var s=o.scales[0];i={unit:s.unit,step:s.step,template:s.template,format:s.format,date:s.date,css:s.css||t.templates.scale_cell_class}}return this._prepareScaleObject(i)},getSubScales:function(e){var n=this._isLegacyMode(e),i=e||t.config;return(n?i.subscales||[]:i.scales.slice(1)).map(function(t){return this._prepareScaleObject(t)}.bind(this))},prepareConfigs:function(t,e,n,i,r,a,o){for(var s=this.splitSize(i,t.length),l=n,c=[],u=t.length-1;u>=0;u--){var d=u==t.length-1,h=this.initScaleConfig(t[u],r,a);d&&this.processIgnores(h),this.initColSizes(h,e,l,s[u]),this.limitVisibleRange(h),d&&(l=h.full_width),c.unshift(h)}for(u=0;u<c.length-1;u++)this.alineScaleColumns(c[c.length-1],c[u]);for(u=0;u<c.length;u++)o&&this.reverseScale(c[u]),this.setPosSettings(c[u]);return c},reverseScale:function(t){t.width=t.width.reverse(),t.trace_x=t.trace_x.reverse();var e=t.trace_indexes;t.trace_indexes={},t.trace_index_transition={},t.rtl=!0;for(var n=0;n<t.trace_x.length;n++)t.trace_indexes[t.trace_x[n].valueOf()]=n,t.trace_index_transition[e[t.trace_x[n].valueOf()]]=n;return t},setPosSettings:function(t){for(var e=0,n=t.trace_x.length;e<n;e++)t.left.push((t.width[e-1]||0)+(t.left[e-1]||0))},_ignore_time_config:function(n,i){if(t.config.skip_off_time){for(var r=!0,a=n,o=0;o<i.step;o++)o&&(a=e.add(n,o,i.unit)),r=r&&!this.isWorkTime(a,i.unit);return r}return!1},processIgnores:function(t){t.ignore_x={},t.display_count=t.count},initColSizes:function(t,n,i,r){var a=i;t.height=r;var o=void 0===t.display_count?t.count:t.display_count;o||(o=1),t.col_width=Math.floor(a/o),n&&t.col_width<n&&(t.col_width=n,a=t.col_width*o),t.width=[];for(var s=t.ignore_x||{},l=0;l<t.trace_x.length;l++)if(s[t.trace_x[l].valueOf()]||t.display_count==t.count)t.width[l]=0;else{var c=1;"month"==t.unit&&(c=Math.round((e.add(t.trace_x[l],t.step,t.unit)-t.trace_x[l])/864e5)),t.width[l]=c}this.adjustSize(a-this.getSum(t.width),t.width),t.full_width=this.getSum(t.width)},initScaleConfig:function(t,e,n){var r=i.mixin({count:0,col_width:0,full_width:0,height:0,width:[],left:[],trace_x:[],trace_indexes:{},min_date:new Date(e),max_date:new Date(n)},t);return this.eachColumn(t.unit,t.step,e,n,function(t){r.count++,r.trace_x.push(new Date(t)),r.trace_indexes[t.valueOf()]=r.trace_x.length-1}),r.trace_x_ascending=r.trace_x.slice(),r},iterateScales:function(t,e,n,i,r){for(var a=e.trace_x,o=t.trace_x,s=n||0,l=i||o.length-1,c=0,u=1;u<a.length;u++){var d=t.trace_indexes[+a[u]];void 0!==d&&d<=l&&(r&&r.apply(this,[c,u,s,d]),s=d,c=u)}},alineScaleColumns:function(t,e,n,i){this.iterateScales(t,e,n,i,function(n,i,r,a){var o=this.getSum(t.width,r,a-1);this.getSum(e.width,n,i-1)!=o&&this.setSumWidth(o,e,n,i-1)})},eachColumn:function(n,i,r,a,o){var s=new Date(r),l=new Date(a);e[n+"_start"]&&(s=e[n+"_start"](s));var c=new Date(s);for(+c>=+l&&(l=e.add(c,i,n));+c<+l;){o.call(this,new Date(c));var u=c.getTimezoneOffset();c=e.add(c,i,n),c=t._correct_dst_change(c,u,i,n),e[n+"_start"]&&(c=e[n+"_start"](c))}},limitVisibleRange:function(t){var n=t.trace_x,i=t.width.length-1,r=0;if(+n[0]<+t.min_date&&0!=i){var a=Math.floor(t.width[0]*((n[1]-t.min_date)/(n[1]-n[0])));r+=t.width[0]-a,t.width[0]=a,n[0]=new Date(t.min_date)}var o=n.length-1,s=n[o],l=e.add(s,t.step,t.unit);if(+l>+t.max_date&&o>0&&(a=t.width[o]-Math.floor(t.width[o]*((l-t.max_date)/(l-s))),r+=t.width[o]-a,t.width[o]=a),r){for(var c=this.getSum(t.width),u=0,d=0;d<t.width.length;d++){var h=Math.floor(r*(t.width[d]/c));t.width[d]+=h,u+=h}this.adjustSize(r-u,t.width)}}}}},,function(t,e,n){},function(t,e,n){var i=n(2),r={getHtmlSelect:function(t,e,n){var r="",o=this;return t=t||[],i.forEach(t,function(t){var e=[{key:"value",value:t.key}];n==t.key&&(e[e.length]={key:"selected",value:"selected"}),t.attributes&&(e=e.concat(t.attributes)),r+=o.getHtmlOption({innerHTML:t.label},e)}),a("select",{innerHTML:r},e)},getHtmlOption:function(t,e){return a("option",t,e)},getHtmlButton:function(t,e){return a("button",t,e)},getHtmlDiv:function(t,e){return a("div",t,e)},getHtmlLabel:function(t,e){return a("label",t,e)},getHtmlInput:function(t){return"<input"+o(t||[])+">"}};function a(t,e,n){return e=e||[],"<"+t+o(n||[])+">"+(e.innerHTML||"")+"</"+t+">"}function o(t){var e="";return i.forEach(t,function(t){e+=" "+t.key+"='"+t.value+"'"}),e}t.exports=r},function(t,e,n){var i=n(2);t.exports=function(t){var e={};return t.$data.tasksStore.attachEvent("onStoreUpdated",function(){e={}}),function(n,r,a,o){var s=n.id+"_"+r+"_"+a.unit+"_"+a.step;return e[s]?e[s]:e[s]=function(e,n,r,a){var o,s=!1,l={};t.config.process_resource_assignments&&n===t.config.resource_property?(o="task"==e.$role?t.getResourceAssignments(e.$resource_id,e.$task_id):t.getResourceAssignments(e.id),s=!0):o="task"==e.$role?[]:t.getTaskBy(n,e.id);for(var c,u,d,h,f,l=function(e,n,r){for(var a=n.unit,o=n.step,s={},l={},c=0;c<e.length;c++){var u=e[c],d=u;if(r&&(d=t.getTask(u.task_id)),!d.unscheduled){var h=u.start_date||d.start_date,f=u.end_date||d.end_date;r&&(u.start_date&&(h=new Date(Math.max(u.start_date.valueOf(),d.start_date.valueOf()))),u.end_date&&(f=new Date(Math.min(u.end_date.valueOf(),d.end_date.valueOf()))));var _=i.findBinary(n.trace_x,h.valueOf()),g=new Date(n.trace_x[_]||t.date[a+"_start"](new Date(h))),p=t.config.work_time?t.getTaskCalendar(d):t;for(l[p.id]={};g<f;){var v=l[p.id],m=g,y=m.valueOf();if(g=t.date.add(g,o,a),!1!==v[y]){var k=p.isWorkTime({date:m,task:d,unit:a});k?(s[y]||(s[y]={tasks:[],assignments:[]}),s[y].tasks.push(d),r&&s[y].assignments.push(u)):v[y]=!1}}}}return s}(o,r,s),_=r.unit,g=r.step,p=[],v=a.$getConfig(),m=0;m<r.trace_x.length;m++)c=new Date(r.trace_x[m]),u=t.date.add(c,g,_),f=l[c.valueOf()]||{},d=f.tasks||[],h=f.assignments||[],d.length||v.resource_render_empty_cells?p.push({start_date:c,end_date:u,tasks:d,assignments:h}):p.push(null);return p}(n,r,a,o)}}},function(t,e,n){var i=n(3),r=n(1),a=function(t){"use strict";function e(e,n,i){var r=t.apply(this,arguments)||this;return e&&(r.$root=!0),r._parseConfig(n),r.$name="layout",r}return i(e,t),e.prototype.destructor=function(){this.$container&&this.$view&&r.removeNode(this.$view);for(var e=0;e<this.$cells.length;e++){this.$cells[e].destructor()}this.$cells=[],t.prototype.destructor.call(this)},e.prototype._resizeScrollbars=function(t,e){var n,i=!1,r=[],a=[],o=[];function s(t){t.$parent.show(),i=!0,r.push(t)}function l(t){t.$parent.hide(),i=!0,a.push(t)}for(var c=0;c<e.length;c++)t[(n=e[c]).$config.scroll]?l(n):n.shouldHide()?o.push(n):n.shouldShow()?s(n):n.isVisible()?r.push(n):a.push(n);var u={};for(c=0;c<r.length;c++)r[c].$config.group&&(u[r[c].$config.group]=!0);o.forEach(function(t){t.$config.group&&u[t.$config.group]||l(t)});for(c=0;c<a.length;c++)if((n=a[c]).$config.group&&u[n.$config.group]){s(n);for(var d=0;d<r.length;d++)if(r[d]==n){this.$gantt.$scrollbarRepaint=!0;break}}return i},e.prototype._syncCellSizes=function(t,e){if(t){var n={};return this._eachChild(function(t){t.$config.group&&"scrollbar"!=t.$name&&"resizer"!=t.$name&&(n[t.$config.group]||(n[t.$config.group]=[]),n[t.$config.group].push(t))}),n[t]&&this._syncGroupSize(n[t],e),n[t]}},e.prototype._syncGroupSize=function(t,e){if(t.length)for(var n=t[0].$parent._xLayout?"width":"height",i=t[0].$parent.getNextSibling(t[0].$id)?1:-1,r=e.value,a=e.isGravity,o=0;o<t.length;o++){var s=t[o].getSize(),l=i>0?t[o].$parent.getNextSibling(t[o].$id):t[o].$parent.getPrevSibling(t[o].$id);"resizer"==l.$name&&(l=i>0?l.$parent.getNextSibling(l.$id):l.$parent.getPrevSibling(l.$id));var c=l.getSize();if(a)t[o].$config.gravity=r;else if(l[n]){var u=s.gravity+c.gravity,d=s[n]+c[n],h=u/d;t[o].$config.gravity=h*r,l.$config[n]=d-r,l.$config.gravity=u-h*r}else t[o].$config[n]=r;var f=this.$gantt.$ui.getView("grid");!f||t[o].$content!==f||f.$config.scrollable||a||(this.$gantt.config.grid_width=r)}},e.prototype.resize=function(e){var n=!1;if(this.$root&&!this._resizeInProgress&&(this.callEvent("onBeforeResize",[]),n=!0,this._resizeInProgress=!0),t.prototype.resize.call(this,!0),t.prototype.resize.call(this,!1),n){var i=[];i=(i=(i=i.concat(this.getCellsByType("viewCell"))).concat(this.getCellsByType("viewLayout"))).concat(this.getCellsByType("hostCell"));for(var r=this.getCellsByType("scroller"),a=0;a<i.length;a++)i[a].$config.hidden||i[a].setContentSize();var o=this._getAutosizeMode(this.$config.autosize),s=this._resizeScrollbars(o,r);if(this.$config.autosize&&(this.autosize(this.$config.autosize),i.forEach(function(t){var e=t.$parent,n=e.getContentSize(o);o.x&&(e.$config.$originalWidthStored||(e.$config.$originalWidthStored=!0,e.$config.$originalWidth=e.$config.width),e.$config.width=n.width),o.y&&(e.$config.$originalHeightStored||(e.$config.$originalHeightStored=!0,e.$config.$originalHeight=e.$config.height),e.$config.height=n.height)}),s=!0),s){this.resize();for(a=0;a<i.length;a++)i[a].$config.hidden||i[a].setContentSize()}this.callEvent("onResize",[])}n&&(this._resizeInProgress=!1)},e.prototype._eachChild=function(t,e){if(t(e=e||this),e.$cells)for(var n=0;n<e.$cells.length;n++)this._eachChild(t,e.$cells[n])},e.prototype.isChild=function(t){var e=!1;return this._eachChild(function(n){n!==t&&n.$content!==t||(e=!0)}),e},e.prototype.getCellsByType=function(t){var n=[];if(t===this.$name&&n.push(this),this.$content&&this.$content.$name==t&&n.push(this.$content),this.$cells)for(var i=0;i<this.$cells.length;i++){var r=e.prototype.getCellsByType.call(this.$cells[i],t);r.length&&n.push.apply(n,r)}return n},e.prototype.getNextSibling=function(t){var e=this.cellIndex(t);return e>=0&&this.$cells[e+1]?this.$cells[e+1]:null},e.prototype.getPrevSibling=function(t){var e=this.cellIndex(t);return e>=0&&this.$cells[e-1]?this.$cells[e-1]:null},e.prototype.cell=function(t){for(var e=0;e<this.$cells.length;e++){var n=this.$cells[e];if(n.$id===t)return n;var i=n.cell(t);if(i)return i}},e.prototype.cellIndex=function(t){for(var e=0;e<this.$cells.length;e++)if(this.$cells[e].$id===t)return e;return-1},e.prototype.moveView=function(t,e){if(this.$cells[e]!==t)return window.alert("Not implemented");e+=this.$config.header?1:0;var n=this.$view;e>=n.childNodes.length?n.appendChild(t.$view):n.insertBefore(t.$view,n.childNodes[e])},e.prototype._parseConfig=function(t){this.$cells=[],this._xLayout=!t.rows;for(var e=t.rows||t.cols||t.views,n=0;n<e.length;n++){var i=e[n];i.mode=this._xLayout?"x":"y";var r=this.$factory.initUI(i,this);r?(r.$parent=this,this.$cells.push(r)):(e.splice(n,1),n--)}},e.prototype.getCells=function(){return this.$cells},e.prototype.render=function(){var t=r.insertNode(this.$container,this.$toHTML());this.$fill(t,null),this.callEvent("onReady",[]),this.resize(),this.render=this.resize},e.prototype.$fill=function(t,e){this.$view=t,this.$parent=e;for(var n=r.getChildNodes(t,"gantt_layout_cell"),i=n.length-1;i>=0;i--){var a=this.$cells[i];a.$fill(n[i],this),a.$config.hidden&&a.$view.parentNode.removeChild(a.$view)}},e.prototype.$toHTML=function(){for(var e=this._xLayout?"x":"y",n=[],i=0;i<this.$cells.length;i++)n.push(this.$cells[i].$toHTML());return t.prototype.$toHTML.call(this,n.join(""),(this.$root?"gantt_layout_root ":"")+"gantt_layout gantt_layout_"+e)},e.prototype.getContentSize=function(t){for(var e,n,i,r=0,a=0,o=0;o<this.$cells.length;o++)(n=this.$cells[o]).$config.hidden||(e=n.getContentSize(t),"scrollbar"===n.$config.view&&t[n.$config.scroll]&&(e.height=0,e.width=0),n.$config.resizer&&(this._xLayout?e.height=0:e.width=0),i=n._getBorderSizes(),this._xLayout?(r+=e.width+i.horizontal,a=Math.max(a,e.height+i.vertical)):(r=Math.max(r,e.width+i.horizontal),a+=e.height+i.vertical));return{width:r+=(i=this._getBorderSizes()).horizontal,height:a+=i.vertical}},e.prototype._cleanElSize=function(t){return 1*(t||"").toString().replace("px","")||0},e.prototype._getBoxStyles=function(t){var e=null,n=["width","height","paddingTop","paddingBottom","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],i={boxSizing:"border-box"==(e=window.getComputedStyle?window.getComputedStyle(t,null):{width:t.clientWidth,height:t.clientHeight}).boxSizing};e.MozBoxSizing&&(i.boxSizing="border-box"==e.MozBoxSizing);for(var r=0;r<n.length;r++)i[n[r]]=e[n[r]]?this._cleanElSize(e[n[r]]):0;var a={horPaddings:i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth,vertPaddings:i.paddingTop+i.paddingBottom+i.borderTopWidth+i.borderBottomWidth,borderBox:i.boxSizing,innerWidth:i.width,innerHeight:i.height,outerWidth:i.width,outerHeight:i.height};return a.borderBox?(a.innerWidth-=a.horPaddings,a.innerHeight-=a.vertPaddings):(a.outerWidth+=a.horPaddings,a.outerHeight+=a.vertPaddings),a},e.prototype._getAutosizeMode=function(t){var e={x:!1,y:!1};return"xy"===t?e.x=e.y=!0:"y"===t||!0===t?e.y=!0:"x"===t&&(e.x=!0),e},e.prototype.autosize=function(t){var e=this._getAutosizeMode(t),n=this._getBoxStyles(this.$container),i=this.getContentSize(t),r=this.$container;e.x&&(n.borderBox&&(i.width+=n.horPaddings),r.style.width=i.width+"px"),e.y&&(n.borderBox&&(i.height+=n.vertPaddings),r.style.height=i.height+"px")},e.prototype.getSize=function(){this._sizes=[];for(var e=0,n=0,i=1e11,r=0,a=1e11,o=0,s=0;s<this.$cells.length;s++){var l=this._sizes[s]=this.$cells[s].getSize();this.$cells[s].$config.hidden||(this._xLayout?(!l.width&&l.minWidth?e+=l.minWidth:e+=l.width,i+=l.maxWidth,n+=l.minWidth,r=Math.max(r,l.height),a=Math.min(a,l.maxHeight),o=Math.max(o,l.minHeight)):(!l.height&&l.minHeight?r+=l.minHeight:r+=l.height,a+=l.maxHeight,o+=l.minHeight,e=Math.max(e,l.width),i=Math.min(i,l.maxWidth),n=Math.max(n,l.minWidth)))}var c=t.prototype.getSize.call(this);return c.maxWidth>=1e5&&(c.maxWidth=i),c.maxHeight>=1e5&&(c.maxHeight=a),c.minWidth=c.minWidth!=c.minWidth?0:c.minWidth,c.minHeight=c.minHeight!=c.minHeight?0:c.minHeight,this._xLayout?(c.minWidth+=this.$config.margin*this.$cells.length||0,c.minWidth+=2*this.$config.padding||0,c.minHeight+=2*this.$config.padding||0):(c.minHeight+=this.$config.margin*this.$cells.length||0,c.minHeight+=2*this.$config.padding||0),c},e.prototype._calcFreeSpace=function(t,e,n){var i=n?e.minWidth:e.minHeight,r=e.maxWidth,a=t;return a?(a>r&&(a=r),a<i&&(a=i),this._free-=a):((a=Math.floor(this._free/this._gravity*e.gravity))>r&&(a=r,this._free-=a,this._gravity-=e.gravity),a<i&&(a=i,this._free-=a,this._gravity-=e.gravity)),a},e.prototype._calcSize=function(t,e,n){var i=t,r=n?e.minWidth:e.minHeight,a=n?e.maxWidth:e.maxHeight;return i||(i=Math.floor(this._free/this._gravity*e.gravity)),i>a&&(i=a),i<r&&(i=r),i},e.prototype._configureBorders=function(){this.$root&&this._setBorders([this._borders.left,this._borders.top,this._borders.right,this._borders.bottom],this);for(var t=this._xLayout?this._borders.right:this._borders.bottom,e=this.$cells,n=e.length-1,i=n;i>=0;i--)if(!e[i].$config.hidden){n=i;break}for(i=0;i<e.length;i++)if(!e[i].$config.hidden){var r=i>=n,a="";!r&&e[i+1]&&"scrollbar"==e[i+1].$config.view&&(this._xLayout?r=!0:a="gantt_layout_cell_border_transparent"),this._setBorders(r?[]:[t,a],e[i])}},e.prototype._updateCellVisibility=function(){for(var t=this._visibleCells||{},e=!this._visibleCells,n={},i=null,r=[],a=0;a<this._sizes.length;a++)(i=this.$cells[a]).$config.hide_empty&&r.push(i),!e&&i.$config.hidden&&t[i.$id]?i._hide(!0):i.$config.hidden||t[i.$id]||i._hide(!1),i.$config.hidden||(n[i.$id]=!0);this._visibleCells=n;for(a=0;a<r.length;a++){var o=!0;(i=r[a]).$cells.forEach(function(t){t.$config.hidden||t.$config.resizer||(o=!1)}),i.$config.hidden=o}},e.prototype.setSize=function(e,n){this._configureBorders(),t.prototype.setSize.call(this,e,n),n=this.$lastSize.contentY,e=this.$lastSize.contentX;var i,r,a=this.$config.padding||0;this.$view.style.padding=a+"px",this._gravity=0,this._free=this._xLayout?e:n,this._free-=2*a,this._updateCellVisibility();for(var o=0;o<this._sizes.length;o++)if(!(i=this.$cells[o]).$config.hidden){var s=this.$config.margin||0;"resizer"!=i.$name||s||(s=-1);var l=i.$view,c=this._xLayout?"marginRight":"marginBottom";o!==this.$cells.length-1&&(l.style[c]=s+"px",this._free-=s),r=this._sizes[o],this._xLayout?r.width||(this._gravity+=r.gravity):r.height||(this._gravity+=r.gravity)}for(o=0;o<this._sizes.length;o++)if(!(i=this.$cells[o]).$config.hidden){var u=(r=this._sizes[o]).width,d=r.height;this._xLayout?this._calcFreeSpace(u,r,!0):this._calcFreeSpace(d,r,!1)}for(o=0;o<this.$cells.length;o++)if(!(i=this.$cells[o]).$config.hidden){r=this._sizes[o];var h=void 0,f=void 0;this._xLayout?(h=this._calcSize(r.width,r,!0),f=n-2*a):(h=e-2*a,f=this._calcSize(r.height,r,!1)),i.setSize(h,f)}},e}(n(14));t.exports=a},function(t,e){t.exports=function(t,e,n,i,r){var a=n.$gantt.getTask(t.source),o=n.$gantt.getTask(t.target),s=n.getItemTop(a.id),l=n.getItemHeight(a.id),c=n.getItemTop(o.id),u=n.getItemHeight(o.id);if(e.y>s+l&&e.y>c+u)return!1;if(e.y_end<c&&e.y_end<s)return!1;var d=n.posFromDate(a.start_date),h=n.posFromDate(a.end_date),f=n.posFromDate(o.start_date),_=n.posFromDate(o.end_date);if(d>h){var g=h;h=d,d=g}if(f>_){g=_;_=f,f=g}return d+=-100,h+=100,f+=-100,_+=100,!(e.x>h&&e.x>_)&&!(e.x_end<d&&e.x_end<f)}},function(t,e,n){var i=n(134);t.exports=function(){var t=[],e=!1;function n(){t=[],e=!1}var r=!1;return function(a,o,s,l,c){!function(t){r||(r=!0,t.attachEvent("onPreFilter",n),t.attachEvent("onStoreUpdated",n),t.attachEvent("onClearAll",n),t.attachEvent("onBeforeStoreUpdate",n))}(l),e||function(n,r,a){var o=r.$getConfig();n.getVisibleItems().forEach(function(e){var n=i(e,r,o,a);n&&t.push({id:e.id,rec:n})}),t.sort(function(t,e){return t.rec.right<e.rec.right?-1:1}),e=!0}(l,o,a);for(var u=[],d=0;d<t.length;d++){var h=t[d],f=h.rec;f.right<c.x||f.left<c.x_end&&f.right>c.x&&f.top<c.y_end&&f.bottom>c.y&&u.push(h.id)}return{ids:u}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(196),r=n(195),a=n(194);e.LargerUnitsCache=a.LargerUnitsCache,e.createCacheObject=function(){return"undefined"!=typeof Map?new i.WorkUnitsMapCache:new r.WorkUnitsObjectCache}},function(t,e,n){var i=n(0),r=n(2);function a(t,e,n,i,r){return this.date=t,this.unit=e,this.task=n,this.id=i,this.calendar=r,this}function o(t,e,n,i,r,a){return this.date=t,this.dir=e,this.unit=n,this.task=i,this.id=r,this.calendar=a,this}function s(t,e,n,i,r,a,o){return this.start_date=t,this.duration=e,this.unit=n,this.step=i,this.task=r,this.id=a,this.calendar=o,this}function l(t,e,n,i){return this.start_date=t,this.end_date=e,this.task=n,this.calendar=i,this.unit=null,this.step=null,this}t.exports=function(t){return{getWorkHoursArguments:function(){var e=arguments[0];if(e=r.isDate(e)?{date:e}:i.mixin({},e),!r.isValidDate(e.date))throw t.assert(!1,"Invalid date argument for getWorkHours method"),new Error("Invalid date argument for getWorkHours method");return e},setWorkTimeArguments:function(){return arguments[0]},unsetWorkTimeArguments:function(){return arguments[0]},isWorkTimeArguments:function(){var e,n=arguments[0];if(n instanceof a)return n;if((e=n.date?new a(n.date,n.unit,n.task,null,n.calendar):new a(arguments[0],arguments[1],arguments[2],null,arguments[3])).unit=e.unit||t.config.duration_unit,!r.isValidDate(e.date))throw t.assert(!1,"Invalid date argument for isWorkTime method"),new Error("Invalid date argument for isWorkTime method");return e},getClosestWorkTimeArguments:function(e){var n,i=arguments[0];if(i instanceof o)return i;if(n=r.isDate(i)?new o(i):new o(i.date,i.dir,i.unit,i.task,null,i.calendar),i.id&&(n.task=i),n.dir=i.dir||"any",n.unit=i.unit||t.config.duration_unit,!r.isValidDate(n.date))throw t.assert(!1,"Invalid date argument for getClosestWorkTime method"),new Error("Invalid date argument for getClosestWorkTime method");return n},_getStartEndConfig:function(e){var n,i=l;if(e instanceof i)return e;if(r.isDate(e)?n=new i(arguments[0],arguments[1],arguments[2],arguments[3]):(n=new i(e.start_date,e.end_date,e.task),null!==e.id&&void 0!==e.id&&(n.task=e)),n.unit=n.unit||t.config.duration_unit,n.step=n.step||t.config.duration_step,n.start_date=n.start_date||n.start||n.date,!r.isValidDate(n.start_date))throw t.assert(!1,"Invalid start_date argument for getDuration method"),new Error("Invalid start_date argument for getDuration method");if(!r.isValidDate(n.end_date))throw t.assert(!1,"Invalid end_date argument for getDuration method"),new Error("Invalid end_date argument for getDuration method");return n},getDurationArguments:function(t,e,n,i){return this._getStartEndConfig.apply(this,arguments)},hasDurationArguments:function(t,e,n,i){return this._getStartEndConfig.apply(this,arguments)},calculateEndDateArguments:function(e,n,i,a){var o,l=arguments[0];if(l instanceof s)return l;if(o=r.isDate(l)?new s(arguments[0],arguments[1],arguments[2],void 0,arguments[3],void 0,arguments[4]):new s(l.start_date,l.duration,l.unit,l.step,l.task,null,l.calendar),null!==l.id&&void 0!==l.id&&(o.task=l,o.unit=null,o.step=null),o.unit=o.unit||t.config.duration_unit,o.step=o.step||t.config.duration_step,!r.isValidDate(o.start_date))throw t.assert(!1,"Invalid start_date argument for calculateEndDate method"),new Error("Invalid start_date argument for calculateEndDate method");return o}}}},function(t,e,n){var i=n(208);t.exports=function(t){var e={},n={},r=null,a=-1,o=null,s=i(t);return{_resetTopPositionHeight:function(){e={},n={},s.resetCache()},_resetHeight:function(){var t=this.$config.rowStore,e=this.getCacheStateTotalHeight(t);o?this.shouldClearHeightCache(o,e)&&(o=e,r=null):o=e,a=-1,s.resetCache()},getRowTop:function(t){if(s.canUseSimpleCalculation())return s.getRowTop(t);var e=this.$config.rowStore;if(!e)return 0;if(void 0!==n[t])return n[t];for(var i=e.getIndexRange(),r=0,a=0,o=0;o<i.length;o++)n[o]=r,r+=this.getItemHeight(i[o].id),o<t&&(a=r);return a},getItemTop:function(t){if(this.$config.rowStore){if(void 0!==e[t])return e[t];var n=this.$config.rowStore;if(!n)return 0;var i=n.getIndexById(t);if(-1===i&&n.getParent&&n.exists(t)){var r=n.getParent(t);if(n.exists(r)){var a=n.getItem(r);if(this.$gantt.isSplitTask(a))return this.getItemTop(r)}}return e[t]=this.getRowTop(i),e[t]}return 0},getItemHeight:function(t){if(s.canUseSimpleCalculation())return s.getItemHeight(t);if(!r&&this.$config.rowStore&&this._fillHeightCache(this.$config.rowStore),void 0!==r[t])return r[t];var e=this.$getConfig().row_height;if(this.$config.rowStore){var n=this.$config.rowStore;if(!n)return e;var i=n.getItem(t);return r[t]=i&&i.row_height||e}return e},_fillHeightCache:function(t){if(t){r={};var e=this.$getConfig().row_height;t.eachItem(function(t){return r[t.id]=t&&t.row_height||e})}},getCacheStateTotalHeight:function(t){var e=this.$getConfig().row_height,n={},i=[],r=0;return t&&t.eachItem(function(t){i.push(t),n[t.id]=t.row_height,r+=t.row_height||e}),{globalHeight:e,items:i,count:i.length,sumHeight:r}},shouldClearHeightCache:function(t,e){if(t.count!=e.count)return!0;if(t.globalHeight!=e.globalHeight)return!0;if(t.sumHeight!=e.sumHeight)return!0;for(var n in t.items){var i=e.items[n];if(void 0!==i&&i!=t.items[n])return!0}return!1},getTotalHeight:function(){if(s.canUseSimpleCalculation())return s.getTotalHeight();if(-1!=a)return a;if(this.$config.rowStore){var t=this.$config.rowStore;this._fillHeightCache(t);var e=this.getItemHeight.bind(this),n=0;return t.getVisibleItems().forEach(function(t){n+=e(t.id)}),a=n,n}return 0},getItemIndexByTopPosition:function(t){if(this.$config.rowStore){if(s.canUseSimpleCalculation())return s.getItemIndexByTopPosition(t);for(var e=this.$config.rowStore,n=0;n<e.countVisible();n++){var i=this.getRowTop(n),r=this.getRowTop(n+1);if(!r){var a=e.getIdByIndex(n);r=i+this.getItemHeight(a)}if(t>=i&&t<r)return n}return e.countVisible()+2}return 0}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){var t=this;this.canParse=function(e){return!isNaN(t.parse(e))},this.format=function(t){return String(t)},this.parse=function(t){return parseInt(t,10)}}return t.create=function(e){return void 0===e&&(e=null),new t},t}();e.default=i},function(t,e){function n(t,e,n){for(var i=0;i<e.length;i++)t.isLinkExists(e[i])&&(n[e[i]]=t.getLink(e[i]))}function i(t,e,i){n(t,e.$source,i),n(t,e.$target,i)}t.exports={getSubtreeLinks:function(t,e){var n={};return t.isTaskExists(e)&&i(t,t.getTask(e),n),t.eachTask(function(e){i(t,e,n)},e),n},getSubtreeTasks:function(t,e){var n={};return t.eachTask(function(t){n[t.id]=t},e),n}}},function(t,e,n){var i=n(33),r=n(33);function a(t){var e=function(t){var e=new r(t).primaryScale(),n=e.unit,a=e.step;if(t.config.scale_offset_minimal){var o=new i(t),s=[o.primaryScale()].concat(o.getSubScales());o.sortScales(s),n=s[s.length-1].unit,a=s[s.length-1].step||1}return{unit:n,step:a}}(t),n=e.unit,a=e.step,o=function(t,e){var n={start_date:null,end_date:null};if(e.config.start_date&&e.config.end_date){n.start_date=e.date[t+"_start"](new Date(e.config.start_date));var i=new Date(e.config.end_date),r=e.date[t+"_start"](new Date(i));i=+i!=+r?e.date.add(r,1,t):r,n.end_date=i}return n}(n,t);if(!o.start_date||!o.end_date){for(var s=!0,l=t.getTaskByTime(),c=0;c<l.length;c++){if(l[c].type!==t.config.types.project){s=!1;break}}if(l.length&&s){var u=l[0].start_date,d=t.date.add(u,1,t.config.duration_unit);o={start_date:new Date(u),end_date:new Date(d)}}else o=t.getSubtaskDates();o.start_date&&o.end_date||(o={start_date:new Date,end_date:new Date}),o.start_date=t.date[n+"_start"](o.start_date),o.start_date=t.calculateEndDate({start_date:t.date[n+"_start"](o.start_date),duration:-1,unit:n,step:a}),o.end_date=t.date[n+"_start"](o.end_date),o.end_date=t.calculateEndDate({start_date:o.end_date,duration:2,unit:n,step:a})}t._min_date=o.start_date,t._max_date=o.end_date}t.exports=function(t){a(t),function(t){if(t.config.fit_tasks){var e=+t._min_date,n=+t._max_date;if(+t._min_date!=e||+t._max_date!=n)return t.render(),t.callEvent("onScaleAdjusted",[]),!0}}(t)}},function(t,e,n){var i=n(48),r=n(0),a=n(2),o=n(49),s=n(16),l=n(2).replaceValidZeroId;o.default&&(o=o.default);var c=function(t){o.apply(this,[t]),this._branches={},this.pull={},this.$initItem=function(e){var n=e;t.initItem&&(n=t.initItem(n));var i=this.getItem(e.id);return i&&i.parent!=n.parent&&this.move(n.id,n.$index||-1,n.parent||this._ganttConfig.root_id),n},this.$parentProperty=t.parentProperty||"parent","function"!=typeof t.rootId?this.$getRootId=function(t){return function(){return t}}(t.rootId||0):this.$getRootId=t.rootId,this.$openInitially=t.openInitially,this.visibleOrder=i.$create(),this.fullOrder=i.$create(),this._searchVisibleOrder={},this._indexRangeCache={},this._eachItemMainRangeCache=null,this._getItemsCache=null,this._skip_refresh=!1,this._ganttConfig=null,t.getConfig&&(this._ganttConfig=t.getConfig());var e={},n={},r={},a={},s=!1;return this._attachDataChange(function(){return this._indexRangeCache={},this._eachItemMainRangeCache=null,this._getItemsCache=null,!0}),this.attachEvent("onPreFilter",function(){this._indexRangeCache={},this._eachItemMainRangeCache=null,e={},n={},r={},a={},s=!1,this.eachItem(function(t){var i=this.getParent(t.id);t.$open&&!1!==r[i]?r[t.id]=!0:r[t.id]=!1,this._isSplitItem(t)&&(s=!0,e[t.id]=!0,n[t.id]=!0),s&&n[i]&&(n[t.id]=!0),r[i]||void 0===r[i]?a[t.id]=!0:a[t.id]=!1})}),this.attachEvent("onFilterItem",function(t,i){var r=!1;if(this._ganttConfig)r=this._ganttConfig.open_split_tasks;var o=a[i.id];return s&&(o&&n[i.id]&&!e[i.id]&&(o=!!r),n[i.id]&&!e[i.id]&&(i.$split_subtask=!0)),i.$expanded_branch=!!a[i.id],!!o}),this.attachEvent("onFilter",function(){e={},n={},r={},a={}}),this};c.prototype=r.mixin({_buildTree:function(t){for(var e=null,n=this.$getRootId(),i=0,a=t.length;i<a;i++)e=t[i],this.setParent(e,l(this.getParent(e),n)||n);for(i=0,a=t.length;i<a;i++)e=t[i],this._add_branch(e),e.$level=this.calculateItemLevel(e),e.$local_index=this.getBranchIndex(e.id),r.defined(e.$open)||(e.$open=r.defined(e.open)?e.open:this.$openInitially());this._updateOrder()},_isSplitItem:function(t){return"split"==t.render&&this.hasChild(t.id)},parse:function(t){this._skip_refresh||this.callEvent("onBeforeParse",[t]);var e=this._parseInner(t);this._buildTree(e),this.filter(),this._skip_refresh||this.callEvent("onParse",[e])},_addItemInner:function(t,e){var n=this.getParent(t);r.defined(n)||(n=this.$getRootId(),this.setParent(t,n));var i=this.getIndexById(n)+Math.min(Math.max(e,0),this.visibleOrder.length);1*i!==i&&(i=void 0),o.prototype._addItemInner.call(this,t,i),this.setParent(t,n),t.hasOwnProperty("$rendered_parent")&&this._move_branch(t,t.$rendered_parent),this._add_branch(t,e)},_changeIdInner:function(t,e){var n=this.getChildren(t),i=this._searchVisibleOrder[t];o.prototype._changeIdInner.call(this,t,e);var r=this.getParent(e);this._replace_branch_child(r,t,e),this._branches[t]&&(this._branches[e]=this._branches[t]);for(var a=0;a<n.length;a++){var s=this.getItem(n[a]);s[this.$parentProperty]=e,s.$rendered_parent=e}this._searchVisibleOrder[e]=i,delete this._branches[t]},_traverseBranches:function(t,e){r.defined(e)||(e=this.$getRootId());var n=this._branches[e];if(n)for(var i=0;i<n.length;i++){var a=n[i];t.call(this,a),this._branches[a]&&this._traverseBranches(t,a)}},_updateOrder:function(t){this.fullOrder=i.$create(),this._traverseBranches(function(t){this.fullOrder.push(t)}),t&&o.prototype._updateOrder.call(this,t)},_removeItemInner:function(t){var e=[];this.eachItem(function(t){e.push(t)},t),e.push(this.getItem(t));for(var n=0;n<e.length;n++)this._move_branch(e[n],this.getParent(e[n]),null),o.prototype._removeItemInner.call(this,e[n].id),this._move_branch(e[n],this.getParent(e[n]),null)},move:function(t,e,n){var i=arguments[3],a=(this._ganttConfig||{}).root_id||0;if(i=l(i,a)){if(i===t)return;n=this.getParent(i),e=this.getBranchIndex(i)}if(t!=n){r.defined(n)||(n=this.$getRootId());var o=this.getItem(t),c=this.getParent(o.id),u=this.getChildren(n);if(-1==e&&(e=u.length+1),c==n)if(this.getBranchIndex(t)==e)return;if(!1===this.callEvent("onBeforeItemMove",[t,n,e]))return!1;for(var d=[],h=0;h<u.length;h++)s(u[h],null,this,this._ganttConfig)&&(d.push(u[h]),u.splice(h,1),h--);this._replace_branch_child(c,t);var f=(u=this.getChildren(n))[e];(f=l(f,a))?u=u.slice(0,e).concat([t]).concat(u.slice(e)):u.push(t),d.length&&(u=u.concat(d)),this.setParent(o,n),this._branches[n]=u;var _=this.calculateItemLevel(o)-o.$level;o.$level+=_,this.eachItem(function(t){t.$level+=_},o.id,this),this._moveInner(this.getIndexById(t),this.getIndexById(n)+e),this.callEvent("onAfterItemMove",[t,n,e]),this.refresh()}},getBranchIndex:function(t){var e=this.getChildren(this.getParent(t)),n=e.indexOf(t+"");return-1==n&&(n=e.indexOf(+t)),n},hasChild:function(t){var e=this._branches[t];return e&&e.length},getChildren:function(t){var e=this._branches[t];return e||i.$create()},isChildOf:function(t,e){if(!this.exists(t))return!1;if(e===this.$getRootId())return!0;if(!this.hasChild(e))return!1;var n=this.getItem(t),i=this.getParent(t);if(this.getItem(e).$level>=n.$level)return!1;for(;n&&this.exists(i);){if((n=this.getItem(i))&&n.id==e)return!0;i=this.getParent(n)}return!1},getSiblings:function(t){if(!this.exists(t))return i.$create();var e=this.getParent(t);return this.getChildren(e)},getNextSibling:function(t){for(var e=this.getSiblings(t),n=0,i=e.length;n<i;n++)if(e[n]==t){var r=e[n+1];return 0===r&&n>0&&(r="0"),r||null}return null},getPrevSibling:function(t){for(var e=this.getSiblings(t),n=0,i=e.length;n<i;n++)if(e[n]==t){var r=e[n-1];return 0===r&&n>0&&(r="0"),r||null}return null},getParent:function(t){var e=null;return(e=void 0!==t.id?t:this.getItem(t))?e[this.$parentProperty]:this.$getRootId()},clearAll:function(){this._branches={},o.prototype.clearAll.call(this)},calculateItemLevel:function(t){var e=0;return this.eachParent(function(){e++},t),e},_setParentInner:function(t,e,n){n||(t.hasOwnProperty("$rendered_parent")?this._move_branch(t,t.$rendered_parent,e):this._move_branch(t,t[this.$parentProperty],e))},setParent:function(t,e,n){this._setParentInner(t,e,n),t[this.$parentProperty]=e},_eachItemCached:function(t,e){for(var n=0,i=e.length;n<i;n++)t.call(this,e[n])},_eachItemIterate:function(t,e,n){var i=this.getChildren(e);for(i.length&&(i=i.slice().reverse());i.length;){var r=i.pop(),a=this.getItem(r);if(t.call(this,a),n&&n.push(a),this.hasChild(a.id))for(var o=this.getChildren(a.id),s=o.length-1;s>=0;s--)i.push(o[s])}},eachItem:function(t,e){var n=this.$getRootId();r.defined(e)||(e=n);var i=l(e,n)||n,a=!1,o=!1,s=null;i===n&&(this._eachItemMainRangeCache?(a=!0,s=this._eachItemMainRangeCache):(o=!0,s=this._eachItemMainRangeCache=[])),a?this._eachItemCached(t,s):this._eachItemIterate(t,i,o?s:null)},eachParent:function(t,e){for(var n={},i=e,r=this.getParent(i);this.exists(r);){if(n[r])throw new Error("Invalid tasks tree. Cyclic reference has been detected on task "+r);n[r]=!0,i=this.getItem(r),t.call(this,i),r=this.getParent(i)}},_add_branch:function(t,e,n){var r=void 0===n?this.getParent(t):n;this.hasChild(r)||(this._branches[r]=i.$create());var a=this.getChildren(r);a.indexOf(t.id+"")>-1||a.indexOf(+t.id)>-1||(1*e==e?a.splice(e,0,t.id):a.push(t.id),t.$rendered_parent=r)},_move_branch:function(t,e,n){this._eachItemMainRangeCache=null,this._replace_branch_child(e,t.id),this.exists(n)||n==this.$getRootId()?this._add_branch(t,void 0,n):delete this._branches[t.id],t.$level=this.calculateItemLevel(t),this.eachItem(function(t){t.$level=this.calculateItemLevel(t)},t.id)},_replace_branch_child:function(t,e,n){var r=this.getChildren(t);if(r&&void 0!==t){var a=i.$create(),o=r.indexOf(e+"");-1!=o||isNaN(+e)||(o=r.indexOf(+e)),o>-1&&(n?r.splice(o,1,n):r.splice(o,1)),a=r,this._branches[t]=a}},sort:function(t,e,n){this.exists(n)||(n=this.$getRootId()),t||(t="order");var i="string"==typeof t?function(e,n){return e[t]==n[t]||a.isDate(e[t])&&a.isDate(n[t])&&e[t].valueOf()==n[t].valueOf()?0:e[t]>n[t]?1:-1}:t;if(e){var r=i;i=function(t,e){return r(e,t)}}var o=this.getChildren(n);if(o){for(var s=[],l=o.length-1;l>=0;l--)s[l]=this.getItem(o[l]);s.sort(i);for(l=0;l<s.length;l++)o[l]=s[l].id,this.sort(t,e,o[l])}},filter:function(t){for(var e in this.pull){var n=this.pull[e].$rendered_parent,i=this.getParent(this.pull[e]);n!==i&&this._move_branch(this.pull[e],n,i)}return o.prototype.filter.apply(this,arguments)},open:function(t){this.exists(t)&&(this.getItem(t).$open=!0,this._skipTaskRecalculation=!0,this.callEvent("onItemOpen",[t]))},close:function(t){this.exists(t)&&(this.getItem(t).$open=!1,this._skipTaskRecalculation=!0,this.callEvent("onItemClose",[t]))},destructor:function(){o.prototype.destructor.call(this),this._branches=null,this._indexRangeCache={},this._eachItemMainRangeCache=null}},o.prototype),t.exports=c},function(t,e,n){var i=n(0),r={$create:function(t){return i.mixin(t||[],this)},$removeAt:function(t,e){t>=0&&this.splice(t,e||1)},$remove:function(t){this.$removeAt(this.$find(t))},$insertAt:function(t,e){if(e||0===e){var n=this.splice(e,this.length-e);this[e]=t,this.push.apply(this,n)}else this.push(t)},$find:function(t){for(var e=0;e<this.length;e++)if(t==this[e])return e;return-1},$each:function(t,e){for(var n=0;n<this.length;n++)t.call(e||this,this[n])},$map:function(t,e){for(var n=0;n<this.length;n++)this[n]=t.call(e||this,this[n]);return this},$filter:function(t,e){for(var n=0;n<this.length;n++)t.call(e||this,this[n])||(this.splice(n,1),n--);return this}};t.exports=r},function(t,e,n){var i=n(48),r=n(0),a=n(5),o=n(16),s=function(t){return this.pull={},this.$initItem=t.initItem,this.visibleOrder=i.$create(),this.fullOrder=i.$create(),this._skip_refresh=!1,this._filterRule=null,this._searchVisibleOrder={},this._indexRangeCache={},this._getItemsCache=null,this.$config=t,a(this),this._attachDataChange(function(){return this._indexRangeCache={},this._getItemsCache=null,!0}),this};s.prototype={_attachDataChange:function(t){this.attachEvent("onClearAll",t),this.attachEvent("onBeforeParse",t),this.attachEvent("onBeforeUpdate",t),this.attachEvent("onBeforeDelete",t),this.attachEvent("onBeforeAdd",t),this.attachEvent("onParse",t),this.attachEvent("onBeforeFilter",t)},_parseInner:function(t){for(var e=null,n=[],i=0,a=t.length;i<a;i++)e=t[i],this.$initItem&&(this.$config.copyOnParse()&&(e=r.copy(e)),e=this.$initItem(e)),this.callEvent("onItemLoading",[e])&&(this.pull.hasOwnProperty(e.id)||this.fullOrder.push(e.id),n.push(e),this.pull[e.id]=e);return n},parse:function(t){this.isSilent()||this.callEvent("onBeforeParse",[t]);var e=this._parseInner(t);this.isSilent()||(this.refresh(),this.callEvent("onParse",[e]))},getItem:function(t){return this.pull[t]},_updateOrder:function(t){t.call(this.visibleOrder),t.call(this.fullOrder)},updateItem:function(t,e){if(r.defined(e)||(e=this.getItem(t)),!this.isSilent()&&!1===this.callEvent("onBeforeUpdate",[e.id,e]))return!1;r.mixin(this.pull[t],e,!0),this.isSilent()||(this.callEvent("onAfterUpdate",[e.id,e]),this.callEvent("onStoreUpdated",[e.id,e,"update"]))},_removeItemInner:function(t){this._updateOrder(function(){this.$remove(t)}),delete this.pull[t]},removeItem:function(t){var e=this.getItem(t);if(!this.isSilent()&&!1===this.callEvent("onBeforeDelete",[e.id,e]))return!1;this.callEvent("onAfterDeleteConfirmed",[e.id,e]),this._removeItemInner(t),this.isSilent()||(this.filter(),this.callEvent("onAfterDelete",[e.id,e]),this.callEvent("onStoreUpdated",[e.id,e,"delete"]))},_addItemInner:function(t,e){if(this.exists(t.id))this.silent(function(){this.updateItem(t.id,t)});else{var n=this.visibleOrder,i=n.length;(!r.defined(e)||e<0)&&(e=i),e>i&&(e=Math.min(n.length,e))}this.pull[t.id]=t,this.isSilent()||this._updateOrder(function(){-1===this.$find(t.id)&&this.$insertAt(t.id,e)}),this.filter()},isVisible:function(t){return this.visibleOrder.$find(t)>-1},getVisibleItems:function(){return this.getIndexRange()},addItem:function(t,e){return r.defined(t.id)||(t.id=r.uid()),this.$initItem&&(t=this.$initItem(t)),!(!this.isSilent()&&!1===this.callEvent("onBeforeAdd",[t.id,t]))&&(this._addItemInner(t,e),this.isSilent()||(this.callEvent("onAfterAdd",[t.id,t]),this.callEvent("onStoreUpdated",[t.id,t,"add"])),t.id)},_changeIdInner:function(t,e){this.pull[t]&&(this.pull[e]=this.pull[t]);var n=this._searchVisibleOrder[t];this.pull[e].id=e,this._updateOrder(function(){this[this.$find(t)]=e}),this._searchVisibleOrder[e]=n,delete this._searchVisibleOrder[t],delete this.pull[t]},changeId:function(t,e){this._changeIdInner(t,e),this.callEvent("onIdChange",[t,e])},exists:function(t){return!!this.pull[t]},_moveInner:function(t,e){var n=this.getIdByIndex(t);this._updateOrder(function(){this.$removeAt(t),this.$insertAt(n,Math.min(this.length,e))})},move:function(t,e){var n=this.getIdByIndex(t),i=this.getItem(n);this._moveInner(t,e),this.isSilent()||this.callEvent("onStoreUpdated",[i.id,i,"move"])},clearAll:function(){this.$destroyed||(this.silent(function(){this.unselect()}),this.pull={},this.visibleOrder=i.$create(),this.fullOrder=i.$create(),this.isSilent()||(this.callEvent("onClearAll",[]),this.refresh()))},silent:function(t,e){var n=!1;this.isSilent()&&(n=!0),this._skip_refresh=!0,t.call(e||this),n||(this._skip_refresh=!1)},isSilent:function(){return!!this._skip_refresh},arraysEqual:function(t,e){if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0},refresh:function(t,e){var n,i;if(!this.isSilent()&&(t&&(n=this.getItem(t)),i=t?[t,n,"paint"]:[null,null,null],!1!==this.callEvent("onBeforeStoreUpdate",i))){var r=this._quick_refresh&&!this._mark_recompute;if(this._mark_recompute=!1,t){if(!e&&!r){var a=this.visibleOrder;this.filter(),this.arraysEqual(a,this.visibleOrder)||(t=void 0)}}else r||this.filter();i=t?[t,n,"paint"]:[null,null,null],this.callEvent("onStoreUpdated",i)}},count:function(){return this.fullOrder.length},countVisible:function(){return this.visibleOrder.length},sort:function(t){},serialize:function(){},eachItem:function(t){for(var e=0;e<this.fullOrder.length;e++){var n=this.getItem(this.fullOrder[e]);t.call(this,n)}},find:function(t){var e=[];return this.eachItem(function(n){t(n)&&e.push(n)}),e},filter:function(t){this.isSilent()||this.callEvent("onBeforeFilter",[]),this.callEvent("onPreFilter",[]);var e=i.$create(),n=[];this.eachItem(function(t){this.callEvent("onFilterItem",[t.id,t])&&(o(t.id,null,this,this._ganttConfig)?n.push(t.id):e.push(t.id))});for(var r=0;r<n.length;r++)e.push(n[r]);this.visibleOrder=e,this._searchVisibleOrder={};for(r=0;r<this.visibleOrder.length;r++)this._searchVisibleOrder[this.visibleOrder[r]]=r;this.isSilent()||this.callEvent("onFilter",[])},getIndexRange:function(t,e){var n=Math.min(e||1/0,this.countVisible()-1),i=t||0,r=i+"-"+n;if(this._indexRangeCache[r])return this._indexRangeCache[r].slice();for(var a=[],o=i;o<=n;o++)a.push(this.getItem(this.visibleOrder[o]));return this._indexRangeCache[r]=a.slice(),a},getItems:function(){if(this._getItemsCache)return this._getItemsCache.slice();var t=[];for(var e in this.pull)t.push(this.pull[e]);return this._getItemsCache=t.slice(),t},getIdByIndex:function(t){return this.visibleOrder[t]},getIndexById:function(t){var e=this._searchVisibleOrder[t];return void 0===e&&(e=-1),e},_getNullIfUndefined:function(t){return void 0===t?null:t},getFirst:function(){return this._getNullIfUndefined(this.visibleOrder[0])},getLast:function(){return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length-1])},getNext:function(t){return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(t)+1])},getPrev:function(t){return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(t)-1])},destructor:function(){this.callEvent("onDestroy",[]),this.detachAllEvents(),this.$destroyed=!0,this.pull=null,this.$initItem=null,this.visibleOrder=null,this.fullOrder=null,this._skip_refresh=null,this._filterRule=null,this._searchVisibleOrder=null,this._indexRangeCache={}}},t.exports=s},function(t,e){t.exports=function(t,e){if(!e)return!0;if(t._on_timeout)return!1;var n=Math.ceil(1e3/e);return n<2||(setTimeout(function(){delete t._on_timeout},n),t._on_timeout=!0,!0)}},function(t,e,n){var i=n(0);t.exports=function t(e,n){e=e||i.event,n=n||i.eventRemove;var r=[],a={attach:function(t,n,i,a){r.push({element:t,event:n,callback:i,capture:a}),e(t,n,i,a)},detach:function(t,e,i,a){n(t,e,i,a);for(var o=0;o<r.length;o++){var s=r[o];s.element===t&&s.event===e&&s.callback===i&&s.capture===a&&(r.splice(o,1),o--)}},detachAll:function(){for(var t=r.slice(),e=0;e<t.length;e++){var n=t[e];a.detach(n.element,n.event,n.callback,n.capture),a.detach(n.element,n.event,n.callback,void 0),a.detach(n.element,n.event,n.callback,!1),a.detach(n.element,n.event,n.callback,!0)}r.splice(0,r.length)},extend:function(){return t(this.event,this.eventRemove)}};return a}},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports="object"==("undefined"==typeof self?"undefined":n(self))?self.FormData:window.FormData},function(t,e){(function(e){t.exports=e}).call(this,{})},function(t,e,n){"use strict";function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(278),a=n(276);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=k,e.resolve=function(t,e){return k(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?k(t,!1,!0).resolveObject(e):e},e.format=function(t){a.isString(t)&&(t=k(t));return t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o;var s=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(u),h=["%","/","?",";","#"].concat(d),f=["/","?","#"],_=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n(275);function k(t,e,n){if(t&&a.isObject(t)&&t instanceof o)return t;var i=new o;return i.parse(t,e,n),i}o.prototype.parse=function(t,e,n){if(!a.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+i(t));var o=t.indexOf("?"),l=-1!==o&&o<t.indexOf("#")?"?":"#",u=t.split(l);u[0]=u[0].replace(/\\/g,"/");var k=t=u.join(l);if(k=k.trim(),!n&&1===t.split("#").length){var b=c.exec(k);if(b)return this.path=k,this.href=k,this.pathname=b[1],b[2]?(this.search=b[2],this.query=e?y.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var x=s.exec(k);if(x){var w=(x=x[0]).toLowerCase();this.protocol=w,k=k.substr(x.length)}if(n||x||k.match(/^\/\/[^@\/]+@[^@\/]+/)){var S="//"===k.substr(0,2);!S||x&&v[x]||(k=k.substr(2),this.slashes=!0)}if(!v[x]&&(S||x&&!m[x])){for(var T,$,C=-1,E=0;E<f.length;E++){-1!==(A=k.indexOf(f[E]))&&(-1===C||A<C)&&(C=A)}-1!==($=-1===C?k.lastIndexOf("@"):k.lastIndexOf("@",C))&&(T=k.slice(0,$),k=k.slice($+1),this.auth=decodeURIComponent(T)),C=-1;for(E=0;E<h.length;E++){var A;-1!==(A=k.indexOf(h[E]))&&(-1===C||A<C)&&(C=A)}-1===C&&(C=k.length),this.host=k.slice(0,C),k=k.slice(C),this.parseHost(),this.hostname=this.hostname||"";var D="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!D)for(var M=this.hostname.split(/\./),I=(E=0,M.length);E<I;E++){var P=M[E];if(P&&!P.match(_)){for(var N="",O=0,L=P.length;O<L;O++)P.charCodeAt(O)>127?N+="x":N+=P[O];if(!N.match(_)){var R=M.slice(0,E),j=M.slice(E+1),H=P.match(g);H&&(R.push(H[1]),j.unshift(H[2])),j.length&&(k="/"+j.join(".")+k),this.hostname=R.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),D||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+F,this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==k[0]&&(k="/"+k))}if(!p[w])for(E=0,I=d.length;E<I;E++){var z=d[E];if(-1!==k.indexOf(z)){var U=encodeURIComponent(z);U===z&&(U=escape(z)),k=k.split(z).join(U)}}var W=k.indexOf("#");-1!==W&&(this.hash=k.substr(W),k=k.slice(0,W));var V=k.indexOf("?");if(-1!==V?(this.search=k.substr(V),this.query=k.substr(V+1),e&&(this.query=y.parse(this.query)),k=k.slice(0,V)):e&&(this.search="",this.query={}),k&&(this.pathname=k),m[w]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var q=this.search||"";this.path=F+q}return this.href=this.format(),this},o.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",i=this.hash||"",r=!1,o="";this.host?r=t+this.host:this.hostname&&(r=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&a.isObject(this.query)&&Object.keys(this.query).length&&(o=y.stringify(this.query));var s=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||m[e])&&!1!==r?(r="//"+(r||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):r||(r=""),i&&"#"!==i.charAt(0)&&(i="#"+i),s&&"?"!==s.charAt(0)&&(s="?"+s),e+r+(n=n.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(s=s.replace("#","%23"))+i},o.prototype.resolve=function(t){return this.resolveObject(k(t,!1,!0)).format()},o.prototype.resolveObject=function(t){if(a.isString(t)){var e=new o;e.parse(t,!1,!0),t=e}for(var n=new o,i=Object.keys(this),r=0;r<i.length;r++){var s=i[r];n[s]=this[s]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var l=Object.keys(t),c=0;c<l.length;c++){var u=l[c];"protocol"!==u&&(n[u]=t[u])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!m[t.protocol]){for(var d=Object.keys(t),h=0;h<d.length;h++){var f=d[h];n[f]=t[f]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||v[t.protocol])n.pathname=t.pathname;else{for(var _=(t.pathname||"").split("/");_.length&&!(t.host=_.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==_[0]&&_.unshift(""),_.length<2&&_.unshift(""),n.pathname=_.join("/")}if(n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,n.pathname||n.search){var g=n.pathname||"",p=n.search||"";n.path=g+p}return n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),k=t.host||t.pathname&&"/"===t.pathname.charAt(0),b=k||y||n.host&&t.pathname,x=b,w=n.pathname&&n.pathname.split("/")||[],S=(_=t.pathname&&t.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(S&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===_[0]?_[0]=t.host:_.unshift(t.host)),t.host=null),b=b&&(""===_[0]||""===w[0])),k)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,w=_;else if(_.length)w||(w=[]),w.pop(),w=w.concat(_),n.search=t.search,n.query=t.query;else if(!a.isNullOrUndefined(t.search)){if(S)n.hostname=n.host=w.shift(),(A=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=A.shift(),n.host=n.hostname=A.shift());return n.search=t.search,n.query=t.query,a.isNull(n.pathname)&&a.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var T=w.slice(-1)[0],$=(n.host||t.host||w.length>1)&&("."===T||".."===T)||""===T,C=0,E=w.length;E>=0;E--)"."===(T=w[E])?w.splice(E,1):".."===T?(w.splice(E,1),C++):C&&(w.splice(E,1),C--);if(!b&&!x)for(;C--;C)w.unshift("..");!b||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),$&&"/"!==w.join("/").substr(-1)&&w.push("");var A,D=""===w[0]||w[0]&&"/"===w[0].charAt(0);S&&(n.hostname=n.host=D?"":w.length?w.shift():"",(A=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=A.shift(),n.host=n.hostname=A.shift()));return(b=b||n.host&&w.length)&&!D&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),a.isNull(n.pathname)&&a.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},o.prototype.parseHost=function(){var t=this.host,e=l.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){"use strict";t.exports=a;var i=n(12),r=n(17);function a(t){if(!(this instanceof a))return new a(t);i.call(this,t),this._transformState={afterTransform:function(t,e){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(!i)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=e&&this.push(e),i(t);var r=this._readableState;r.reading=!1,(r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",o)}function o(){var t=this;"function"==typeof this._flush?this._flush(function(e,n){s(t,e,n)}):s(this,null,null)}function s(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}r.inherits=n(8),r.inherits(a,i),a.prototype.push=function(t,e){return this._transformState.needTransform=!1,i.prototype.push.call(this,t,e)},a.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},a.prototype._write=function(t,e,n){var i=this._transformState;if(i.writecb=n,i.writechunk=t,i.writeencoding=e,!i.transforming){var r=this._readableState;(i.needTransform||r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}},a.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},a.prototype._destroy=function(t,e){var n=this;i.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){"use strict";var i=n(22).Buffer,r=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===r||!r(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=l,this.end=c,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=u,this.end=d,e=3;break;default:return this.write=h,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,n=function(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var i=n.charCodeAt(n.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function u(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function d(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<t.length?e?e+this.text(t,n):this.text(t,n):e||""},a.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},a.prototype.text=function(t,e){var n=function(t,e,n){var i=e.length-1;if(i<n)return 0;var r=o(e[i]);if(r>=0)return r>0&&(t.lastNeed=r-1),r;if(--i<n||-2===r)return 0;if((r=o(e[i]))>=0)return r>0&&(t.lastNeed=r-2),r;if(--i<n||-2===r)return 0;if((r=o(e[i]))>=0)return r>0&&(2===r?r=0:t.lastNeed=r-3),r;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var i=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,n){(function(t){var i=void 0!==t&&t||"undefined"!=typeof self&&self||window,r=Function.prototype.apply;function a(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new a(r.call(setTimeout,i,arguments),clearTimeout)},e.setInterval=function(){return new a(r.call(setInterval,i,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(i,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(284),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(4))},function(t,e,n){"use strict";(function(e,i,r){var a=n(23);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,n){var i=t.entry;t.entry=null;for(;i;){var r=i.callback;e.pendingcb--,r(n),i=i.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var s,l=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?i:a.nextTick;m.WritableState=v;var c=n(17);c.inherits=n(8);var u={deprecate:n(283)},d=n(60),h=n(22).Buffer,f=r.Uint8Array||function(){};var _,g=n(59);function p(){}function v(t,e){s=s||n(12),t=t||{};var i=e instanceof s;this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,c=t.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i&&(c||0===c)?c:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var d=!1===t.decodeStrings;this.decodeStrings=!d,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,i=n.sync,r=n.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(n),e)!function(t,e,n,i,r){--e.pendingcb,n?(a.nextTick(r,i),a.nextTick(S,t,e),t._writableState.errorEmitted=!0,t.emit("error",i)):(r(i),t._writableState.errorEmitted=!0,t.emit("error",i),S(t,e))}(t,n,i,e,r);else{var o=x(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||b(t,n),i?l(k,t,n,o,r):k(t,n,o,r)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function m(t){if(s=s||n(12),!(_.call(m,this)||this instanceof s))return new m(t);this._writableState=new v(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),d.call(this)}function y(t,e,n,i,r,a,o){e.writelen=i,e.writecb=o,e.writing=!0,e.sync=!0,n?t._writev(r,e.onwrite):t._write(r,a,e.onwrite),e.sync=!1}function k(t,e,n,i){n||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),S(t,e)}function b(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var i=e.bufferedRequestCount,r=new Array(i),a=e.corkedRequestsFree;a.entry=n;for(var s=0,l=!0;n;)r[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;r.allBuffers=l,y(t,e,!0,e.length,r,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,u=n.encoding,d=n.callback;if(y(t,e,!1,e.objectMode?1:c.length,c,u,d),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function w(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),S(t,e)})}function S(t,e){var n=x(e);return n&&(!function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,a.nextTick(w,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}c.inherits(m,d),v.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(v.prototype,"buffer",{get:u.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(_=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!_.call(this,t)||this===m&&(t&&t._writableState instanceof v)}})):_=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(t,e,n){var i=this._writableState,r=!1,o=!i.objectMode&&function(t){return h.isBuffer(t)||t instanceof f}(t);return o&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(n=e,e=null),o?e="buffer":e||(e=i.defaultEncoding),"function"!=typeof n&&(n=p),i.ended?function(t,e){var n=new Error("write after end");t.emit("error",n),a.nextTick(e,n)}(this,n):(o||function(t,e,n,i){var r=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(t.emit("error",o),a.nextTick(i,o),r=!1),r}(this,i,t,n))&&(i.pendingcb++,r=function(t,e,n,i,r,a){if(!n){var o=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,n));return e}(e,i,r);i!==o&&(n=!0,r="buffer",i=o)}var s=e.objectMode?1:i.length;e.length+=s;var l=e.length<e.highWaterMark;l||(e.needDrain=!0);if(e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:i,encoding:r,isBuf:n,callback:a,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else y(t,e,!1,s,i,r,a);return l}(this,i,o,t,e,n)),r},m.prototype.cork=function(){this._writableState.corked++},m.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||b(this,t))},m.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(t,e,n){var i=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!==t&&void 0!==t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||function(t,e,n){e.ending=!0,S(t,e),n&&(e.finished?a.nextTick(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,i,n)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=g.destroy,m.prototype._undestroy=g.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,n(9),n(57).setImmediate,n(4))},function(t,e,n){"use strict";var i=n(23);function r(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var n=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||i.nextTick(r,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(i.nextTick(r,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,n){t.exports=n(61).EventEmitter},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function a(t){return"object"===n(t)&&null!==t}function o(t){return void 0===t}t.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0,i.defaultMaxListeners=10,i.prototype.setMaxListeners=function(t){if(!function(t){return"number"==typeof t}(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},i.prototype.emit=function(t){var e,n,i,s,l,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var u=new Error('Uncaught, unspecified "error" event. ('+e+")");throw u.context=e,u}if(o(n=this._events[t]))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(a(n))for(s=Array.prototype.slice.call(arguments,1),i=(c=n.slice()).length,l=0;l<i;l++)c[l].apply(this,s);return!0},i.prototype.addListener=function(t,e){var n;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?a(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,a(this._events[t])&&!this._events[t].warned&&(n=o(this._maxListeners)?i.defaultMaxListeners:this._maxListeners)&&n>0&&this._events[t].length>n&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(t,e){if(!r(e))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(t,i),n||(n=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},i.prototype.removeListener=function(t,e){var n,i,o,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(o=(n=this._events[t]).length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(a(n)){for(s=o;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},i.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[t]))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},i.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},i.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},i.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){"use strict";(function(e,i){var r=n(23);t.exports=y;var a,o=n(67);y.ReadableState=m;n(61).EventEmitter;var s=function(t,e){return t.listeners(e).length},l=n(60),c=n(22).Buffer,u=e.Uint8Array||function(){};var d=n(17);d.inherits=n(8);var h=n(287),f=void 0;f=h&&h.debuglog?h.debuglog("stream"):function(){};var _,g=n(286),p=n(59);d.inherits(y,l);var v=["error","close","destroy","pause","resume"];function m(t,e){a=a||n(12),t=t||{};var i=e instanceof a;this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,o=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(_||(_=n(56).StringDecoder),this.decoder=new _(t.encoding),this.encoding=t.encoding)}function y(t){if(a=a||n(12),!(this instanceof y))return new y(t);this._readableState=new m(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),l.call(this)}function k(t,e,n,i,r){var a,o=t._readableState;null===e?(o.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,S(t)}(t,o)):(r||(a=function(t,e){var n;(function(t){return c.isBuffer(t)||t instanceof u})(e)||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));return n}(o,e)),a?t.emit("error",a):o.objectMode||e&&e.length>0?("string"==typeof e||o.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),i?o.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):b(t,o,e,!0):o.ended?t.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!n?(e=o.decoder.write(e),o.objectMode||0!==e.length?b(t,o,e,!1):$(t,o)):b(t,o,e,!1))):i||(o.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(o)}function b(t,e,n,i){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,i?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&S(t)),$(t,e)}Object.defineProperty(y.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),y.prototype.destroy=p.destroy,y.prototype._undestroy=p.undestroy,y.prototype._destroy=function(t,e){this.push(null),e(t)},y.prototype.push=function(t,e){var n,i=this._readableState;return i.objectMode?n=!0:"string"==typeof t&&((e=e||i.defaultEncoding)!==i.encoding&&(t=c.from(t,e),e=""),n=!0),k(this,t,e,!1,n)},y.prototype.unshift=function(t){return k(this,t,null,!0,!1)},y.prototype.isPaused=function(){return!1===this._readableState.flowing},y.prototype.setEncoding=function(t){return _||(_=n(56).StringDecoder),this._readableState.decoder=new _(t),this._readableState.encoding=t,this};var x=8388608;function w(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=x?t=x:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function S(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(f("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?r.nextTick(T,t):T(t))}function T(t){f("emit readable"),t.emit("readable"),D(t)}function $(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(C,t,e))}function C(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(f("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function E(t){f("readable nexttick read 0"),t.read(0)}function A(t,e){e.reading||(f("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(f("flow",e.flowing);e.flowing&&null!==t.read(););}function M(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=function(t,e,n){var i;t<e.head.data.length?(i=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):i=t===e.head.data.length?e.shift():n?function(t,e){var n=e.head,i=1,r=n.data;t-=r.length;for(;n=n.next;){var a=n.data,o=t>a.length?a.length:t;if(o===a.length?r+=a:r+=a.slice(0,t),0===(t-=o)){o===a.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=a.slice(o));break}++i}return e.length-=i,r}(t,e):function(t,e){var n=c.allocUnsafe(t),i=e.head,r=1;i.data.copy(n),t-=i.data.length;for(;i=i.next;){var a=i.data,o=t>a.length?a.length:t;if(a.copy(n,n.length-t,0,o),0===(t-=o)){o===a.length?(++r,i.next?e.head=i.next:e.head=e.tail=null):(e.head=i,i.data=a.slice(o));break}++r}return e.length-=r,n}(t,e);return i}(t,e.buffer,e.decoder),n);var n}function I(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,r.nextTick(P,e,t))}function P(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function N(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1}y.prototype.read=function(t){f("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return f("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?I(this):S(this),null;if(0===(t=w(t,e))&&e.ended)return 0===e.length&&I(this),null;var i,r=e.needReadable;return f("need readable",r),(0===e.length||e.length-t<e.highWaterMark)&&f("length less than watermark",r=!0),e.ended||e.reading?f("reading or ended",r=!1):r&&(f("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=w(n,e))),null===(i=t>0?M(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&I(this)),null!==i&&this.emit("data",i),i},y.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},y.prototype.pipe=function(t,e){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=t;break;case 1:a.pipes=[a.pipes,t];break;default:a.pipes.push(t)}a.pipesCount+=1,f("pipe count=%d opts=%j",a.pipesCount,e);var l=(!e||!1!==e.end)&&t!==i.stdout&&t!==i.stderr?u:y;function c(e,i){f("onunpipe"),e===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,f("cleanup"),t.removeListener("close",v),t.removeListener("finish",m),t.removeListener("drain",d),t.removeListener("error",p),t.removeListener("unpipe",c),n.removeListener("end",u),n.removeListener("end",y),n.removeListener("data",g),h=!0,!a.awaitDrain||t._writableState&&!t._writableState.needDrain||d())}function u(){f("onend"),t.end()}a.endEmitted?r.nextTick(l):n.once("end",l),t.on("unpipe",c);var d=function(t){return function(){var e=t._readableState;f("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(n);t.on("drain",d);var h=!1;var _=!1;function g(e){f("ondata"),_=!1,!1!==t.write(e)||_||((1===a.pipesCount&&a.pipes===t||a.pipesCount>1&&-1!==N(a.pipes,t))&&!h&&(f("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,_=!0),n.pause())}function p(e){f("onerror",e),y(),t.removeListener("error",p),0===s(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",m),y()}function m(){f("onfinish"),t.removeListener("close",v),y()}function y(){f("unpipe"),n.unpipe(t)}return n.on("data",g),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?o(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",p),t.once("close",v),t.once("finish",m),t.emit("pipe",n),a.flowing||(f("pipe resume"),n.resume()),t},y.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var i=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a<r;a++)i[a].emit("unpipe",this,n);return this}var o=N(e.pipes,t);return-1===o?this:(e.pipes.splice(o,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},y.prototype.on=function(t,e){var n=l.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var i=this._readableState;i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.emittedReadable=!1,i.reading?i.length&&S(this):r.nextTick(E,this))}return n},y.prototype.addListener=y.prototype.on,y.prototype.resume=function(){var t=this._readableState;return t.flowing||(f("resume"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(A,t,e))}(this,t)),this},y.prototype.pause=function(){return f("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(f("pause"),this._readableState.flowing=!1,this.emit("pause")),this},y.prototype.wrap=function(t){var e=this,n=this._readableState,i=!1;for(var r in t.on("end",function(){if(f("wrapped end"),n.decoder&&!n.ended){var t=n.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(r){(f("wrapped data"),n.decoder&&(r=n.decoder.write(r)),!n.objectMode||null!==r&&void 0!==r)&&((n.objectMode||r&&r.length)&&(e.push(r)||(i=!0,t.pause())))}),t)void 0===this[r]&&"function"==typeof t[r]&&(this[r]=function(e){return function(){return t[e].apply(t,arguments)}}(r));for(var a=0;a<v.length;a++)t.on(v[a],this.emit.bind(this,v[a]));return this._read=function(e){f("wrapped _read",e),i&&(i=!1,t.resume())},this},Object.defineProperty(y.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),y._fromList=M}).call(this,n(4),n(9))},function(t,e,n){(e=t.exports=n(62)).Stream=e,e.Readable=e,e.Writable=n(58),e.Duplex=n(12),e.Transform=n(55),e.PassThrough=n(282)},function(t,e,n){(function(t,i,r){var a=n(65),o=n(8),s=n(63),l=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(e,n,o,l){var c=this;if(s.Readable.call(c),c._mode=o,c.headers={},c.rawHeaders=[],c.trailers={},c.rawTrailers=[],c.on("end",function(){t.nextTick(function(){c.emit("close")})}),"fetch"===o){if(c._fetchResponse=n,c.url=n.url,c.statusCode=n.status,c.statusMessage=n.statusText,n.headers.forEach(function(t,e){c.headers[e.toLowerCase()]=t,c.rawHeaders.push(e,t)}),a.writableStream){var u=new WritableStream({write:function(t){return new Promise(function(e,n){c._destroyed?n():c.push(new r(t))?e():c._resumeFetch=e})},close:function(){i.clearTimeout(l),c._destroyed||c.push(null)},abort:function(t){c._destroyed||c.emit("error",t)}});try{return void n.body.pipeTo(u).catch(function(t){i.clearTimeout(l),c._destroyed||c.emit("error",t)})}catch(t){}}var d=n.body.getReader();!function t(){d.read().then(function(e){if(!c._destroyed){if(e.done)return i.clearTimeout(l),void c.push(null);c.push(new r(e.value)),t()}}).catch(function(t){i.clearTimeout(l),c._destroyed||c.emit("error",t)})}()}else{if(c._xhr=e,c._pos=0,c.url=e.responseURL,c.statusCode=e.status,c.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var n=e[1].toLowerCase();"set-cookie"===n?(void 0===c.headers[n]&&(c.headers[n]=[]),c.headers[n].push(e[2])):void 0!==c.headers[n]?c.headers[n]+=", "+e[2]:c.headers[n]=e[2],c.rawHeaders.push(e[1],e[2])}}),c._charset="x-user-defined",!a.overrideMimeType){var h=c.rawHeaders["mime-type"];if(h){var f=h.match(/;\s*charset=([^;])(;|$)/);f&&(c._charset=f[1].toLowerCase())}c._charset||(c._charset="utf-8")}}};o(c,s.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(){var t=this,e=t._xhr,n=null;switch(t._mode){case"text:vbarray":if(e.readyState!==l.DONE)break;try{n=new i.VBArray(e.responseBody).toArray()}catch(t){}if(null!==n){t.push(new r(n));break}case"text":try{n=e.responseText}catch(e){t._mode="text:vbarray";break}if(n.length>t._pos){var a=n.substr(t._pos);if("x-user-defined"===t._charset){for(var o=new r(a.length),s=0;s<a.length;s++)o[s]=255&a.charCodeAt(s);t.push(o)}else t.push(a,t._charset);t._pos=n.length}break;case"arraybuffer":if(e.readyState!==l.DONE||!e.response)break;n=e.response,t.push(new r(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=e.response,e.readyState!==l.LOADING||!n)break;t.push(new r(new Uint8Array(n)));break;case"ms-stream":if(n=e.response,e.readyState!==l.LOADING)break;var c=new i.MSStreamReader;c.onprogress=function(){c.result.byteLength>t._pos&&(t.push(new r(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(n)}t._xhr.readyState===l.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,n(9),n(4),n(13).Buffer)},function(t,e,n){(function(t){e.fetch=s(t.fetch)&&s(t.ReadableStream),e.writableStream=s(t.WritableStream),e.abortController=s(t.AbortController),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(t){}var n;function i(){if(void 0!==n)return n;if(t.XMLHttpRequest){n=new t.XMLHttpRequest;try{n.open("GET",t.XDomainRequest?"/":"https://example.com")}catch(t){n=null}}else n=null;return n}function r(t){var e=i();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}var a=void 0!==t.ArrayBuffer,o=a&&s(t.ArrayBuffer.prototype.slice);function s(t){return"function"==typeof t}e.arraybuffer=e.fetch||a&&r("arraybuffer"),e.msstream=!e.fetch&&o&&r("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&a&&r("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!i()&&s(i().overrideMimeType),e.vbArray=s(t.VBArray),n=null}).call(this,n(4))},function(t,e,n){(function(t){var i=n(288),r=n(64),a=n(280),o=n(279),s=n(54),l=e;l.request=function(e,n){e="string"==typeof e?s.parse(e):a(e);var r=-1===t.location.protocol.search(/^https?:$/)?"http:":"",o=e.protocol||r,l=e.hostname||e.host,c=e.port,u=e.path||"/";l&&-1!==l.indexOf(":")&&(l="["+l+"]"),e.url=(l?o+"//"+l:"")+(c?":"+c:"")+u,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var d=new i(e);return n&&d.on("response",n),d},l.get=function(t,e){var n=l.request(t,e);return n.end(),n},l.ClientRequest=i,l.IncomingMessage=r.IncomingMessage,l.Agent=function(){},l.Agent.defaultMaxSockets=4,l.globalAgent=new l.Agent,l.STATUS_CODES=o,l.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,n(4))},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e){t.exports=function(t){var e=new RegExp("<(?:.|\n)*?>","gm"),n=new RegExp(" +","gm");function i(t){return(t+"").replace(e," ").replace(n," ")}var r=new RegExp("'","gm");function a(t){return(t+"").replace(r,"'")}for(var o in t._waiAria={getAttributeString:function(t){var e=[" "];for(var n in t){var r=a(i(t[n]));e.push(n+"='"+r+"'")}return e.push(" "),e.join(" ")},getTimelineCellAttr:function(e){return t._waiAria.getAttributeString({"aria-label":e})},_taskCommonAttr:function(e,n){e.start_date&&e.end_date&&(n.setAttribute("aria-label",i(t.templates.tooltip_text(e.start_date,e.end_date,e))),e.$dataprocessor_class&&n.setAttribute("aria-busy",!0))},setTaskBarAttr:function(e,n){this._taskCommonAttr(e,n),n.setAttribute("role","img"),!t.isReadonly(e)&&t.config.drag_move&&(e.id!=t.getState("tasksDnd").drag_id?n.setAttribute("aria-grabbed",!1):n.setAttribute("aria-grabbed",!0))},taskRowAttr:function(e,n){this._taskCommonAttr(e,n),!t.isReadonly(e)&&t.config.order_branch&&n.setAttribute("aria-grabbed",!1),n.setAttribute("role","row"),n.setAttribute("aria-selected",t.isSelectedTask(e.id)?"true":"false"),n.setAttribute("aria-level",e.$level+1||1),t.hasChild(e.id)&&n.setAttribute("aria-expanded",e.$open?"true":"false")},linkAttr:function(e,n){var r=t.config.links,a=e.type==r.finish_to_start||e.type==r.start_to_start,o=e.type==r.start_to_start||e.type==r.start_to_finish,s=t.locale.labels.link+" "+t.templates.drag_link(e.source,o,e.target,a);n.setAttribute("role","img"),n.setAttribute("aria-label",i(s)),t.isReadonly(e)&&n.setAttribute("aria-readonly",!0)},gridSeparatorAttr:function(t){t.setAttribute("role","columnheader")},rowResizerAttr:function(t){t.setAttribute("role","row")},lightboxHiddenAttr:function(t){t.setAttribute("aria-hidden","true")},lightboxVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},lightboxAttr:function(t){t.setAttribute("role","dialog"),t.setAttribute("aria-hidden","true"),t.firstChild.setAttribute("role","heading"),t.firstChild.setAttribute("aria-level","1")},lightboxButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels[e],tabindex:"0"})},lightboxHeader:function(t,e){t.setAttribute("aria-label",e)},lightboxSelectAttrString:function(e){var n="";switch(e){case"%Y":n=t.locale.labels.years;break;case"%m":n=t.locale.labels.months;break;case"%d":n=t.locale.labels.days;break;case"%H:%i":n=t.locale.labels.hours+t.locale.labels.minutes}return t._waiAria.getAttributeString({"aria-label":n})},lightboxDurationInputAttrString:function(e){return this.getAttributeString({"aria-label":t.locale.labels.column_duration,"aria-valuemin":"0",role:"spinbutton"})},inlineEditorAttr:function(t){t.setAttribute("role","row")},gridAttrString:function(){return[" role='treegrid'",t.config.multiselect?"aria-multiselectable='true'":"aria-multiselectable='false'"," "].join(" ")},gridScaleRowAttrString:function(){return"role='row'"},gridScaleCellAttrString:function(e,n){var i="";if("add"==e.name)i=this.getAttributeString({role:"columnheader","aria-label":t.locale.labels.new_task});else{var r={role:"columnheader","aria-label":n};t._sort&&t._sort.name==e.name&&("asc"==t._sort.direction?r["aria-sort"]="ascending":r["aria-sort"]="descending"),i=this.getAttributeString(r)}return i},gridDataAttrString:function(){return"role='rowgroup'"},reorderMarkerAttr:function(t){t.setAttribute("role","grid"),t.firstChild.removeAttribute("aria-level"),t.firstChild.setAttribute("aria-grabbed","true")},gridCellAttrString:function(e,n,i){var r={role:"gridcell","aria-label":n};return e.editor&&!t.isReadonly(i)||(r["aria-readonly"]=!0),this.getAttributeString(r)},gridAddButtonAttrString:function(e){return this.getAttributeString({role:"button","aria-label":t.locale.labels.new_task})},messageButtonAttrString:function(t){return"tabindex='0' role='button' aria-label='"+t+"'"},messageInfoAttr:function(t){t.setAttribute("role","alert")},messageModalAttr:function(t,e){t.setAttribute("role","dialog"),e&&t.setAttribute("aria-labelledby",e)},quickInfoAttr:function(t){t.setAttribute("role","dialog")},quickInfoHeaderAttrString:function(){return" role='heading' aria-level='1' "},quickInfoHeader:function(t,e){t.setAttribute("aria-label",e)},quickInfoButtonAttrString:function(e){return t._waiAria.getAttributeString({role:"button","aria-label":e,tabindex:"0"})},tooltipAttr:function(t){t.setAttribute("role","tooltip")},tooltipVisibleAttr:function(t){t.setAttribute("aria-hidden","false")},tooltipHiddenAttr:function(t){t.setAttribute("aria-hidden","true")}},t._waiAria)t._waiAria[o]=function(e){return function(){return t.config.wai_aria_attributes?e.apply(this,arguments):""}}(t._waiAria[o])}},function(t,e){t.exports=function(t){t._extend_to_optional=function(e){var n=e,i={render:n.render,focus:n.focus,set_value:function(e,r,a,o){var s=t._resolve_default_mapping(o);if(!a[s.start_date]||"start_date"==s.start_date&&this._isAllowedUnscheduledTask(a)){i.disable(e,o);var l={};for(var c in s)l[s[c]]=a[c];return n.set_value.call(t,e,r,l,o)}return i.enable(e,o),n.set_value.call(t,e,r,a,o)},get_value:function(e,i,r){return r.disabled?{start_date:null}:n.get_value.call(t,e,i,r)},update_block:function(e,n){if(t.callEvent("onSectionToggle",[t._lightbox_id,n]),e.style.display=n.disabled?"none":"block",n.button){var i=e.previousSibling.querySelector(".gantt_custom_button_label"),r=t.locale.labels,a=n.disabled?r[n.name+"_enable_button"]:r[n.name+"_disable_button"];i.innerHTML=a}t.resizeLightbox()},disable:function(t,e){e.disabled=!0,i.update_block(t,e)},enable:function(t,e){e.disabled=!1,i.update_block(t,e)},button_click:function(e,n,r,a){if(!1!==t.callEvent("onSectionButton",[t._lightbox_id,r])){var o=t._get_typed_lightbox_config()[e];o.disabled?i.enable(a,o):i.disable(a,o)}}};return i},t.form_blocks.duration_optional=t._extend_to_optional(t.form_blocks.duration),t.form_blocks.time_optional=t._extend_to_optional(t.form_blocks.time)}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(18)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(n){var i=t.config.types,r=t.locale.labels,a=[],o=n.filter||function(t,e){return!i.placeholder||e!==i.placeholder};for(var s in i)!1==!o(s,i[s])&&a.push({key:i[s],label:r["type_"+s]});n.options=a;var l=n.onchange;return n.onchange=function(){t.changeLightboxType(this.value),this.value===t.config.types.task&&(t._lightbox_new_type="task"),"function"==typeof l&&l.apply(this,arguments)},e.prototype.render.apply(this,arguments)},r}},function(t,e,n){var i=n(3),r=n(36);t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}function o(e){return!e||e===t.config.constraint_types.ASAP||e===t.config.constraint_types.ALAP}function s(t,e){for(var n=o(e),i=0;i<t.length;i++)t[i].disabled=n}return i(a,e),a.prototype.render=function(e){var n=(e.height||30)+"px",i="<div class='gantt_cal_ltext gantt_section_"+e.name+"' style='height:"+n+";'>",a=[];for(var o in t.config.constraint_types)a.push({key:t.config.constraint_types[o],label:t.locale.labels[t.config.constraint_types[o]]});return e.options=e.options||a,i+="<span data-constraint-type-select>"+r.getHtmlSelect(e.options,[{key:"data-type",value:"constraint-type"}])+"</span>",i+="<label data-constraint-time-select>"+(t.locale.labels.constraint_date||"Constraint date")+": "+t.form_blocks.getTimePicker.call(this,e)+"</label>",i+="</div>"},a.prototype.set_value=function(e,n,i,r){var a=e.querySelector("[data-constraint-type-select] select"),o=e.querySelectorAll("[data-constraint-time-select] select"),l=r._time_format_order,c=t._resolve_default_mapping(r);a._eventsInitialized||(a.addEventListener("change",function(t){s(o,t.target.value)}),a._eventsInitialized=!0);var u=i[c.constraint_date]||new Date;t.form_blocks._fill_lightbox_select(o,0,u,l,r);var d=i[c.constraint_type]||t.getConstraintType(i);a.value=d,s(o,d)},a.prototype.get_value=function(e,n,i){var r=e.querySelector("[data-constraint-type-select] select"),a=e.querySelectorAll("[data-constraint-time-select] select"),s=r.value,l=null;return o(s)||(l=t.form_blocks.getTimePickerValue(a,i)),{constraint_type:s,constraint_date:l}},a.prototype.focus=function(e){t._focus(e.querySelector("select"))},a}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(18)(t);function r(){return e.apply(this,arguments)||this}function a(e,n){var i=[],r=[];n&&(i=t.getTaskByTime(),e.allow_root&&i.unshift({id:t.config.root_id,text:e.root_label||""}),i=function(e,n,i){var r=n.filter||function(){return!0};e=e.slice(0);for(var a=0;a<e.length;a++){var o=e[a];(o.id==i||t.isChildOf(o.id,i)||!1===r(o.id,o))&&(e.splice(a,1),a--)}return e}(i,e,n),e.sort&&i.sort(e.sort));for(var a=e.template||t.templates.task_text,o=0;o<i.length;o++){var s=a.apply(t,[i[o].start_date,i[o].end_date,i[o]]);void 0===s&&(s=""),r.push({key:i[o].id,label:s})}return e.options=r,e.map_to=e.map_to||"parent",t.form_blocks.select.render.apply(this,arguments)}return i(r,e),r.prototype.render=function(t){return a(t,!1)},r.prototype.set_value=function(e,n,i,r){0===n&&(n="0");var o=document.createElement("div");o.innerHTML=a(r,i.id);var s=o.removeChild(o.firstChild);return e.onselect=null,e.parentNode.replaceChild(s,e),t.form_blocks.select.set_value.apply(t,[s,n,i,r])},r}},function(t,e,n){var i=n(3),r=n(44).default;t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}function o(t){return t.formatter||new r}function s(e,n){var i=e.getElementsByTagName("select"),r=n._time_format_order,a=0,o=0;if(t.defined(r[3])){var s=i[r[3]],l=parseInt(s.value,10);isNaN(l)&&s.hasAttribute("data-value")&&(l=parseInt(s.getAttribute("data-value"),10)),a=Math.floor(l/60),o=l%60}return new Date(i[r[2]].value,i[r[1]].value,i[r[0]].value,a,o)}function l(t,e){var n=t.getElementsByTagName("input")[1];return(n=o(e).parse(n.value))&&!window.isNaN(n)||(n=1),n<0&&(n*=-1),n}return i(a,e),a.prototype.render=function(e){var n="<div class='gantt_time_selects'>"+t.form_blocks.getTimePicker.call(this,e)+"</div>",i=" "+t.locale.labels[t.config.duration_unit+"s"]+" ",r=e.single_date?" style='display:none'":"",a=e.readonly?" disabled='disabled'":"",o=t._waiAria.lightboxDurationInputAttrString(e),s="gantt_duration_value";e.formatter&&(i="",s+=" gantt_duration_value_formatted");var l="<div class='gantt_duration' "+r+"><input type='button' class='gantt_duration_dec' value='−'"+a+"><input type='text' value='5days' class='"+s+"'"+a+" "+o+"><input type='button' class='gantt_duration_inc' value='+'"+a+">"+i+"<span></span></div>",c="gantt_section_time";return"time"!==e.name&&(c+=" gantt_section_"+e.name),"<div style='height:"+(e.height||30)+"px;padding-top:0px;font-size:inherit;' class='"+c+"'>"+n+" "+l+"</div>"},a.prototype.set_value=function(e,n,i,r){var a,c,u,d,h=e.getElementsByTagName("select"),f=e.getElementsByTagName("input"),_=f[1],g=[f[0],f[2]],p=e.getElementsByTagName("span")[0],v=r._time_format_order;function m(){var n=s.call(t,e,r),a=l.call(t,e,r),o=t.calculateEndDate({start_date:n,duration:a,task:i}),c=t.templates.task_end_date||t.templates.task_date;p.innerHTML=c(o)}function y(t){var e=_.value;e=o(r).parse(e),window.isNaN(e)&&(e=0),(e+=t)<1&&(e=1),_.value=o(r).format(e),m()}g[0].onclick=t.bind(function(){y(-1*t.config.duration_step)},this),g[1].onclick=t.bind(function(){y(1*t.config.duration_step)},this),h[0].onchange=m,h[1].onchange=m,h[2].onchange=m,h[3]&&(h[3].onchange=m),_.onkeydown=t.bind(function(e){var n;return(n=(e=e||window.event).charCode||e.keyCode||e.which)==t.constants.KEY_CODES.DOWN?(y(-1*t.config.duration_step),!1):n==t.constants.KEY_CODES.UP?(y(1*t.config.duration_step),!1):void window.setTimeout(m,1)},this),_.onchange=t.bind(m,this),"string"==typeof(a=t._resolve_default_mapping(r))&&(a={start_date:a}),c=i[a.start_date]||new Date,u=i[a.end_date]||t.calculateEndDate({start_date:c,duration:1,task:i}),d=Math.round(i[a.duration])||t.calculateDuration({start_date:c,end_date:u,task:i}),d=o(r).format(d),t.form_blocks._fill_lightbox_select(h,0,c,v,r),_.value=d,m()},a.prototype.get_value=function(e,n,i){var r=s(e,i),a=l(e,i),o=t.calculateEndDate({start_date:r,duration:a,task:n});return"string"==typeof t._resolve_default_mapping(i)?r:{start_date:r,end_date:o,duration:a}},a.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},a}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(t){var e=(t.height||"23")+"px",n="<div class='gantt_cal_ltext gantt_section_"+t.name+"' style='height:"+e+";'>";if(t.options&&t.options.length)for(var i=0;i<t.options.length;i++)n+="<label><input type='radio' value='"+t.options[i].key+"' name='"+t.name+"'>"+t.options[i].label+"</label>";return n+="</div>"},r.prototype.set_value=function(t,e,n,i){var r;i.options&&i.options.length&&(r=t.querySelector("input[type=radio][value='"+e+"']")||t.querySelector("input[type=radio][value='"+i.default_value+"']"))&&(!t._dhx_onchange&&i.onchange&&(t.onchange=i.onchange,t._dhx_onchange=!0),r.checked=!0)},r.prototype.get_value=function(t,e){var n=t.querySelector("input[type=radio]:checked");return n?n.value:""},r.prototype.focus=function(e){t._focus(e.querySelector("input[type=radio]"))},r}},function(t,e,n){var i=n(2),r=n(3);t.exports=function(t){var e=n(7)(t);function a(){return e.apply(this,arguments)||this}return r(a,e),a.prototype.render=function(t){var e=(t.height||"23")+"px",n="<div class='gantt_cal_ltext gantt_section_"+t.name+"' style='height:"+e+";'>";if(t.options&&t.options.length)for(var i=0;i<t.options.length;i++)n+="<label><input type='checkbox' value='"+t.options[i].key+"' name='"+t.name+"'>"+t.options[i].label+"</label>";else t.single_value=!0,n+="<label><input type='checkbox' name='"+t.name+"'></label>";return n+="</div>"},a.prototype.set_value=function(t,e,n,r){var a=Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]"));(!t._dhx_onchange&&r.onchange&&(t.onchange=r.onchange,t._dhx_onchange=!0),r.single_value)?a[0].checked=!!e:i.forEach(a,function(t){t.checked=!!e&&e.indexOf(t.value)>=0})},a.prototype.get_value=function(t,e,n){return n.single_value?t.querySelector("input[type=checkbox]").checked:i.arrayMap(Array.prototype.slice.call(t.querySelectorAll("input[type=checkbox]:checked")),function(t){return t.value})},a.prototype.focus=function(e){t._focus(e.querySelector("input[type=checkbox]"))},a}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(e){var n=t.form_blocks.getTimePicker.call(this,e),i="gantt_section_time";"time"!==e.name&&(i+=" gantt_section_"+e.name);var r="<div style='height:"+(e.height||30)+"px;padding-top:0px;font-size:inherit;text-align:center;' class='"+i+"'>";return r+=n,e.single_date?(n=t.form_blocks.getTimePicker.call(this,e,!0),r+="<span></span>"):r+="<span style='font-weight:normal; font-size:10pt;'> – </span>",r+=n,r+="</div>"},r.prototype.set_value=function(e,n,i,r){var a=r,o=e.getElementsByTagName("select"),s=r._time_format_order;if(a.auto_end_date)for(var l=function(){d=new Date(o[s[2]].value,o[s[1]].value,o[s[0]].value,0,0),h=t.calculateEndDate({start_date:d,duration:1,task:i}),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},c=0;c<4;c++)o[c].onchange=l;var u=t._resolve_default_mapping(r);"string"==typeof u&&(u={start_date:u});var d=i[u.start_date]||new Date,h=i[u.end_date]||t.calculateEndDate({start_date:d,duration:1,task:i});t.form_blocks._fill_lightbox_select(o,0,d,s,a),t.form_blocks._fill_lightbox_select(o,s.size,h,s,a)},r.prototype.get_value=function(e,n,i){var r,a=e.getElementsByTagName("select"),o=i._time_format_order;return r=t.form_blocks.getTimePickerValue(a,i),"string"==typeof t._resolve_default_mapping(i)?r:{start_date:r,end_date:function(e,n,r){var a=t.form_blocks.getTimePickerValue(e,i,n.size);return a<=r&&(!1!==i.autofix_end||i.single_date)?t.date.add(r,t._get_timepicker_step(),"minute"):a}(a,o,r)}},r.prototype.focus=function(e){t._focus(e.getElementsByTagName("select")[0])},r}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(t){var e=(t.height||"130")+"px";return"<div class='gantt_cal_ltext gantt_section_"+t.name+"' style='height:"+e+";'><textarea></textarea></div>"},r.prototype.set_value=function(e,n){t.form_blocks.textarea._get_input(e).value=n||""},r.prototype.get_value=function(e){return t.form_blocks.textarea._get_input(e).value},r.prototype.focus=function(e){var n=t.form_blocks.textarea._get_input(e);t._focus(n,!0)},r.prototype._get_input=function(t){return t.querySelector("textarea")},r}},function(t,e,n){var i=n(3);t.exports=function(t){var e=n(7)(t);function r(){return e.apply(this,arguments)||this}return i(r,e),r.prototype.render=function(t){var e=(t.height||"30")+"px";return"<div class='gantt_cal_ltext gantt_cal_template gantt_section_"+t.name+"' style='height:"+e+";'></div>"},r.prototype.set_value=function(t,e){t.innerHTML=e||""},r.prototype.get_value=function(t){return t.innerHTML||""},r.prototype.focus=function(){},r}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){var e=n(1),r=n(2),a=n(78)(t),o=n(77)(t),s=n(76)(t),l=n(18)(t),c=n(75)(t),u=n(74)(t),d=n(73)(t),h=n(72)(t),f=n(18)(t),_=n(71)(t),g=n(70)(t);function p(e,n){var i,r,a="";for(r=0;r<e.length;r++)i=t.config._migrate_buttons[e[r]]?t.config._migrate_buttons[e[r]]:e[r],a+="<div "+t._waiAria.lightboxButtonAttrString(i)+" class='gantt_btn_set gantt_left_btn_set "+i+"_set'"+(n?" style='float:right;'":"")+"><div dhx_button='1' data-dhx-button='1' class='"+i+"'></div><div>"+t.locale.labels[i]+"</div></div>";return a}function v(e,n,i){var r,a,o,s,l,c,u="";switch(i.timeFormat[n]){case"%Y":for(e._time_format_order[2]=n,e._time_format_order.size++,e.year_range&&(isNaN(e.year_range)?e.year_range.push&&(o=e.year_range[0],s=e.year_range[1]):r=e.year_range),r=r||10,a=a||Math.floor(r/2),o=o||i.date.getFullYear()-a,s=s||t.getState().max_date.getFullYear()+a,l=o;l<s;l++)u+="<option value='"+l+"'>"+l+"</option>";break;case"%m":for(e._time_format_order[1]=n,e._time_format_order.size++,l=0;l<12;l++)u+="<option value='"+l+"'>"+t.locale.date.month_full[l]+"</option>";break;case"%d":for(e._time_format_order[0]=n,e._time_format_order.size++,l=1;l<32;l++)u+="<option value='"+l+"'>"+l+"</option>";break;case"%H:%i":for(e._time_format_order[3]=n,e._time_format_order.size++,l=i.first,c=i.date.getDate(),e._time_values=[];l<i.last;)u+="<option value='"+l+"'>"+t.templates.time_picker(i.date)+"</option>",e._time_values.push(l),i.date.setTime(i.date.valueOf()+60*t._get_timepicker_step()*1e3),l=24*(i.date.getDate()!=c?1:0)*60+60*i.date.getHours()+i.date.getMinutes()}return u}t._lightbox_methods={},t._lightbox_template="<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span></div><div class='gantt_cal_larea'></div>",t._lightbox_root=t.$root,t.$services.getService("state").registerProvider("lightbox",function(){return{lightbox:t._lightbox_id}}),t.showLightbox=function(t){if(this.callEvent("onBeforeLightbox",[t])){var e=this.getTask(t),n=this.getLightbox(this.getTaskType(e.type));this._center_lightbox(n),this.showCover(),this._fill_lightbox(t,n),this._waiAria.lightboxVisibleAttr(n),this.callEvent("onLightbox",[t])}},t._get_timepicker_step=function(){if(this.config.round_dnd_dates){var e;if(function(t){var e=t.$ui.getView("timeline");return!(!e||!e.isVisible())}(this)){var n=t.getScale();e=r.getSecondsInUnit(n.unit)*n.step/60}return(!e||e>=1440)&&(e=this.config.time_step),e}return this.config.time_step},t.getLabel=function(t,e){for(var n=this._get_typed_lightbox_config(),i=0;i<n.length;i++)if(n[i].map_to==t)for(var r=n[i].options,a=0;a<r.length;a++)if(r[a].key==e)return r[a].label;return""},t.updateCollection=function(e,n){n=n.slice(0);var i=t.serverList(e);if(!i)return!1;i.splice(0,i.length),i.push.apply(i,n||[]),t.resetLightbox()},t.getLightboxType=function(){return this.getTaskType(this._lightbox_type)},t.getLightbox=function(e){var n,i,r,a,o,s="";if(function(){var e=!0===t.config.csp,n=!!window.Sfdc||!!window.$A||window.Aura||"$shadowResolver$"in document.body;t._lightbox_root=e||n?t.$root:document.body}(),void 0===e&&(e=this.getLightboxType()),!this._lightbox||this.getLightboxType()!=this.getTaskType(e)){this._lightbox_type=this.getTaskType(e),n=document.createElement("div"),s="gantt_cal_light",i=this._is_lightbox_timepicker(),(t.config.wide_form||i)&&(s+=" gantt_cal_light_wide"),i&&(t.config.wide_form=!0,s+=" gantt_cal_light_full"),n.className=s,n.style.visibility="hidden",r=this._lightbox_template,r+=p(this.config.buttons_left),r+=p(this.config.buttons_right,!0),n.innerHTML=r,t._waiAria.lightboxAttr(n),t.config.drag_lightbox&&(n.firstChild.onmousedown=t._ready_to_dnd,n.firstChild.ontouchstart=function(e){t._ready_to_dnd(e.touches[0])},n.firstChild.onselectstart=function(){return!1},n.firstChild.style.cursor="pointer",t._init_dnd_events()),this._lightbox&&this.resetLightbox(),t._lightbox_root.insertBefore(n,t._lightbox_root.firstChild),this._lightbox=n,a=this._get_typed_lightbox_config(e),r=this._render_sections(a);var l=(o=n.querySelector("div.gantt_cal_larea")).style.overflow;o.style.overflow="hidden",o.innerHTML=r,function(e){var n,i,r,a,o,s;for(s=0;s<e.length;s++)n=e[s],r=t._lightbox_root.querySelector("#"+n.id),n.id&&r&&(i=r.querySelector("label"),(a=r.nextSibling)&&(o=a.querySelector("input, select, textarea"))&&(o.id=o.id||"input_"+t.uid(),n.inputId=o.id,i.setAttribute("for",n.inputId)))}(a),this.resizeLightbox(),o.style.overflow=l,this._init_lightbox_events(this),n.style.display="none",n.style.visibility="visible"}return this._lightbox},t._render_sections=function(t){for(var e="",n=0;n<t.length;n++){var i=this.form_blocks[t[n].type];if(i){t[n].id="area_"+this.uid();var r=t[n].hidden?" style='display:none'":"",a="";t[n].button&&(a="<div class='gantt_custom_button' data-index='"+n+"'><div class='gantt_custom_button_"+t[n].button+"'></div><div class='gantt_custom_button_label'>"+this.locale.labels["button_"+t[n].button]+"</div></div>"),this.config.wide_form&&(e+="<div class='gantt_wrap_section' "+r+">"),e+="<div id='"+t[n].id+"' class='gantt_cal_lsection'><label>"+a+this.locale.labels["section_"+t[n].name]+"</label></div>"+i.render.call(this,t[n]),e+="</div>"}}return e},t.resizeLightbox=function(){if(this._lightbox){var t=this._lightbox.querySelector(".gantt_cal_larea");t.style.height="0px",t.style.height=t.scrollHeight+"px",this._lightbox.style.height=t.scrollHeight+this.config.lightbox_additional_height+"px",t.style.height=t.scrollHeight+"px"}},t._center_lightbox=function(e){if(e){e.style.display="block";var n=window.pageYOffset||t._lightbox_root.scrollTop||document.documentElement.scrollTop,i=window.pageXOffset||t._lightbox_root.scrollLeft||document.documentElement.scrollLeft,r=window.innerHeight||document.documentElement.clientHeight;e.style.top=n?Math.round(n+Math.max((r-e.offsetHeight)/2,0))+"px":Math.round(Math.max((r-e.offsetHeight)/2,0)+9)+"px",document.documentElement.scrollWidth>t._lightbox_root.offsetWidth?e.style.left=Math.round(i+(t._lightbox_root.offsetWidth-e.offsetWidth)/2)+"px":e.style.left=Math.round((t._lightbox_root.offsetWidth-e.offsetWidth)/2)+"px"}},t.showCover=function(){this._cover||(this._cover=document.createElement("DIV"),this._cover.className="gantt_cal_cover",(t._lightbox_root||t.$root).appendChild(this._cover))},t.event(window,"deviceorientation",function(){t.getState().lightbox&&t._center_lightbox(t.getLightbox())}),t._init_lightbox_events=function(){t.lightbox_events={},t.lightbox_events.gantt_save_btn=function(){t._save_lightbox()},t.lightbox_events.gantt_delete_btn=function(){t._lightbox_new_type=null,t.callEvent("onLightboxDelete",[t._lightbox_id])&&(t.isTaskExists(t._lightbox_id)?t.$click.buttons.delete(t._lightbox_id):t.hideLightbox())},t.lightbox_events.gantt_cancel_btn=function(){t._cancel_lightbox()},t.lightbox_events.default=function(n,i){if(i.getAttribute("data-dhx-button"))t.callEvent("onLightboxButton",[i.className,i,n]);else{var r,a,o=e.getClassName(i);if(-1!=o.indexOf("gantt_custom_button"))if(-1!=o.indexOf("gantt_custom_button_"))for(r=i.parentNode.getAttribute("data-index"),a=i;a&&-1==e.getClassName(a).indexOf("gantt_cal_lsection");)a=a.parentNode;else r=i.getAttribute("data-index"),a=i.parentNode,i=i.firstChild;var s=t._get_typed_lightbox_config();r&&(r*=1,t.form_blocks[s[1*r].type].button_click(r,i,a,a.nextSibling))}},this.event(t.getLightbox(),"click",function(n){n=n||window.event;var i=e.getTargetNode(n),r=e.getClassName(i);return r||(i=i.previousSibling,r=e.getClassName(i)),i&&r&&0===r.indexOf("gantt_btn_set")&&(i=i.firstChild,r=e.getClassName(i)),!(!i||!r)&&(t.defined(t.lightbox_events[i.className])?t.lightbox_events[i.className]:t.lightbox_events.default)(n,i)}),t.getLightbox().onkeydown=function(n){var i=n||window.event,r=n.target||n.srcElement,a=e.getClassName(r).indexOf("gantt_btn_set")>-1;switch((n||i).keyCode){case t.constants.KEY_CODES.SPACE:if((n||i).shiftKey)return;a&&r.click&&r.click();break;case t.keys.edit_save:if((n||i).shiftKey)return;a&&r.click?r.click():t._save_lightbox();break;case t.keys.edit_cancel:t._cancel_lightbox()}}},t._cancel_lightbox=function(){var e=this.getLightboxValues();this.callEvent("onLightboxCancel",[this._lightbox_id,e.$new]),t.isTaskExists(e.id)&&e.$new&&(this.silent(function(){t.$data.tasksStore.removeItem(e.id),t._update_flags(e.id,null)}),this.refreshData()),this.hideLightbox()},t._save_lightbox=function(){var e=this.getLightboxValues();this.callEvent("onLightboxSave",[this._lightbox_id,e,!!e.$new])&&(t.$data.tasksStore._skipTaskRecalculation="lightbox",e.$new?(delete e.$new,this.addTask(e,e.parent,this.getTaskIndex(e.id))):this.isTaskExists(e.id)&&(this.mixin(this.getTask(e.id),e,!0),this.refreshTask(e.id),this.updateTask(e.id)),t.$data.tasksStore._skipTaskRecalculation=!1,this.refreshData(),this.hideLightbox())},t._resolve_default_mapping=function(t){var e=t.map_to;return!{time:!0,time_optional:!0,duration:!0,duration_optional:!0}[t.type]?"constraint"===t.type&&(t.map_to&&"string"!=typeof t.map_to||(e={constraint_type:"constraint_type",constraint_date:"constraint_date"})):"auto"==t.map_to?e={start_date:"start_date",end_date:"end_date",duration:"duration"}:"string"==typeof t.map_to&&(e={start_date:t.map_to}),e},t.getLightboxValues=function(){var e={};t.isTaskExists(this._lightbox_id)&&(e=this.mixin({},this.getTask(this._lightbox_id)));for(var n=this._get_typed_lightbox_config(),r=0;r<n.length;r++){var a=t._lightbox_root.querySelector("#"+n[r].id);a=a?a.nextSibling:a;var o=this.form_blocks[n[r].type];if(o){var s=o.get_value.call(this,a,e,n[r]),l=t._resolve_default_mapping(n[r]);if("string"==typeof l&&"auto"!=l)e[l]=s;else if("object"==i(l))for(var c in l)l[c]&&(e[l[c]]=s[c])}}return"task"==t._lightbox_new_type&&(e.type=t.config.types.task,t._lightbox_new_type=null),e},t.hideLightbox=function(){var t=this.getLightbox();t&&(t.style.display="none"),this._waiAria.lightboxHiddenAttr(t),this._lightbox_id=null,this.hideCover(),this.callEvent("onAfterLightbox",[])},t.hideCover=function(){this._cover&&this._cover.parentNode.removeChild(this._cover),this._cover=null},t.resetLightbox=function(){t._lightbox&&!t._custom_lightbox&&t._lightbox.parentNode.removeChild(t._lightbox),t._lightbox=null,t.hideCover()},t._set_lightbox_values=function(e,n){var i=e,r=n.getElementsByTagName("span"),a=[];t.templates.lightbox_header?(a.push(""),a.push(t.templates.lightbox_header(i.start_date,i.end_date,i)),r[1].innerHTML="",r[2].innerHTML=t.templates.lightbox_header(i.start_date,i.end_date,i)):(a.push(this.templates.task_time(i.start_date,i.end_date,i)),a.push(String(this.templates.task_text(i.start_date,i.end_date,i)||"").substr(0,70)),r[1].innerHTML=this.templates.task_time(i.start_date,i.end_date,i),r[2].innerHTML=String(this.templates.task_text(i.start_date,i.end_date,i)||"").substr(0,70)),r[1].innerHTML=a[0],r[2].innerHTML=a[1],t._waiAria.lightboxHeader(n,a.join(" "));for(var o=this._get_typed_lightbox_config(this.getLightboxType()),s=0;s<o.length;s++){var l=o[s];if(this.form_blocks[l.type]){var c=t._lightbox_root.querySelector("#"+l.id).nextSibling,u=this.form_blocks[l.type],d=t._resolve_default_mapping(o[s]),h=this.defined(i[d])?i[d]:l.default_value;u.set_value.call(t,c,h,i,l),l.focus&&u.focus.call(t,c)}}t.isTaskExists(e.id)&&(t._lightbox_id=e.id)},t._fill_lightbox=function(t,e){var n=this.getTask(t);this._set_lightbox_values(n,e)},t.getLightboxSection=function(e){for(var n=this._get_typed_lightbox_config(),i=0;i<n.length&&n[i].name!=e;i++);var r=n[i];if(!r)return null;this._lightbox||this.getLightbox();var a=t._lightbox_root.querySelector("#"+r.id),o=a.nextSibling,s={section:r,header:a,node:o,getValue:function(e){return t.form_blocks[r.type].get_value.call(t,o,e||{},r)},setValue:function(e,n){return t.form_blocks[r.type].set_value.call(t,o,e,n||{},r)}},l=this._lightbox_methods["get_"+r.type+"_control"];return l?l(s):s},t._lightbox_methods.get_template_control=function(t){return t.control=t.node,t},t._lightbox_methods.get_select_control=function(t){return t.control=t.node.getElementsByTagName("select")[0],t},t._lightbox_methods.get_textarea_control=function(t){return t.control=t.node.getElementsByTagName("textarea")[0],t},t._lightbox_methods.get_time_control=function(t){return t.control=t.node.getElementsByTagName("select"),t},t._init_dnd_events=function(){var e=t._lightbox_root;this.event(e,"mousemove",t._move_while_dnd),this.event(e,"mouseup",t._finish_dnd),this.event(e,"touchmove",function(e){t._move_while_dnd(e.touches[0])}),this.event(e,"touchend",function(e){t._finish_dnd(e.touches[0])})},t._move_while_dnd=function(e){if(t._dnd_start_lb){document.gantt_unselectable||(t._lightbox_root.className+=" gantt_unselectable",document.gantt_unselectable=!0);var n=t.getLightbox(),i=[e.pageX,e.pageY];n.style.top=t._lb_start[1]+i[1]-t._dnd_start_lb[1]+"px",n.style.left=t._lb_start[0]+i[0]-t._dnd_start_lb[0]+"px"}},t._ready_to_dnd=function(e){var n=t.getLightbox();t._lb_start=[parseInt(n.style.left,10),parseInt(n.style.top,10)],t._dnd_start_lb=[e.pageX,e.pageY]},t._finish_dnd=function(){t._lb_start&&(t._lb_start=t._dnd_start_lb=!1,t._lightbox_root.className=t._lightbox_root.className.replace(" gantt_unselectable",""),document.gantt_unselectable=!1)},t._focus=function(e,n){if(e&&e.focus)if(t.config.touch);else try{n&&e.select&&e.select(),e.focus()}catch(t){}},t.form_blocks={getTimePicker:function(e,n){var i,a,o,s="",l=this.config,c={first:0,last:1440,date:this.date.date_part(new Date(t._min_date.valueOf())),timeFormat:function(e){var n,i,a;if(e.time_format)return e.time_format;a=["%d","%m","%Y"],n=t.getScale(),i=n?n.unit:t.config.duration_unit,r.getSecondsInUnit(i)<r.getSecondsInUnit("day")&&a.push("%H:%i");return a}(e)};for(e._time_format_order={size:0},t.config.limit_time_select&&(c.first=60*l.first_hour,c.last=60*l.last_hour+1,c.date.setHours(l.first_hour)),i=0;i<c.timeFormat.length;i++)i>0&&(s+=" "),(a=v(e,i,c))&&(o=t._waiAria.lightboxSelectAttrString(c.timeFormat[i]),s+="<select "+(e.readonly?"disabled='disabled'":"")+(n?" style='display:none' ":"")+o+">"+a+"</select>");return s},getTimePickerValue:function(e,n,i){var r,a=n._time_format_order,o=t.defined(a[3]),s=0,l=0,c=i||0;return o&&(r=parseInt(e[a[3]+c].value,10),s=Math.floor(r/60),l=r%60),new Date(e[a[2]+c].value,e[a[1]+c].value,e[a[0]+c].value,s,l)},_fill_lightbox_select:function(e,n,i,r){if(e[n+r[0]].value=i.getDate(),e[n+r[1]].value=i.getMonth(),e[n+r[2]].value=i.getFullYear(),t.defined(r[3])){var a=60*i.getHours()+i.getMinutes();a=Math.round(a/t._get_timepicker_step())*t._get_timepicker_step();var o=e[n+r[3]];o.value=a,o.setAttribute("data-value",a)}},template:new a,textarea:new o,select:new l,time:new s,duration:new d,parent:new h,radio:new u,checkbox:new c,resources:new f,constraint:new _,typeselect:new g},t._is_lightbox_timepicker=function(){for(var t=this._get_typed_lightbox_config(),e=0;e<t.length;e++)if("time"==t[e].name&&"time"==t[e].type)return!0;return!1},t._simple_confirm=function(e,n,i,r){if(!e)return i();var a={text:e};n&&(a.title=n),r&&(a.ok=r),i&&(a.callback=function(t){t&&i()}),t.confirm(a)},t._get_typed_lightbox_config=function(e){void 0===e&&(e=this.getLightboxType());var n=function(t){for(var e in this.config.types)if(this.config.types[e]==t)return e;return"task"}.call(this,e);return t.config.lightbox[n+"_sections"]?t.config.lightbox[n+"_sections"]:t.config.lightbox.sections},t._silent_redraw_lightbox=function(t){var e=this.getLightboxType();if(this.getState().lightbox){var n=this.getState().lightbox,i=this.getLightboxValues(),r=this.copy(this.getTask(n));this.resetLightbox();var a=this.mixin(r,i,!0),o=this.getLightbox(t||void 0);this._center_lightbox(this.getLightbox()),this._set_lightbox_values(a,o),this.showCover()}else this.resetLightbox(),this.getLightbox(t||void 0);this.callEvent("onLightboxChange",[e,this.getLightboxType()])}}},function(t,e){t.exports=function(t){function e(){if("force"!=t.config.touch&&(t.config.touch=t.config.touch&&(-1!=navigator.userAgent.indexOf("Mobile")||-1!=navigator.userAgent.indexOf("iPad")||-1!=navigator.userAgent.indexOf("Android")||-1!=navigator.userAgent.indexOf("Touch"))||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1),t.config.touch){var e=!0;try{document.createEvent("TouchEvent")}catch(t){e=!1}e?t._touch_events(["touchmove","touchstart","touchend"],function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:t.target,pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t},function(){return!1}):window.navigator.pointerEnabled?t._touch_events(["pointermove","pointerdown","pointerup"],function(t){return"mouse"==t.pointerType?null:t},function(t){return!t||"mouse"==t.pointerType}):window.navigator.msPointerEnabled&&t._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t},function(t){return!t||t.pointerType==t.MSPOINTER_TYPE_MOUSE})}}function n(e){var n=e.$config.scrollX?t.$ui.getView(e.$config.scrollX):null,i=e.$config.scrollY?t.$ui.getView(e.$config.scrollY):null,r={x:null,y:null};n&&(n.getScrollState().visible&&(r.x=n.$view.scrollLeft));i&&(i.getScrollState().visible&&(r.y=i.$view.scrollTop));return r}function i(){var e;return t.$ui.getView("timeline")&&(e=t.$ui.getView("timeline")._tasks_dnd),e}t.config.touch_drag=500,t.config.touch=!0,t.config.touch_feedback=!0,t.config.touch_feedback_duration=1,t._prevent_touch_scroll=!1,t._touch_feedback=function(){t.config.touch_feedback&&navigator.vibrate&&navigator.vibrate(t.config.touch_feedback_duration)},t.attachEvent("onGanttReady",e),t.attachEvent("onGanttLayoutReady",function(){t.$container&&t.attachEvent("onGanttRender",e,{once:!0})});var r=[];t._touch_events=function(e,a,o){for(var s,l=0,c=!1,u=!1,d=null,h=null,f=null,_=[],g=null,p={},v=0;v<r.length;v++)t.eventRemove(r[v][0],r[v][1],r[v][2]);(r=[]).push([t.$container,e[0],function(e){var r=i();if(!o(e)&&c){h&&clearTimeout(h);var f=a(e);if(r&&(r.drag.id||r.drag.start_drag))return r.on_mouse_move(f),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,!1;if(!t._prevent_touch_scroll){if(f&&d){var _=d.pageX-f.pageX,p=d.pageY-f.pageY;if(!u&&(Math.abs(_)>5||Math.abs(p)>5)&&(u=!0,l=0,s=g?n(g):t.getScrollState()),u){var v,y=s.x+_,k=s.y+p;if(g?(!function(e,n,i){var r=e.$config.scrollX?t.$ui.getView(e.$config.scrollX):null,a=e.$config.scrollY?t.$ui.getView(e.$config.scrollY):null;r&&r.scrollTo(n,null),a&&a.scrollTo(null,i)}(g,y,k),v=n(g)):(t.scrollTo(y,k),v=t.getScrollState()),s.x!=v.x&&p>2*_||s.y!=v.y&&_>2*p)return m(e)}}return m(e)}return!0}}]);try{document.addEventListener("touchmove",function(e){t._touch_drag&&m(e)},{passive:!1})}catch(t){console.warn("Cannot prevent touch event for the page drag")}r.push([this.$container,"contextmenu",function(t){if(c)return m(t)}]),r.push([this.$container,e[1],function(e){if(p=e.touches.length,document&&document.body&&document.body.classList.add("gantt_touch_active"),!o(e))if(e.touches&&e.touches.length>1)c=!1;else{d=a(e),g=function(e){for(var n=t.$layout.getCellsByType("viewCell"),i=0;i<n.length;i++){var r=n[i].$view.getBoundingClientRect();if(e.clientX>=r.left&&e.clientX<=r.right&&e.clientY<=r.bottom&&e.clientY>=r.top)return n[i]}}(d),t._locate_css(d,"gantt_hor_scroll")||t._locate_css(d,"gantt_ver_scroll")||(c=!0);var n=i();h=setTimeout(function(){var e=t.locate(d);n&&e&&!t._locate_css(d,"gantt_link_control")&&!t._locate_css(d,"gantt_grid_data")&&(n.on_mouse_down(d),n.drag&&n.drag.start_drag&&(!function(e){var n=t._getTaskLayers(),i=t.getTask(e);if(i){var r=t.isTaskVisible(e);if(r){f=e;for(var a=0;a<n.length;a++)if((i=n[a].rendered[e])&&i.getAttribute(t.config.task_attribute)&&i.getAttribute(t.config.task_attribute)==e){var o=i.cloneNode(!0);_.push(i),n[a].rendered[e]=o,i.style.display="none",o.className+=" gantt_drag_move ",i.parentNode.appendChild(o)}}else if(i.$split_subtask){var s=i.$rendered_parent;if(!(r=t.isTaskVisible(s)))return;f=e;for(var l=0;l<n.length;l++){var c=n[l].rendered[s],u=void 0;if(c&&c.childNodes&&(u=c.querySelector("[".concat(t.config.task_attribute,'="').concat(i.id,'"]'))),u){var d=u.cloneNode(!0);u.parentNode.appendChild(d),t.$task_bars.appendChild(u),u.style.display="none",_.push(u),u=null}}}}}(e),n._start_dnd(d),t._touch_drag=!0,t.refreshTask(e),t._touch_feedback())),h=null},t.config.touch_drag)}}]),r.push([this.$container,e[2],function(e){if(document&&document.body&&document.body.classList.remove("gantt_touch_active"),!o(e)){h&&clearTimeout(h),t._touch_drag=!1,c=!1;var n=a(e),r=i();if(r&&r.on_mouse_up(n),f&&t.isTaskExists(f)&&(t.refreshTask(f),_.length&&(_.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)}),t._touch_feedback())),c=u=!1,_=[],f=null,d&&l){var s=new Date;if(s-l<500&&p<=1)t.$services.getService("mouseEvents").onDoubleClick(d),m(e);else l=s}else l=new Date}}]);for(v=0;v<r.length;v++)t.event(r[v][0],r[v][1],r[v][2]);function m(t){return t&&t.preventDefault&&t.cancelable&&t.preventDefault(),t.cancelBubble=!0,!1}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),r=n(5),a=["ctrlKey","altKey","shiftKey","metaKey"],o=[[{unit:"month",date:"%M",step:1},{unit:"day",date:"%d",step:1}],[{unit:"day",date:"%d %M",step:1}],[{unit:"day",date:"%d %M",step:1},{unit:"hour",date:"%H:00",step:8}],[{unit:"day",date:"%d %M",step:1},{unit:"hour",date:"%H:00",step:1}]],s=function(){function t(t){var e=this;this.zoomIn=function(){var t=e.getCurrentLevel()-1;t<0||e.setLevel(t)},this.zoomOut=function(){var t=e.getCurrentLevel()+1;t>e._levels.length-1||e.setLevel(t)},this.getCurrentLevel=function(){return e._activeLevelIndex},this.getLevels=function(){return e._levels},this.setLevel=function(t){var n=e._getZoomIndexByName(t);-1===n&&e.$gantt.assert(-1!==n,"Invalid zoom level for gantt.ext.zoom.setLevel. "+t+" is not an expected value."),e._setLevel(n,0)},this._getZoomIndexByName=function(t){var n=-1;if("string"==typeof t){if(!isNaN(Number(t))&&e._levels[Number(t)])n=Number(t);else for(var i=0;i<e._levels.length;i++)if(e._levels[i].name===t){n=i;break}}else n=t;return n},this._getVisibleDate=function(){if(!e.$gantt.$task)return null;var t=e.$gantt.getScrollState().x,n=e.$gantt.$task.offsetWidth;e._visibleDate=e.$gantt.dateFromPos(t+n/2)},this._setLevel=function(t,n){e._activeLevelIndex=t;var i=e.$gantt,r=i.copy(e._levels[e._activeLevelIndex]),a=i.copy(r);if(delete a.name,i.mixin(i.config,a,!0),!!i.$root&&!!i.$task){if(n){var o=e.$gantt.dateFromPos(n+e.$gantt.getScrollState().x);e.$gantt.render();var s=e.$gantt.posFromDate(o);e.$gantt.scrollTo(s-n)}else{var l=e.$gantt.$task.offsetWidth;e._visibleDate||e._getVisibleDate();var c=e._visibleDate;e.$gantt.render();s=e.$gantt.posFromDate(c);e.$gantt.scrollTo(s-l/2)}e.callEvent("onAfterZoom",[e._activeLevelIndex,r])}},this._attachWheelEvent=function(t){var n,r=i.isFF?"wheel":"mousewheel";(n="function"==typeof t.element?t.element():t.element)&&e._domEvents.attach(n,r,e.$gantt.bind(function(t){if(this._useKey){if(a.indexOf(this._useKey)<0)return!1;if(!t[this._useKey])return!1}if("function"==typeof this._handler)return this._handler.apply(this,[t]),!0},e),{passive:!1})},this._defaultHandler=function(t){var n=e.$gantt.$task.getBoundingClientRect().x,i=t.clientX-n,r=!1;(e.$gantt.env.isFF?-40*t.deltaY:t.wheelDelta)>0&&(r=!0),t.preventDefault(),t.stopPropagation(),e._setScaleSettings(r,i)},this._setScaleDates=function(){e._initialStartDate&&e._initialEndDate&&(e.$gantt.config.start_date=e._initialStartDate,e.$gantt.config.end_date=e._initialEndDate)},this.$gantt=t,this._domEvents=this.$gantt._createDomEventScope()}return t.prototype.init=function(t){var e=this;this.$gantt.env.isNode||(this._initialStartDate=t.startDate,this._initialEndDate=t.endDate,this._activeLevelIndex=t.activeLevelIndex?t.activeLevelIndex:0,this._levels=this._mapScales(t.levels||o),this._handler=t.handler||this._defaultHandler,this._minColumnWidth=t.minColumnWidth||60,this._maxColumnWidth=t.maxColumnWidth||240,this._widthStep=t.widthStep||3/8*t.minColumnWidth,this._useKey=t.useKey,this._initialized||(r(this),this.$gantt.attachEvent("onGanttScroll",function(){e._getVisibleDate()})),this._domEvents.detachAll(),"wheel"===t.trigger&&(this.$gantt.$root?this._attachWheelEvent(t):this.$gantt.attachEvent("onGanttReady",function(){e._attachWheelEvent(t)})),this._initialized=!0,this.setLevel(this._activeLevelIndex))},t.prototype._mapScales=function(t){return t.map(function(t){return Array.isArray(t)?{scales:t}:t})},t.prototype._setScaleSettings=function(t,e){t?this._stepUp(e):this._stepDown(e)},t.prototype._stepUp=function(t){if(!(this._activeLevelIndex>=this._levels.length-1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var n=this.$gantt.config.min_column_width+this._widthStep;n>this._maxColumnWidth&&(n=this._minColumnWidth,e++),this.$gantt.config.min_column_width=n}else e++;this._setLevel(e,t)}},t.prototype._stepDown=function(t){if(!(this._activeLevelIndex<1)){var e=this._activeLevelIndex;if(this._setScaleDates(),this._widthStep){var n=this.$gantt.config.min_column_width-this._widthStep;n<this._minColumnWidth&&(n=this._maxColumnWidth,e--),this.$gantt.config.min_column_width=n}else e--;this._setLevel(e,t)}},t}();e.default=s},function(t,e){window.dhtmlx&&(window.dhtmlx.attaches||(window.dhtmlx.attaches={}),window.dhtmlx.attaches.attachGantt=function(t,e,n){var i=document.createElement("DIV");n=n||window.gantt,i.id="gantt_"+n.uid(),i.style.width="100%",i.style.height="100%",i.cmp="grid",document.body.appendChild(i),this.attachObject(i.id),this.dataType="gantt",this.dataObj=n;var r=this.vs[this.av];r.grid=n,n.init(i.id,t,e),i.firstChild.style.border="none",r.gridId=i.id,r.gridObj=i;return this.vs[this._viewRestore()].grid}),void 0!==window.dhtmlXCellObject&&(window.dhtmlXCellObject.prototype.attachGantt=function(t,e,n){n=n||window.gantt;var i=document.createElement("DIV");return i.id="gantt_"+n.uid(),i.style.width="100%",i.style.height="100%",i.cmp="grid",document.body.appendChild(i),this.attachObject(i.id),this.dataType="gantt",this.dataObj=n,n.init(i.id,t,e),i.firstChild.style.border="none",i=null,this.callEvent("_onContentAttach",[]),this.dataObj}),t.exports=null},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}window.jQuery&&function(t){var e=[];t.fn.dhx_gantt=function(i){if("string"!=typeof(i=i||{})){var r=[];return this.each(function(){if(this&&this.getAttribute)if(this.gantt||window.gantt.$root==this)r.push("object"==n(this.gantt)?this.gantt:window.gantt);else{var t=window.gantt.$container&&window.Gantt?window.Gantt.getGanttInstance():window.gantt;for(var e in i)"data"!=e&&(t.config[e]=i[e]);t.init(this),i.data&&t.parse(i.data),r.push(t)}}),1===r.length?r[0]:r}if(e[i])return e[i].apply(this,[]);t.error("Method "+i+" does not exist on jQuery.dhx_gantt")}}(window.jQuery),t.exports=null},function(t,e,n){var i=n(1),r=n(15);t.exports=function(t){var e=50,n=30,a=10,o=50,s=null,l=!1,c=null,u={started:!1},d={};function h(e){return e&&i.isChildOf(e,t.$root)&&e.offsetHeight}function f(){var e=!!document.querySelector(".gantt_drag_marker"),n=!!document.querySelector(".gantt_drag_marker.gantt_grid_resize_area")||!!document.querySelector(".gantt_drag_marker.gantt_row_grid_resize_area"),i=!!document.querySelector(".gantt_link_direction"),r=t.getState(),a=r.autoscroll;return l=e&&!n&&!i,!(!r.drag_mode&&!e||n)||a}function _(e){if(c&&(clearTimeout(c),c=null),e){var n=t.config.autoscroll_speed;n&&n<10&&(n=10),c=setTimeout(function(){s=setInterval(v,n||o)},t.config.autoscroll_delay||a)}}function g(t){t?(_(!0),u.started||(u.x=d.x,u.y=d.y,u.started=!0)):(s&&(clearInterval(s),s=null),_(!1),u.started=!1)}function p(e){var n=f();if(!s&&!c||n||g(!1),!t.config.autoscroll||!n)return!1;d={x:e.clientX,y:e.clientY},"touchmove"==e.type&&(d.x=e.targetTouches[0].clientX,d.y=e.targetTouches[0].clientY),!s&&n&&g(!0)}function v(){if(!f())return g(!1),!1;var e=h(t.$task)?t.$task:h(t.$grid)?t.$grid:t.$root;if(e){var r=!1;[".gantt_drag_marker.gantt_grid_resize_area",".gantt_drag_marker .gantt_row.gantt_row_task",".gantt_drag_marker.gantt_grid_dnd_marker"].forEach(function(t){r=r||!!document.querySelector(t)}),r&&(e=t.$grid);var a=i.getNodePosition(e),o=d.x-a.x,s=d.y-a.y+window.scrollY,c=l?0:m(o,a.width,u.x-a.x),_=m(s,a.height,u.y-a.y+window.scrollY),p=t.getScrollState(),v=p.y,y=p.inner_height,k=p.height,b=p.x,x=p.inner_width,w=p.width;_&&!y?_=0:_<0&&!v?_=0:_>0&&v+y>=k+2&&(_=0),c&&!x?c=0:c<0&&!b?c=0:c>0&&b+x>=w&&(c=0);var S=t.config.autoscroll_step;S&&S<2&&(S=2),c*=S||n,_*=S||n,(c||_)&&function(e,n){var i=t.getScrollState(),r=null,a=null;e&&(r=i.x+e,r=Math.min(i.width,r),r=Math.max(0,r));n&&(a=i.y+n,a=Math.min(i.height,a),a=Math.max(0,a));t.scrollTo(r,a)}(c,_)}}function m(t,n,i){return t-e<0&&t<i?-1:t>n-e&&t>i?1:0}t.attachEvent("onGanttReady",function(){if(!r(t)){var e=i.getRootNode(t.$root)||document.body;t.eventRemove(e,"mousemove",p),t.event(e,"mousemove",p),t.eventRemove(e,"touchmove",p),t.event(e,"touchmove",p),t.eventRemove(e,"pointermove",p),t.event(e,"pointermove",p)}}),t.attachEvent("onDestroy",function(){g(!1)})}},function(t,e,n){t.exports=function(t){t.ext||(t.ext={});for(var e=[n(84),n(83),n(82)],i=0;i<e.length;i++)e[i]&&e[i](t);var r=n(81).default;t.ext.zoom=new r(t)}},function(t,e){t.exports=function(t){t.skins.contrast_white={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:100,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.contrast_black={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:100,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.material={config:{grid_width:411,row_height:34,task_height_offset:6,scale_height:36,link_line_width:2,link_arrow_size:6,lightbox_additional_height:80},_second_column_width:110,_third_column_width:75,_redefine_lightbox_buttons:{buttons_left:["dhx_delete_btn"],buttons_right:["dhx_save_btn","dhx_cancel_btn"]}},t.attachEvent("onAfterTaskDrag",function(e){var n=t.getTaskNode(e);n&&(n.className+=" gantt_drag_animation",setTimeout(function(){var t=n.className.indexOf(" gantt_drag_animation");t>-1&&(n.className=n.className.slice(0,t))},200))})}},function(t,e){t.exports=function(t){t.skins.broadway={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:1,link_arrow_size:7,lightbox_additional_height:86},_second_column_width:90,_third_column_width:80,_lightbox_template:"<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span><div class='gantt_cancel_btn'></div></div><div class='gantt_cal_larea'></div>",_config_buttons_left:{},_config_buttons_right:{gantt_delete_btn:"icon_delete",gantt_save_btn:"icon_save"}}}},function(t,e){t.exports=function(t){t.skins.terrace={config:{grid_width:360,row_height:35,scale_height:35,link_line_width:2,link_arrow_size:6,lightbox_additional_height:75},_second_column_width:90,_third_column_width:70}}},function(t,e){t.exports=function(t){t.skins.meadow={config:{grid_width:350,row_height:27,scale_height:30,link_line_width:2,link_arrow_size:6,lightbox_additional_height:72},_second_column_width:95,_third_column_width:80}}},function(t,e){t.exports=function(t){t.skins.skyblue={config:{grid_width:350,row_height:27,scale_height:27,link_line_width:1,link_arrow_size:8,lightbox_additional_height:75},_second_column_width:95,_third_column_width:80}}},function(t,e){function n(t,e){var n=e.skin;if(!n||t)for(var i=document.getElementsByTagName("link"),r=0;r<i.length;r++){var a=i[r].href.match("dhtmlxgantt_([a-z_]+).css");if(a&&(e.skins[a[1]]||!n)){n=a[1];break}}e.skin=n||"terrace";var o=e.skins[e.skin]||e.skins.terrace;!function(t,e,n){for(var i in e)(void 0===t[i]||n)&&(t[i]=e[i])}(e.config,o.config,t);var s=e.getGridColumns();s[1]&&!e.defined(s[1].width)&&(s[1].width=o._second_column_width),s[2]&&!e.defined(s[2].width)&&(s[2].width=o._third_column_width);for(r=0;r<s.length;r++){var l=s[r];"add"==l.name&&(l.width||(l.width=44),e.defined(l.min_width)&&e.defined(l.max_width)||(l.min_width=l.min_width||l.width,l.max_width=l.max_width||l.width),l.min_width&&(l.min_width=+l.min_width),l.max_width&&(l.max_width=+l.max_width),l.width&&(l.width=+l.width,l.width=l.min_width&&l.min_width>l.width?l.min_width:l.width,l.width=l.max_width&&l.max_width<l.width?l.max_width:l.width))}o.config.task_height&&(e.config.task_height=o.config.task_height||"full"),o.config.bar_height&&(e.config.bar_height=o.config.bar_height||"full"),o._lightbox_template&&(e._lightbox_template=o._lightbox_template),o._redefine_lightbox_buttons&&(e.config.buttons_right=o._redefine_lightbox_buttons.buttons_right,e.config.buttons_left=o._redefine_lightbox_buttons.buttons_left),e.resetLightbox()}t.exports=function(t){t.resetSkin||(t.resetSkin=function(){this.skin="",n(!0,this)},t.skins={},t.attachEvent("onGanttLayoutReady",function(){n(!1,this)}))}},function(t,e){t.exports=function(){function t(t){return t.$ui.getView("timeline")}function e(t){return t.$ui.getView("grid")}function n(n){var i=t(n);if(i&&!i.$config.hidden)return i;var r=e(n);return r&&!r.$config.hidden?r:null}function i(t){var i=null,r=!1;return[".gantt_drag_marker.gantt_grid_resize_area",".gantt_drag_marker .gantt_row.gantt_row_task",".gantt_drag_marker.gantt_grid_dnd_marker"].forEach(function(t){r=r||!!document.querySelector(t)}),(i=r?e(t):n(t))?a(t,i,"scrollY"):null}function r(t){var e=n(t);return e&&"grid"!=e.id?a(t,e,"scrollX"):null}function a(t,e,n){var i=e.$config[n];return t.$ui.getView(i)}var o="DEFAULT_VALUE";function s(t,e,n,i){var r=t(this);return r&&r.isVisible()?r[e].apply(r,n):i?i():o}return{getColumnIndex:function(t){var n=s.call(this,e,"getColumnIndex",[t]);return n===o?0:n},dateFromPos:function(e){var n=s.call(this,t,"dateFromPos",Array.prototype.slice.call(arguments));return n===o?this.getState().min_date:n},posFromDate:function(e){var n=s.call(this,t,"posFromDate",[e]);return n===o?0:n},getRowTop:function(n){var i=this,r=s.call(i,t,"getRowTop",[n],function(){return s.call(i,e,"getRowTop",[n])});return r===o?0:r},getTaskTop:function(n){var i=this,r=s.call(i,t,"getItemTop",[n],function(){return s.call(i,e,"getItemTop",[n])});return r===o?0:r},getTaskPosition:function(e,n,i){var r=s.call(this,t,"getItemPosition",[e,n,i]);return r===o?{left:0,top:this.getTaskTop(e.id),height:this.getTaskBarHeight(e.id),width:0}:r},getTaskBarHeight:function(n,i){var r=this,a=s.call(r,t,"getBarHeight",[n,i],function(){return s.call(r,e,"getItemHeight",[n])});return a===o?0:a},getTaskHeight:function(n){var i=this,r=s.call(i,t,"getItemHeight",[n],function(){return s.call(i,e,"getItemHeight",[n])});return r===o?0:r},columnIndexByDate:function(e){var n=s.call(this,t,"columnIndexByDate",[e]);return n===o?0:n},roundTaskDates:function(){s.call(this,t,"roundTaskDates",[])},getScale:function(){var e=s.call(this,t,"getScale",[]);return e===o?null:e},getTaskNode:function(e){var n=t(this);if(n&&n.isVisible()){var i=n._taskRenderer.rendered[e];if(!i){var r=n.$config.item_attribute;i=n.$task_bars.querySelector("["+r+"='"+e+"']")}return i||null}return null},getLinkNode:function(e){var n=t(this);return n.isVisible()?n._linkRenderer.rendered[e]:null},scrollTo:function(t,e){var n=i(this),a=r(this),o={position:0},s={position:0};n&&(s=n.getScrollState()),a&&(o=a.getScrollState());var l=a&&1*t==t,c=n&&1*e==e;if(l&&c)for(var u=n._getLinkedViews(),d=a._getLinkedViews(),h=[],f=0;f<u.length;f++)for(var _=0;_<d.length;_++)u[f].$config.id&&d[_].$config.id&&u[f].$config.id===d[_].$config.id&&h.push(u[f].$config.id);l&&(h&&h.forEach(function(t){this.$ui.getView(t).$config.$skipSmartRenderOnScroll=!0}.bind(this)),a.scroll(t),h&&h.forEach(function(t){this.$ui.getView(t).$config.$skipSmartRenderOnScroll=!1}.bind(this))),c&&n.scroll(e);var g={position:0},p={position:0};n&&(g=n.getScrollState()),a&&(p=a.getScrollState()),this.callEvent("onGanttScroll",[o.position,s.position,p.position,g.position])},showDate:function(t){var e=this.posFromDate(t),n=Math.max(e-this.config.task_scroll_offset,0);this.scrollTo(n)},showTask:function(n){var i=this.getTaskPosition(this.getTask(n)),r=i.left;this.config.rtl&&(r=i.left+i.width);var o,s=Math.max(r-this.config.task_scroll_offset,0),l=this._scroll_state().y;o=l?i.top-(l-this.getTaskBarHeight(n))/2:i.top,this.scrollTo(s,o);var c=e(this),u=t(this);c&&u&&c.$config.scrollY!=u.$config.scrollY&&a(this,c,"scrollY").scrollTo(null,o)},_scroll_state:function(){var t={x:!1,y:!1,x_pos:0,y_pos:0,scroll_size:this.config.scroll_size+1,x_inner:0,y_inner:0},e=i(this),n=r(this);if(n){var a=n.getScrollState();a.visible&&(t.x=a.size,t.x_inner=a.scrollSize),t.x_pos=a.position||0}if(e){var o=e.getScrollState();o.visible&&(t.y=o.size,t.y_inner=o.scrollSize),t.y_pos=o.position||0}return t},getScrollState:function(){var t=this._scroll_state();return{x:t.x_pos,y:t.y_pos,inner_width:t.x,inner_height:t.y,width:t.x_inner,height:t.y_inner}},getLayoutView:function(t){return this.$ui.getView(t)},scrollLayoutCell:function(t,e,n){var i=this.$ui.getView(t);if(!i)return!1;if(null!==e){var r=this.$ui.getView(i.$config.scrollX);r&&r.scrollTo(e,null)}if(null!==n){var a=this.$ui.getView(i.$config.scrollY);a&&a.scrollTo(null,n)}}}}},function(t,e){t.exports=function(t){delete t.addTaskLayer,delete t.addLinkLayer}},function(t,e,n){var i=n(1),r=function(t){return{getVerticalScrollbar:function(){return t.$ui.getView("scrollVer")},getHorizontalScrollbar:function(){return t.$ui.getView("scrollHor")},_legacyGridResizerClass:function(t){for(var e=t.getCellsByType("resizer"),n=0;n<e.length;n++){var i=e[n],r=!1,a=i.$parent.getPrevSibling(i.$id);if(a&&a.$config&&"grid"===a.$config.id)r=!0;else{var o=i.$parent.getNextSibling(i.$id);o&&o.$config&&"grid"===o.$config.id&&(r=!0)}r&&(i.$config.css=(i.$config.css?i.$config.css+" ":"")+"gantt_grid_resize_wrap")}},onCreated:function(e){var n=!0;this._legacyGridResizerClass(e),e.attachEvent("onBeforeResize",function(){var r=t.$ui.getView("timeline");r&&(r.$config.hidden=r.$parent.$config.hidden=!t.config.show_chart);var a=t.$ui.getView("grid");if(a){var o=a._getColsTotalWidth(),s=!t.config.show_grid||!t.config.grid_width||0===o;if(n&&!s&&!1!==o&&(t.config.grid_width=o),a.$config.hidden=a.$parent.$config.hidden=s,!a.$config.hidden){var l=a._getGridWidthLimits();if(l[0]&&t.config.grid_width<l[0]&&(t.config.grid_width=l[0]),l[1]&&t.config.grid_width>l[1]&&(t.config.grid_width=l[1]),r&&t.config.show_chart){if(a.$config.width=t.config.grid_width-1,!a.$config.scrollable&&a.$config.scrollY&&t.$root.offsetWidth){var c=a.$gantt.$layout.$container.offsetWidth,u=t.$ui.getView(a.$config.scrollY).$config.width,d=c-(a.$config.width+u);d<0&&(a.$config.width+=d,t.config.grid_width+=d)}if(n)a.$parent.$config.width=t.config.grid_width,a.$parent.$config.group&&t.$layout._syncCellSizes(a.$parent.$config.group,{value:a.$parent.$config.width,isGravity:!1});else if(r&&!i.isChildOf(r.$task,e.$view)){if(!a.$config.original_grid_width){var h=t.skins[t.skin];h&&h.config&&h.config.grid_width?a.$config.original_grid_width=h.config.grid_width:a.$config.original_grid_width=0}t.config.grid_width=a.$config.original_grid_width,a.$parent.$config.width=t.config.grid_width}else a.$parent._setContentSize(a.$config.width,null),t.$layout._syncCellSizes(a.$parent.$config.group,{value:t.config.grid_width,isGravity:!1})}else r&&i.isChildOf(r.$task,e.$view)&&(a.$config.original_grid_width=t.config.grid_width),n||(a.$parent.$config.width=0)}n=!1}}),this._initScrollStateEvents(e)},_initScrollStateEvents:function(e){t._getVerticalScrollbar=this.getVerticalScrollbar,t._getHorizontalScrollbar=this.getHorizontalScrollbar;var n=this.getVerticalScrollbar(),i=this.getHorizontalScrollbar();n&&n.attachEvent("onScroll",function(e,n,i){var r=t.getScrollState();t.callEvent("onGanttScroll",[r.x,e,r.x,n])}),i&&i.attachEvent("onScroll",function(e,n,i){var r=t.getScrollState();t.callEvent("onGanttScroll",[e,r.y,n,r.y]);var a=t.$ui.getView("grid");a&&a.$grid_data&&!a.$config.scrollable&&(a.$grid_data.style.left=a.$grid.scrollLeft+"px",a.$grid_data.scrollLeft=a.$grid.scrollLeft)}),e.attachEvent("onResize",function(){n&&!t.$scroll_ver&&(t.$scroll_ver=n.$scroll_ver),i&&!t.$scroll_hor&&(t.$scroll_hor=i.$scroll_hor)})},_findGridResizer:function(t,e){for(var n,i=t.getCellsByType("resizer"),r=!0,a=0;a<i.length;a++){var o=i[a];o._getSiblings();var s=o._behind,l=o._front;if(s&&s.$content===e||s.isChild&&s.isChild(e)){n=o,r=!0;break}if(l&&l.$content===e||l.isChild&&l.isChild(e)){n=o,r=!1;break}}return{resizer:n,gridFirst:r}},onInitialized:function(e){var n=t.$ui.getView("grid"),i=this._findGridResizer(e,n);if(i.resizer){var r,a=i.gridFirst,o=i.resizer;if("x"!==o.$config.mode)return;o.attachEvent("onResizeStart",function(e,n){var i=t.$ui.getView("grid"),o=i?i.$parent:null;if(o){var s=i._getGridWidthLimits();i.$config.scrollable||(o.$config.minWidth=s[0]),o.$config.maxWidth=s[1]}return r=a?e:n,t.callEvent("onGridResizeStart",[r])}),o.attachEvent("onResize",function(e,n){var i=a?e:n;return t.callEvent("onGridResize",[r,i])}),o.attachEvent("onResizeEnd",function(e,n,i,r){var o=a?e:n,s=a?i:r,l=t.$ui.getView("grid"),c=l?l.$parent:null;c&&(c.$config.minWidth=void 0);var u=t.callEvent("onGridResizeEnd",[o,s]);return u&&0!==s&&(t.config.grid_width=s),u})}},onDestroyed:function(t){}}};t.exports=r},function(t,e,n){var i=n(1),r=function(t,e){var n,r,a,o,s,l=10,c=18;function u(){return{link_source_id:o,link_target_id:r,link_from_start:s,link_to_start:a,link_landing_area:n}}var d=e.$services,h=d.getService("state"),f=d.getService("dnd");h.registerProvider("linksDnD",u);var _=new f(t.$task_bars,{sensitivity:0,updates_per_second:60,mousemoveContainer:e.$root,selector:".gantt_link_point",preventDefault:!0});function g(n,i,r,a,o){var s=function(n,i,r){var a=i(n),o={x:a.left,y:a.top,width:a.width,height:a.height};r.rtl?(o.xEnd=o.x,o.x=o.xEnd+o.width):o.xEnd=o.x+o.width;if(o.yEnd=o.y+o.height,e.getTaskType(n.type)==e.config.types.milestone){var s=function(e){var n=t.getBarHeight(e,!0);return Math.round(Math.sqrt(2*n*n))-2}(n.id);o.x+=(r.rtl?1:-1)*(s/2),o.xEnd+=(r.rtl?-1:1)*(s/2),o.width=a.xEnd-a.x}return o}(n,function(t){return e.getTaskPosition(t)},a),l={x:s.x,y:s.y};i||(l.x=s.xEnd),l.y+=e.getTaskHeight(n.id)/2;var c=function(t){return e.getTaskType(t.type)==e.config.types.milestone}(n)&&o?2:0;return r=r||0,a.rtl&&(r*=-1),l.x+=(i?-1:1)*r-c,l}function p(t,n){var i=_.getPosition(t),r=function(t){var e=0,n=0;return t&&(e=t.offsetWidth||0,n=t.offsetHeight||0),{width:e,height:n}}(n),a=function(){var t=e.$root;return{right:t.offsetWidth,bottom:t.offsetHeight}}(),o=e.config.tooltip_offset_x||l,s=e.config.tooltip_offset_y||l,u=e.config.scroll_size||c,d=e.$container.getBoundingClientRect().y+window.scrollY,h={y:i.y+s,x:i.x+o,bottom:i.y+r.height+s+u,right:i.x+r.width+o+u};return h.bottom>a.bottom+d&&(h.y=a.bottom+d-r.height-s),h.right>a.right&&(h.x=a.right-r.width-o),h}function v(t){var n=u(),i=["gantt_link_tooltip"];n.link_source_id&&n.link_target_id&&(e.isLinkAllowed(n.link_source_id,n.link_target_id,n.link_from_start,n.link_to_start)?i.push("gantt_allowed_link"):i.push("gantt_invalid_link"));var r=e.templates.drag_link_class(n.link_source_id,n.link_from_start,n.link_target_id,n.link_to_start);r&&i.push(r);var a="<div class='"+r+"'>"+e.templates.drag_link(n.link_source_id,n.link_from_start,n.link_target_id,n.link_to_start)+"</div>";t.innerHTML=a}function m(){o=s=r=null,a=!0}function y(n,i,r,a){var o=function(){_._direction&&_._direction.parentNode||(_._direction=document.createElement("div"),t.$task_links.appendChild(_._direction));return _._direction}(),s=u(),l=["gantt_link_direction"];e.templates.link_direction_class&&l.push(e.templates.link_direction_class(s.link_source_id,s.link_from_start,s.link_target_id,s.link_to_start));var c=Math.sqrt(Math.pow(r-n,2)+Math.pow(a-i,2));if(c=Math.max(0,c-3)){o.className=l.join(" ");var d=(a-i)/(r-n),h=Math.atan(d);2==k(n,r,i,a)?h+=Math.PI:3==k(n,r,i,a)&&(h-=Math.PI);var f=Math.sin(h),g=Math.cos(h),p=Math.round(i),v=Math.round(n),m=["-webkit-transform: rotate("+h+"rad)","-moz-transform: rotate("+h+"rad)","-ms-transform: rotate("+h+"rad)","-o-transform: rotate("+h+"rad)","transform: rotate("+h+"rad)","width:"+Math.round(c)+"px"];if(-1!=window.navigator.userAgent.indexOf("MSIE 8.0")){m.push('-ms-filter: "'+function(t,e){return"progid:DXImageTransform.Microsoft.Matrix(M11 = "+e+",M12 = -"+t+",M21 = "+t+",M22 = "+e+",SizingMethod = 'auto expand')"}(f,g)+'"');var y=Math.abs(Math.round(n-r)),b=Math.abs(Math.round(a-i));switch(k(n,r,i,a)){case 1:p-=b;break;case 2:v-=y,p-=b;break;case 3:v-=y}}m.push("top:"+p+"px"),m.push("left:"+v+"px"),o.style.cssText=m.join(";")}}function k(t,e,n,i){return e>=t?i<=n?1:4:i<=n?2:3}_.attachEvent("onBeforeDragStart",e.bind(function(n,r){var a=r.target||r.srcElement;if(m(),e.getState("tasksDnd").drag_id)return!1;if(i.locateClassName(a,"gantt_link_point")){i.locateClassName(a,"task_start_date")&&(s=!0);var l=e.locate(r);o=l;var c=e.getTask(l);if(e.isReadonly(c))return m(),!1;return this._dir_start=g(c,!!s,0,t.$getConfig(),!0),!0}return!1},this)),_.attachEvent("onAfterDragStart",e.bind(function(t,n){e.config.touch&&e.refreshData(),v(_.config.marker)},this)),_.attachEvent("onDragMove",e.bind(function(o,s){var l=_.config,c=p(s,l.marker);!function(t,e){t.style.left=e.x+"px",t.style.top=e.y+"px"}(l.marker,c);var u=!!i.locateClassName(s,"gantt_link_control"),d=r,h=n,f=a,m=e.locate(s),k=!0,b=i.getTargetNode(s);if(i.isChildOf(b,e.$root)||(u=!1,m=null),u&&(k=!i.locateClassName(s,"task_end_date"),u=!!m),r=m,n=u,a=k,u){var x=e.getTask(m),w=t.$getConfig(),S=i.locateClassName(s,"gantt_link_control"),T=0;S&&(T=Math.floor(S.offsetWidth/2)),this._dir_end=g(x,!!a,T,w)}else this._dir_end=i.getRelativeEventPosition(s,t.$task_data),e.env.isEdge&&(this._dir_end.y+=window.scrollY);var $=!(h==u&&d==m&&f==k);return $&&(d&&e.refreshTask(d,!1),m&&e.refreshTask(m,!1)),$&&v(l.marker),y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y),!0},this)),_.attachEvent("onDragEnd",e.bind(function(){var t=u();if(t.link_source_id&&t.link_target_id&&t.link_source_id!=t.link_target_id){var n=e._get_link_type(t.link_from_start,t.link_to_start),i={source:t.link_source_id,target:t.link_target_id,type:n};i.type&&e.isLinkAllowed(i)&&e.callEvent("onLinkCreated",[i])&&e.addLink(i)}m(),e.config.touch?e.refreshData():(t.link_source_id&&e.refreshTask(t.link_source_id,!1),t.link_target_id&&e.refreshTask(t.link_target_id,!1)),_._direction&&(_._direction.parentNode&&_._direction.parentNode.removeChild(_._direction),_._direction=null)},this)),e.attachEvent("onGanttRender",e.bind(function(){_._direction&&y(this._dir_start.x,this._dir_start.y,this._dir_end.x,this._dir_end.y)},this))};t.exports={createLinkDND:function(){return{init:r}}}},function(t,e,n){var i=n(1),r=n(0),a=n(50),o=n(2);t.exports={createTaskDND:function(){var t;return{extend:function(e){e.roundTaskDates=function(e){t.round_task_dates(e)}},init:function(e,n){return t=function(t,e){var n=e.$services;return{drag:null,dragMultiple:{},_events:{before_start:{},before_finish:{},after_finish:{}},_handlers:{},init:function(){this._domEvents=e._createDomEventScope(),this.clear_drag_state();var t=e.config.drag_mode;this.set_actions(),n.getService("state").registerProvider("tasksDnd",r.bind(function(){return{drag_id:this.drag?this.drag.id:void 0,drag_mode:this.drag?this.drag.mode:void 0,drag_from_start:this.drag?this.drag.left:void 0}},this));var i={before_start:"onBeforeTaskDrag",before_finish:"onBeforeTaskChanged",after_finish:"onAfterTaskDrag"};for(var a in this._events)for(var o in t)this._events[a][o]=i[a];this._handlers[t.move]=this._move,this._handlers[t.resize]=this._resize,this._handlers[t.progress]=this._resize_progress},set_actions:function(){var n=t.$task_data;this._domEvents.attach(n,"mousemove",e.bind(function(t){this.on_mouse_move(t)},this)),this._domEvents.attach(n,"mousedown",e.bind(function(t){this.on_mouse_down(t)},this)),this._domEvents.attach(document.body,"mouseup",e.bind(function(t){this.on_mouse_up(t)},this))},clear_drag_state:function(){this.drag={id:null,mode:null,pos:null,start_x:null,start_y:null,obj:null,left:null},this.dragMultiple={}},_resize:function(n,i,r){var a=t.$getConfig(),o=this._drag_task_coords(n,r);r.left?(n.start_date=e.dateFromPos(o.start+i),n.start_date||(n.start_date=new Date(e.getState().min_date))):(n.end_date=e.dateFromPos(o.end+i),n.end_date||(n.end_date=new Date(e.getState().max_date)));var s=this._calculateMinDuration(a.min_duration,a.duration_unit);n.end_date-n.start_date<a.min_duration&&(r.left?n.start_date=e.calculateEndDate(n.end_date,-s,a.duration_unit,n):n.end_date=e.calculateEndDate(n.start_date,s,a.duration_unit,n)),e._init_task_timing(n)},_calculateMinDuration:function(t,e){return Math.ceil(t/{minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:31356e6}[e])},_resize_progress:function(e,n,i){var r=this._drag_task_coords(e,i),a=t.$getConfig().rtl?r.start-i.pos.x:i.pos.x-r.start,o=Math.max(0,a);e.progress=Math.min(1,o/Math.abs(r.end-r.start))},_find_max_shift:function(t,n){var i;for(var r in t){var a=t[r],o=e.getTask(a.id),s=this._drag_task_coords(o,a),l=e.posFromDate(new Date(e.getState().min_date)),c=e.posFromDate(new Date(e.getState().max_date));if(s.end+n>c){var u=c-s.end;(u<i||void 0===i)&&(i=u)}else if(s.start+n<l){var d=l-s.start;(d>i||void 0===i)&&(i=d)}}return i},_move:function(t,n,i,r){var a=this._drag_task_coords(t,i),o=null,s=null;r?(o=new Date(+i.obj.start_date+r),s=new Date(+i.obj.end_date+r)):(o=e.dateFromPos(a.start+n),s=e.dateFromPos(a.end+n)),o?s?(t.start_date=o,t.end_date=s):(t.end_date=new Date(e.getState().max_date),t.start_date=e.dateFromPos(e.posFromDate(t.end_date)-(a.end-a.start))):(t.start_date=new Date(e.getState().min_date),t.end_date=e.dateFromPos(e.posFromDate(t.start_date)+(a.end-a.start)))},_drag_task_coords:function(t,n){return{start:n.obj_s_x=n.obj_s_x||e.posFromDate(t.start_date),end:n.obj_e_x=n.obj_e_x||e.posFromDate(t.end_date)}},_mouse_position_change:function(t,e){var n=t.x-e.x,i=t.y-e.y;return Math.sqrt(n*n+i*i)},_is_number:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},on_mouse_move:function(t){if(this.drag.start_drag){var n=i.getRelativeEventPosition(t,e.$task_data),r=this.drag.start_drag.start_x,o=this.drag.start_drag.start_y;(Date.now()-this.drag.timestamp>50||this._is_number(r)&&this._is_number(o)&&this._mouse_position_change({x:r,y:o},n)>20)&&this._start_dnd(t)}if(this.drag.mode){if(!a(this,40))return;this._update_on_move(t)}},_update_item_on_move:function(t,n,i,r,a,o){var s=e.getTask(n),l=e.mixin({},s),c=e.mixin({},s);this._handlers[i].apply(this,[c,t,r,o]),e.mixin(s,c,!0),e.callEvent("onTaskDrag",[s.id,i,c,l,a]),e.mixin(s,c,!0),e.refreshTask(n)},_update_on_move:function(n){var a=this.drag,o=t.$getConfig();if(a.mode){var s=i.getRelativeEventPosition(n,t.$task_data);if(a.pos&&a.pos.x==s.x)return;a.pos=s;var l=e.dateFromPos(s.x);if(!l||isNaN(l.getTime()))return;var c=s.x-a.start_x,u=e.getTask(a.id);if(this._handlers[a.mode]){if(a.mode===o.drag_mode.move){var d={};this._isMultiselect()&&e.getSelectedTasks().indexOf(a.id)>=0&&(d=this.dragMultiple);var h=!1;if(e.isSummaryTask(u)&&e.config.drag_project){var f={};f[a.id]=r.copy(a),h=!0,d=r.mixin(f,this.dragMultiple)}var _=this._find_max_shift(d,c);for(var g in void 0!==_&&(c=_),this._update_item_on_move(c,a.id,a.mode,a,n),d){var p=d[g];if(h&&p.id!=a.id&&(e._bulk_dnd=!0),void 0===_&&(h||Object.keys(d).length>1))var v=l-e.dateFromPos(a.start_x);this._update_item_on_move(c,p.id,p.mode,p,n,v)}e._bulk_dnd=!1}else this._update_item_on_move(c,a.id,a.mode,a,n);e._update_parents(a.id)}}},on_mouse_down:function(n,r){if(2!=n.button||void 0===n.button){var a=t.$getConfig(),o=e.locate(n),s=null;if(e.isTaskExists(o)&&(s=e.getTask(o)),!e.isReadonly(s)&&!this.drag.mode){this.clear_drag_state(),r=r||n.target||n.srcElement;var l=i.getClassName(r),c=this._get_drag_mode(l,r);if(!l||!c)return r.parentNode?this.on_mouse_down(n,r.parentNode):void 0;if(c)if(c.mode&&c.mode!=a.drag_mode.ignore&&a["drag_"+c.mode]){if(o=e.locate(r),s=e.copy(e.getTask(o)||{}),e.isReadonly(s))return this.clear_drag_state(),!1;if(e.isSummaryTask(s)&&!a.drag_project&&c.mode!=a.drag_mode.progress)return void this.clear_drag_state();c.id=o;var u=i.getRelativeEventPosition(n,e.$task_data);c.start_x=u.x,c.start_y=u.y,c.obj=s,this.drag.start_drag=c,this.drag.timestamp=Date.now()}else this.clear_drag_state();else if(e.checkEvent("onMouseDown")&&e.callEvent("onMouseDown",[l.split(" ")[0]])&&r.parentNode)return this.on_mouse_down(n,r.parentNode)}}},_fix_dnd_scale_time:function(n,i){var r=t.$getConfig(),a=e.getScale().unit,o=e.getScale().step;function s(n){if(e.config.correct_work_time){var i=t.$getConfig();e.isWorkTime(n.start_date,void 0,n)||(n.start_date=e.calculateEndDate({start_date:n.start_date,duration:-1,unit:i.duration_unit,task:n}))}}r.round_dnd_dates||(a="minute",o=r.time_step),i.mode==r.drag_mode.resize?i.left?(n.start_date=e.roundDate({date:n.start_date,unit:a,step:o}),s(n)):(n.end_date=e.roundDate({date:n.end_date,unit:a,step:o}),function(n){if(e.config.correct_work_time){var i=t.$getConfig();e.isWorkTime(new Date(n.end_date-1),void 0,n)||(n.end_date=e.calculateEndDate({start_date:n.end_date,duration:1,unit:i.duration_unit,task:n}))}}(n)):i.mode==r.drag_mode.move&&(n.start_date=e.roundDate({date:n.start_date,unit:a,step:o}),s(n),n.end_date=e.calculateEndDate(n))},_fix_working_times:function(n,i){var r=t.$getConfig();(i=i||{mode:r.drag_mode.move}).mode==r.drag_mode.resize?i.left?n.start_date=e.getClosestWorkTime({date:n.start_date,dir:"future",task:n}):n.end_date=e.getClosestWorkTime({date:n.end_date,dir:"past",task:n}):i.mode==r.drag_mode.move&&e.correctTaskWorkTime(n)},_finalize_mouse_up:function(t,n,i,r){var a=e.getTask(t);if(n.work_time&&n.correct_work_time&&this._fix_working_times(a,i),this._fix_dnd_scale_time(a,i),this._fireEvent("before_finish",i.mode,[t,i.mode,e.copy(i.obj),r])){var o=t;e._init_task_timing(a),this.clear_drag_state(),e.updateTask(a.id),this._fireEvent("after_finish",i.mode,[o,i.mode,r])}else this.clear_drag_state(),t==i.id&&(i.obj._dhx_changed=!1,e.mixin(a,i.obj,!0)),e.refreshTask(a.id)},on_mouse_up:function(n){var i=this.drag;if(i.mode&&i.id){var r=t.$getConfig(),a=e.getTask(i.id),o=this.dragMultiple,s=!1,l=0;i.mode===r.drag_mode.move&&(e.isSummaryTask(a)&&r.drag_project||this._isMultiselect())&&(s=!0,l=Object.keys(o).length);var c=function(){if(s)for(var t in o)o[t].id!=i.id&&this._finalize_mouse_up(o[t].id,r,o[t],n);this._finalize_mouse_up(i.id,r,i,n)};s&&l>10?e.batchUpdate(function(){c.call(this)}.bind(this)):c.call(this)}this.clear_drag_state()},_get_drag_mode:function(e,n){var i=t.$getConfig().drag_mode,r={mode:null,left:null};switch((e||"").split(" ")[0]){case"gantt_task_line":case"gantt_task_content":r.mode=i.move;break;case"gantt_task_drag":r.mode=i.resize;var a=n.getAttribute("data-bind-property");r.left="start_date"==a;break;case"gantt_task_progress_drag":r.mode=i.progress;break;case"gantt_link_control":case"gantt_link_point":r.mode=i.ignore;break;default:r=null}return r},_start_dnd:function(n){var i=this.drag=this.drag.start_drag;delete i.start_drag;var r=t.$getConfig(),a=i.id;if(r["drag_"+i.mode]&&e.callEvent("onBeforeDrag",[a,i.mode,n])&&this._fireEvent("before_start",i.mode,[a,i.mode,n])){delete i.start_drag;var s=e.getTask(a);if(e.isReadonly(s))return void this.clear_drag_state();if(this._isMultiselect()){var l=e.getSelectedTasks();l.indexOf(i.id)>=0&&o.forEach(l,e.bind(function(t){var n=e.getTask(t);e.isSummaryTask(n)&&e.config.drag_project&&i.mode==r.drag_mode.move&&this._addSubtasksToDragMultiple(n.id),this.dragMultiple[t]=e.mixin({id:n.id,obj:e.copy(n)},this.drag)},this))}e.isSummaryTask(s)&&e.config.drag_project&&i.mode==r.drag_mode.move&&this._addSubtasksToDragMultiple(s.id),e.callEvent("onTaskDragStart",[])}else this.clear_drag_state()},_fireEvent:function(t,n,i){e.assert(this._events[t],"Invalid stage:{"+t+"}");var r=this._events[t][n];return e.assert(r,"Unknown after drop mode:{"+n+"}"),e.assert(i,"Invalid event arguments"),!e.checkEvent(r)||e.callEvent(r,i)},round_task_dates:function(e){var n=this.drag,i=t.$getConfig();n||(n={mode:i.drag_mode.move}),this._fix_dnd_scale_time(e,n)},destructor:function(){this._domEvents.detachAll()},_isMultiselect:function(){return e.config.drag_multiple&&!!(e.getSelectedTasks&&e.getSelectedTasks().length>0)},_addSubtasksToDragMultiple:function(t){e.eachTask(function(t){this.dragMultiple[t.id]=e.mixin({id:t.id,obj:e.copy(t)},this.drag)},t,this)}}}(e,n),e._tasks_dnd=t,t.init(n)},destructor:function(){t&&(t.destructor(),t=null)}}}}},function(t,e,n){var i=n(0),r=n(98),a=n(97),o=n(1),s=function(t){var e=t.$services;return{onCreated:function(e){var o=e.$config;o.bind=i.defined(o.bind)?o.bind:"task",o.bindLinks=i.defined(o.bindLinks)?o.bindLinks:"link",e._linksDnD=a.createLinkDND(),e._tasksDnD=r.createTaskDND(),e._tasksDnD.extend(e),this._mouseDelegates=n(31)(t)},onInitialized:function(e){this._attachDomEvents(t),this._attachStateProvider(t,e),e._tasksDnD.init(e,t),e._linksDnD.init(e,t),"timeline"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){this._clearDomEvents(t),this._clearStateProvider(t),e._tasksDnD&&e._tasksDnD.destructor()},extendDom:function(e){t.$task=e.$task,t.$task_scale=e.$task_scale,t.$task_data=e.$task_data,t.$task_bg=e.$task_bg,t.$task_links=e.$task_links,t.$task_bars=e.$task_bars},_clearDomEvents:function(){this._mouseDelegates.destructor(),this._mouseDelegates=null},_attachDomEvents:function(t){function e(e,n){if(e&&this.callEvent("onLinkDblClick",[e,n])){var i=this.getLink(e);if(this.isReadonly(i))return;var r=this.locale.labels.link+" "+this.templates.link_description(this.getLink(e))+" "+this.locale.labels.confirm_link_deleting;window.setTimeout(function(){t._simple_confirm(r,"",function(){t.deleteLink(e)})},this.config.touch?300:1)}}this._mouseDelegates.delegate("click","gantt_task_link",t.bind(function(t,e){var n=this.locate(t,this.config.link_attribute);n&&this.callEvent("onLinkClick",[n,t])},t),this.$task),this._mouseDelegates.delegate("click","gantt_scale_cell",t.bind(function(e,n){var i=o.getRelativeEventPosition(e,t.$task_data),r=t.dateFromPos(i.x),a=Math.floor(t.columnIndexByDate(r)),s=t.getScale().trace_x[a];t.callEvent("onScaleClick",[e,s])},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_task_link",t.bind(function(n,i,r){i=this.locate(n,t.config.link_attribute),e.call(this,i,n)},t),this.$task),this._mouseDelegates.delegate("doubleclick","gantt_link_point",t.bind(function(t,n,i){n=this.locate(t);var r=this.getTask(n),a=null;return i.parentNode&&o.getClassName(i.parentNode)&&(a=o.getClassName(i.parentNode).indexOf("_left")>-1?r.$target[0]:r.$source[0]),a&&e.call(this,a,t),!1},t),this.$task)},_attachStateProvider:function(t,n){var i=n;e.getService("state").registerProvider("tasksTimeline",function(){return{scale_unit:i._tasks?i._tasks.unit:void 0,scale_step:i._tasks?i._tasks.step:void 0}})},_clearStateProvider:function(){e.getService("state").unregisterProvider("tasksTimeline")}}};t.exports=s},function(t,e,n){var i=n(1);function r(t,e){var n=i.getNodePosition(e.$grid_data);return t.x+=n.x+e.$grid.scrollLeft,t.y+=n.y-e.$grid_data.scrollTop,t}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=i.getNodePosition(t.$root);return e>r.width&&(e=r.width-n-2),e}t.exports={removeLineHighlight:function(t){t.markerLine&&t.markerLine.parentNode&&t.markerLine.parentNode.removeChild(t.markerLine),t.markerLine=null},highlightPosition:function(t,e,n){var o=function(t,e){var n=i.getNodePosition(e.$grid_data),r=i.getRelativeEventPosition(t,e.$grid_data),o=n.x+e.$grid.scrollLeft,s=r.y-10,l=e.getItemHeight(t.targetId);s<n.y&&(s=n.y);var c=e.getTotalHeight();return s>n.y+c-l&&(s=n.y+c-l),n.x=o,n.y=s,n.width=a(e.$gantt,n.width,9),n}(t,n);e.marker.style.left=o.x+9+"px",e.marker.style.width=o.width+"px",e.marker.style.overflow="hidden";var s=e.markerLine;s||((s=document.createElement("div")).className="gantt_drag_marker gantt_grid_dnd_marker",s.innerHTML="<div class='gantt_grid_dnd_marker_line'></div>",s.style.pointerEvents="none"),t.child?function(t,e,n){var i=t.targetParent,o=r({x:0,y:n.getItemTop(i)},n),s=n.$grid_data.getBoundingClientRect().bottom+window.scrollY,l=a(n.$gantt,n.$grid_data.offsetWidth);e.innerHTML="<div class='gantt_grid_dnd_marker_folder'></div>",e.style.width=l+"px",e.style.top=o.y+"px",e.style.left=o.x+"px",e.style.height=n.getItemHeight(i)+"px",o.y>s&&(e.style.top=s+"px")}(t,s,n):function(t,e,n){var i=function(t,e){var n=e.$config.rowStore,i={x:0,y:0},o=e.$grid_data.querySelector(".gantt_tree_indent"),s=15,l=0;if(o&&(s=o.offsetWidth),t.targetId!==n.$getRootId()){var c=e.getItemTop(t.targetId),u=e.getItemHeight(t.targetId);if(l=n.exists(t.targetId)?n.calculateItemLevel(n.getItem(t.targetId)):0,t.prevSibling)i.y=c;else if(t.nextSibling){var d=0;n.eachItem(function(t){-1!==n.getIndexById(t.id)&&d++},t.targetId),i.y=c+u+d*u}else i.y=c+u,l+=1}return i.x=40+l*s,i.width=a(e.$gantt,Math.max(e.$grid_data.offsetWidth-i.x,0),i.x),r(i,e)}(t,n),o=n.$grid_data.getBoundingClientRect().bottom+window.scrollY;e.innerHTML="<div class='gantt_grid_dnd_marker_line'></div>",e.style.left=i.x+"px",e.style.height="4px";var s=i.y-2;e.style.top=s+"px",e.style.width=i.width+"px",s>o&&(e.style.top=o+"px")}(t,s,n),e.markerLine||(document.body.appendChild(s),e.markerLine=s)}}},function(t,e,n){var i=n(24);t.exports=function(t,e,n,r,a){var o;if(e!==a.$getRootId())o=n<.25?i.prevSiblingTarget(t,e,a):!(n>.6)||a.hasChild(e)&&a.getItem(e).$open?i.firstChildTarget(t,e,a):i.nextSiblingTarget(t,e,a);else{var s=a.$getRootId();o=a.hasChild(s)&&r>=0?i.lastChildTarget(t,s,a):i.firstChildTarget(t,s,a)}return o}},function(t,e,n){var i=n(24);function r(t,e,n,r,a){for(var o=e;r.exists(o);){var s=r.calculateItemLevel(r.getItem(o));if((s===n||s===n-1)&&r.getBranchIndex(o)>-1)break;o=a?r.getPrev(o):r.getNext(o)}return r.exists(o)?r.calculateItemLevel(r.getItem(o))===n?a?i.nextSiblingTarget(t,o,r):i.prevSiblingTarget(t,o,r):i.firstChildTarget(t,o,r):null}function a(t,e,n,i){return r(t,e,n,i,!0)}function o(t,e,n,i){return r(t,e,n,i,!1)}t.exports=function(t,e,n,r,s,l){var c;if(e!==s.$getRootId()){var u=s.getItem(e),d=s.calculateItemLevel(u);if(d===l){var h=s.getPrevSibling(e);n<.5&&!h?c=i.prevSiblingTarget(t,e,s):(n<.5&&(e=h),c=i.nextSiblingTarget(t,e,s))}else if(d>l)s.eachParent(function(t){s.calculateItemLevel(t)===l&&(e=t.id)},u),c=a(t,e,l,s);else{var f=a(t,e,l,s),_=o(t,e,l,s);c=n<.5?f:_}}else{var g=s.$getRootId(),p=s.getChildren(g);c=i.createDropTargetObject(),c=p.length&&r>=0?a(t,function(t){for(var e=t.getNext();t.exists(e);){var n=t.getNext(e);if(!t.exists(n))return e;e=n}return null}(s),l,s):o(t,g,l,s)}return c}},function(t,e,n){var i=n(1),r=n(24),a=n(102),o=n(101),s=n(100),l=n(16);t.exports={init:function(t,e){var n=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var c=new n(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(c.config.sensitivity=e.$getConfig().dnd_sensitivity),c.attachEvent("onBeforeDragStart",t.bind(function(n,r){var a=u(r);if(!a)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),i.closest(r.target,".gantt_grid_editor_placeholder"))return!1;var o=a.getAttribute(e.$config.item_attribute),s=e.$config.rowStore.getItem(o);return!t.isReadonly(s)&&!d(o)&&(c.config.initial_open_state=s.$open,!!t.callEvent("onRowDragStart",[o,r.target||r.srcElement,r])&&void 0)},t)),c.attachEvent("onAfterDragStart",t.bind(function(t,n){var i=u(n);c.config.marker.innerHTML=i.outerHTML;var a=c.config.marker.firstChild;a&&(c.config.marker.style.opacity=.4,a.style.position="static",a.style.pointerEvents="none"),c.config.id=i.getAttribute(e.$config.item_attribute);var o=e.$config.rowStore,s=o.getItem(c.config.id);c.config.level=o.calculateItemLevel(s),c.config.drop_target=r.createDropTargetObject({targetParent:o.getParent(s.id),targetIndex:o.getBranchIndex(s.id),targetId:s.id,nextSibling:!0}),s.$open=!1,s.$transparent=!0,this.refreshData()},t)),c.attachEvent("onDragMove",t.bind(function(n,i){var a=h(i);return a&&!1!==t.callEvent("onBeforeRowDragMove",[c.config.id,a.targetParent,a.targetIndex])||(a=r.createDropTargetObject(c.config.drop_target)),s.highlightPosition(a,c.config,e),c.config.drop_target=a,t._waiAria.reorderMarkerAttr(c.config.marker),this.callEvent("onRowDragMove",[c.config.id,a.targetParent,a.targetIndex]),!0},t)),c.attachEvent("onDragEnd",t.bind(function(){var n=e.$config.rowStore,i=n.getItem(c.config.id);s.removeLineHighlight(c.config),i.$transparent=!1,i.$open=c.config.initial_open_state;var r=c.config.drop_target;!1===this.callEvent("onBeforeRowDragEnd",[c.config.id,r.targetParent,r.targetIndex])?i.$drop_target=null:(n.move(c.config.id,r.targetIndex,r.targetParent),t.render(),this.callEvent("onRowDragEnd",[c.config.id,r.targetParent,r.targetIndex])),n.refresh(i.id)},t))}function u(t){return i.locateAttribute(t,e.$config.item_attribute)}function d(n){return l(n,t,t.getDatastore(e.$config.bind))}function h(n){var r,s=function(n){var r=i.getRelativeEventPosition(n,e.$grid_data).y,a=e.$config.rowStore;document.doctype||(r+=window.scrollY),r=r||0;var o=e.$state.scrollTop||0,s=t.$grid_data.getBoundingClientRect().height+o+window.scrollY,l=o,u=e.getItemIndexByTopPosition(e.$state.scrollTop);if(a.exists(u)||(u=a.countVisible()-1),u<0)return a.$getRootId();var h=a.getIdByIndex(u),f=e.$state.scrollTop/e.getItemHeight(h),_=f-Math.floor(f);_>.1&&_<.9&&(s-=e.getItemHeight(h)*_,l+=e.getItemHeight(h)*(1-_));var g=i.getNodePosition(e.$grid_data),p=g.y+g.height,v=c.config.marker.offsetHeight;r+v+window.scrollY>=s&&(c.config.marker.style.top=p-v+"px"),r>=s?r=s:r<=l&&(r=l,c.config.marker.style.top=g.y+"px");var m=e.getItemIndexByTopPosition(r);if(m>a.countVisible()-1||m<0)return a.$getRootId();var y=a.getIdByIndex(m);return d(y)?a.getPrevSibling(y):a.getIdByIndex(m)}(n),l=null,u=e.$config.rowStore,h=!e.$getConfig().order_branch_free,f=i.getRelativeEventPosition(n,e.$grid_data).y;return document.doctype||(f+=window.scrollY),s!==u.$getRootId()&&(l=(f-e.getItemTop(s))/e.getItemHeight(s)),h?(r=a(c.config.id,s,l,f,u,c.config.level))&&r.targetParent&&d(r.targetParent)&&(s=u.getPrevSibling(r.targetParent),r=a(c.config.id,s,l,f,u,c.config.level)):r=o(c.config.id,s,l,f,u),r}}}},function(t,e,n){var i=n(1),r=n(16);t.exports={init:function(t,e){var n=t.$services.getService("dnd");if(e.$config.bind&&t.getDatastore(e.$config.bind)){var a=new n(e.$grid_data,{updates_per_second:60});t.defined(e.$getConfig().dnd_sensitivity)&&(a.config.sensitivity=e.$getConfig().dnd_sensitivity),a.attachEvent("onBeforeDragStart",t.bind(function(n,r){var c=o(r);if(!c)return!1;if(t.hideQuickInfo&&t._hideQuickInfo(),i.closest(r.target,".gantt_grid_editor_placeholder"))return!1;var u=c.getAttribute(e.$config.item_attribute);if(l(u))return!1;var d=s().getItem(u);return!t.isReadonly(d)&&(a.config.initial_open_state=d.$open,!!t.callEvent("onRowDragStart",[u,r.target||r.srcElement,r])&&void 0)},t)),a.attachEvent("onAfterDragStart",t.bind(function(t,n){var i=o(n);a.config.marker.innerHTML=i.outerHTML;var r=a.config.marker.firstChild;r&&(r.style.position="static"),a.config.id=i.getAttribute(e.$config.item_attribute);var l=s(),c=l.getItem(a.config.id);a.config.index=l.getBranchIndex(a.config.id),a.config.parent=c.parent,c.$open=!1,c.$transparent=!0,this.refreshData()},t)),a.lastTaskOfLevel=function(t){for(var e=null,n=s().getItems(),i=0,r=n.length;i<r;i++)n[i].$level==t&&(e=n[i]);return e?e.id:null},a._getGridPos=t.bind(function(t){var n=i.getNodePosition(e.$grid_data),r=n.x+e.$grid.scrollLeft,o=t.pos.y-10,s=e.getItemHeight(a.config.id);o<n.y&&(o=n.y);var l=e.getTotalHeight();o>n.y+l-s&&(o=n.y+l-s);var c=n.y+n.height;return o>c-s&&(o=c-s),n.x=r,n.y=o,n},t),a._getTargetY=t.bind(function(n){var r=i.getNodePosition(e.$grid_data),a=e.$state.scrollTop||0,o=t.$grid_data.getBoundingClientRect().height+a,s=n.pageY-r.y+a;return s>o?s=o:s<a&&(s=a),s},t),a._getTaskByY=t.bind(function(t,n){var i=s();t=t||0;var r=e.getItemIndexByTopPosition(t);return(r=n<r?r-1:r)>i.countVisible()-1?null:i.getIdByIndex(r)},t),a.attachEvent("onDragMove",t.bind(function(n,r){var o=t.$grid_data.getBoundingClientRect(),c=o.height+o.y+(e.$state.scrollTop||0)+window.scrollY,u=a.config,d=a._getGridPos(r);t._waiAria.reorderMarkerAttr(u.marker);var h=e.$getConfig(),f=s();d.y<c?u.marker.style.top=d.y+"px":u.marker.style.top=c+"px",u.marker.style.left=d.x+10+"px";var _=i.getNodePosition(t.$root);d.width>_.width&&(u.marker.style.width=_.width-10-2+"px",u.marker.style.overflow="hidden");var g=f.getItem(a.config.id),p=a._getTargetY(r),v=a._getTaskByY(p,f.getIndexById(g.id));function m(t,e){return!f.isChildOf(y.id,e.id)&&(t.$level==e.$level||h.order_branch_free)}if(f.exists(v)||(v=a.lastTaskOfLevel(h.order_branch_free?g.$level:0))==a.config.id&&(v=null),f.exists(v)){var y=f.getItem(v),k=e.getItemTop(y.id),b=e.getItemHeight(y.id);if(k+b/2<p){var x=f.getIndexById(y.id),w=f.getNext(y.id),S=f.getItem(w);if(l(w)){var T=f.getPrev(S.id);S=f.getItem(T)}if(S){if(S.id==g.id)return h.order_branch_free&&f.isChildOf(g.id,y.id)&&1==f.getChildren(y.id).length?void f.move(g.id,f.getBranchIndex(y.id)+1,f.getParent(y.id)):void 0;y=S}else if(w=f.getIdByIndex(x),S=f.getItem(w),l(w)&&(T=f.getPrev(S.id),S=f.getItem(T)),m(S,g)&&S.id!=g.id)return void f.move(g.id,-1,f.getParent(S.id))}else if(h.order_branch_free&&y.id!=g.id&&m(y,g)&&!l(y.id)){if(!f.hasChild(y.id))return y.$open=!0,void f.move(g.id,-1,y.id);if(f.getIndexById(y.id)||b/3<p)return}x=f.getIndexById(y.id),T=f.getIdByIndex(x-1);for(var $=f.getItem(T),C=1;(!$||$.id==y.id)&&x-C>=0;)T=f.getIdByIndex(x-C),$=f.getItem(T),C++;if(g.id==y.id||l(y.id))return;m(y,g)&&g.id!=y.id?f.move(g.id,0,0,y.id):y.$level!=g.$level-1||f.getChildren(y.id).length?$&&m($,g)&&g.id!=$.id&&f.move(g.id,-1,f.getParent($.id)):f.move(g.id,0,y.id)}return!0},t)),a.attachEvent("onDragEnd",t.bind(function(){var e=s(),n=e.getItem(a.config.id);n.$transparent=!1,n.$open=a.config.initial_open_state,!1===this.callEvent("onBeforeRowDragEnd",[a.config.id,a.config.parent,a.config.index])?(e.move(a.config.id,a.config.index,a.config.parent),n.$drop_target=null):this.callEvent("onRowDragEnd",[a.config.id,n.$drop_target]),t.render(),this.refreshData()},t))}function o(t){return i.locateAttribute(t,e.$config.item_attribute)}function s(){return t.getDatastore(e.$config.bind)}function l(e){return r(e,t,s())}}}},function(t,e,n){var i=n(0),r=n(104),a=n(103),o=function(t){return{onCreated:function(e){e.$config=i.mixin(e.$config,{bind:"task"}),"grid"==e.$config.id&&(this.extendGantt(e),t.ext.inlineEditors=t.ext._inlineEditors.createEditors(e),t.ext.inlineEditors.init()),this._mouseDelegates=n(31)(t)},onInitialized:function(e){var n=e.$getConfig();n.order_branch&&("marker"==n.order_branch?a.init(e.$gantt,e):r.init(e.$gantt,e)),this.initEvents(e,t),"grid"==e.$config.id&&this.extendDom(e)},onDestroyed:function(e){"grid"==e.$config.id&&t.ext.inlineEditors.destructor(),this.clearEvents(e,t)},initEvents:function(t,e){this._mouseDelegates.delegate("click","gantt_row",e.bind(function(n,i,r){var a=t.$getConfig();if(null!==i){var o=this.getTask(i);a.scroll_on_click&&!e._is_icon_open_click(n)&&this.showDate(o.start_date),e.callEvent("onTaskRowClick",[i,r])}},e),t.$grid),this._mouseDelegates.delegate("click","gantt_grid_head_cell",e.bind(function(n,i,r){var a=r.getAttribute("data-column-id");if(e.callEvent("onGridHeaderClick",[a,n])){var o=t.$getConfig();if("add"!=a){if(o.sort&&a){for(var s,l=a,c=0;c<o.columns.length;c++)if(o.columns[c].name==a){s=o.columns[c];break}if(s&&void 0!==s.sort&&!0!==s.sort&&!(l=s.sort))return;var u=this._sort&&this._sort.direction&&this._sort.name==a?this._sort.direction:"desc";u="desc"==u?"asc":"desc",this._sort={name:a,direction:u},this.sort(l,"desc"==u)}}else e.$services.getService("mouseEvents").callHandler("click","gantt_add",t.$grid,[n,o.root_id])}},e),t.$grid),this._mouseDelegates.delegate("click","gantt_add",e.bind(function(n,i,r){if(!t.$getConfig().readonly)return this.createTask({},i||e.config.root_id),!1},e),t.$grid)},clearEvents:function(t,e){this._mouseDelegates.destructor(),this._mouseDelegates=null},extendDom:function(e){t.$grid=e.$grid,t.$grid_scale=e.$grid_scale,t.$grid_data=e.$grid_data},extendGantt:function(e){t.getGridColumns=t.bind(e.getGridColumns,e),e.attachEvent("onColumnResizeStart",function(){return t.callEvent("onColumnResizeStart",arguments)}),e.attachEvent("onColumnResize",function(){return t.callEvent("onColumnResize",arguments)}),e.attachEvent("onColumnResizeEnd",function(){return t.callEvent("onColumnResizeEnd",arguments)}),e.attachEvent("onColumnResizeComplete",function(e,n){t.config.grid_width=n}),e.attachEvent("onBeforeRowResize",function(){return t.callEvent("onBeforeRowResize",arguments)}),e.attachEvent("onRowResize",function(){return t.callEvent("onRowResize",arguments)}),e.attachEvent("onBeforeRowResizeEnd",function(){return t.callEvent("onBeforeRowResizeEnd",arguments)}),e.attachEvent("onAfterRowResize",function(){return t.callEvent("onAfterRowResize",arguments)})}}};t.exports=o},function(t,e,n){var i=n(30),r=n(6);t.exports=function(t){return{render:function(e,n,i){var r=n.$getConfig(),a=document.createElement("div");return a.className="gantt_task_grid_row_resize_wrap",a.style.top=n.getItemTop(e.id)+n.getItemHeight(e.id)+"px",a.innerHTML="<div class='gantt_task_grid_row_resize' role='cell'></div>",a.setAttribute(r.task_grid_row_resizer_attribute,e.id),t._waiAria.rowResizerAttr(a),a},update:null,getRectangle:i,getVisibleRange:r}}},function(t,e,n){var i=n(27),r=n(6),a=n(26),o=n(25),s=n(37);function l(t,e,n,i){var r=100*(1-(1*t||0)),a=i.posFromDate(e),o=i.posFromDate(n),s=document.createElement("div");return s.className="gantt_histogram_hor_bar",s.style.top=r+"%",s.style.left=a+"px",s.style.width=o-a+1+"px",s}function c(t,e,n){if(t===e)return null;var i=1-Math.max(t,e),r=Math.abs(t-e),a=document.createElement("div");return a.className="gantt_histogram_vert_bar",a.style.top=100*i+"%",a.style.height=100*r+"%",a.style.left=n+"px",a}t.exports=function(t){var e=s(t),n={},u={},d={};function h(t,e){var i=n[t];i&&i[e]&&i[e].parentNode&&i[e].parentNode.removeChild(i[e])}function f(e,n,i,r,o,s,u){var h=d[e.id];h&&h.parentNode&&h.parentNode.removeChild(h);var f=function(e,n,i,r){for(var o=n.getScale(),s=document.createElement("div"),u=a(o,r),d=u.start;d<=u.end;d++){var h=o.trace_x[d],f=o.trace_x[d+1]||t.date.add(h,o.step,o.unit),_=o.trace_x[d].valueOf(),g=Math.min(e[_]/i,1)||0;if(g<0)return null;var p=Math.min(e[f.valueOf()]/i,1)||0,v=l(g,h,f,n);v&&s.appendChild(v);var m=c(g,p,n.posFromDate(f));m&&s.appendChild(m)}return s}(i,o,s,u);return f&&n&&(f.setAttribute("data-resource-id",e.id),f.setAttribute(o.$config.item_attribute,e.id),f.style.position="absolute",f.style.top=n.top+1+"px",f.style.height=o.getItemHeight(e.id)-1+"px",f.style.left=0),f}function _(t,e,n,i,r,a,o){var s=r.histogram_cell_class(a.start_date,a.end_date,t,a.tasks,a.assignments),l=r.histogram_cell_label(a.start_date,a.end_date,t,a.tasks,a.assignments),c=r.histogram_cell_allocated(a.start_date,a.end_date,t,a.tasks,a.assignments),u=o.getItemHeight(t.id)-1;if(s||l){var d=document.createElement("div");return d.className=["gantt_histogram_cell",s].join(" "),d.setAttribute(o.$config.item_attribute,t.id),d.style.cssText=["left:"+e.left+"px","width:"+e.width+"px","height:"+u+"px","line-height:"+u+"px","top:"+(e.top+1)+"px"].join(";"),l&&(l="<div class='gantt_histogram_label'>"+l+"</div>"),c&&(l="<div class='gantt_histogram_fill' style='height:"+100*Math.min(c/n||0,1)+"%;'></div>"+l),l&&(d.innerHTML=l),d}return null}return{render:function(i,r,s,l){var c=r.$getTemplates(),h=r.getScale(),g=e(i,s.resource_property,h,r),p=[],v={},m=i.capacity||r.$config.capacity||24;n[i.id]={},u[i.id]=null,d[i.id]=null;for(var y=!!l,k=a(h,l),b=k.start;b<=k.end;b++){var x=g[b];if(x&&(!y||o(b,h,l,t))){var w=c.histogram_cell_capacity(x.start_date,x.end_date,i,x.tasks,x.assignments);v[x.start_date.valueOf()]=w||0;var S=r.getItemPosition(i,x.start_date,x.end_date),T=_(i,S,m,0,c,x,r);T&&(p.push(T),n[i.id][b]=T)}}var $=null;if(p.length){$=document.createElement("div");for(var C=0;C<p.length;C++)$.appendChild(p[C]);var E=f(i,S,v,0,r,m,l);E&&($.appendChild(E),d[i.id]=E),u[i.id]=$}return $},update:function(i,r,s,l,c){var u=s.$getTemplates(),g=s.getScale(),p=e(i,l.resource_property,g,s),v=i.capacity||s.$config.capacity||24,m={},y=!!c,k=a(g,c),b={};if(n&&n[i.id])for(var x in n[i.id])b[x]=x;for(var w=k.start;w<=k.end;w++){var S=p[w];if(b[w]=!1,S){var T=u.histogram_cell_capacity(S.start_date,S.end_date,i,S.tasks,S.assignments);m[S.start_date.valueOf()]=T||0;var $=s.getItemPosition(i,S.start_date,S.end_date);if(!y||o(w,g,c,t)){var C=n[i.id];if(C&&C[w])C&&C[w]&&!C[w].parentNode&&r.appendChild(C[w]);else{var E=_(i,$,v,0,u,S,s);E&&(r.appendChild(E),n[i.id][w]=E)}}else h(i.id,w)}}for(var x in b)!1!==b[x]&&h(i.id,x);var A=f(i,$,m,0,s,v,c);A&&(r.appendChild(A),d[i.id]=A)},getRectangle:i,getVisibleRange:r}}},function(t,e,n){var i=n(27),r=n(6),a=n(26),o=n(25),s=n(37);t.exports=function(t){var e=s(t),n={};function l(t,e,n,i,r){var a=n.resource_cell_class(e.start_date,e.end_date,t,e.tasks,e.assignments),o=n.resource_cell_value(e.start_date,e.end_date,t,e.tasks,e.assignments),s=r.getItemHeight(t.id)-1;if(a||o){var l=r.getItemPosition(t,e.start_date,e.end_date),c=document.createElement("div");return c.setAttribute(r.$config.item_attribute,t.id),c.className=["gantt_resource_marker",a].join(" "),c.style.cssText=["left:"+l.left+"px","width:"+l.width+"px","height:"+s+"px","line-height:"+s+"px","top:"+l.top+"px"].join(";"),o&&(c.innerHTML=o),c}return null}function c(t,e){n[t]&&n[t][e]&&n[t][e].parentNode&&n[t][e].parentNode.removeChild(n[t][e])}return{render:function(i,r,s,c){var u=r.$getTemplates(),d=r.getScale(),h=e(i,s.resource_property,r.getScale(),r),f=!!c,_=[];n[i.id]={};for(var g=a(d,c),p=g.start;p<=g.end;p++){var v=h[p];if(v&&(!f||o(p,d,c,t))){var m=l(i,v,u,0,r);m&&(_.push(m),n[i.id][p]=m)}}var y=null;if(_.length){y=document.createElement("div");for(var k=0;k<_.length;k++)y.appendChild(_[k])}return y},update:function(i,r,s,u,d){var h=s.$getTemplates(),f=s.getScale(),_=e(i,u.resource_property,s.getScale(),s),g=a(f,d),p={};if(n&&n[i.id])for(var v in n[i.id])p[v]=v;for(var m=g.start;m<=g.end;m++){var y=_[m];if(p[m]=!1,y)if(o(m,f,d,t))if(n[i.id]&&n[i.id][m])n[i.id]&&n[i.id][m]&&!n[i.id][m].parentNode&&r.appendChild(n[i.id][m]);else{var k=l(i,y,h,0,s);k&&(r.appendChild(k),n[i.id][m]=k)}else c(i.id,m)}for(var v in p)!1!==p[v]&&c(i.id,v)},getRectangle:i,getVisibleRange:r}}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(2),a=n(30),o=n(6);t.exports=function(t){return{render:function(e,n,i,a){for(var o=n.getGridColumns(),s=n.$getTemplates(),l=n.$config.rowStore,c=[],u=0;u<o.length;u++){var d,h,f,_=u==o.length-1,g=o[u];"add"==g.name?(h="<div "+(b=t._waiAria.gridAddButtonAttrString(g))+" class='gantt_add'></div>",f=""):(h=g.template?g.template(e):e[g.name],r.isDate(h)&&(h=s.date_grid(h,e,g.name)),null!==h&&void 0!==h||(h=""),f=h,h="<div class='gantt_tree_content'>"+h+"</div>");var p="gantt_cell"+(_?" gantt_last_cell":""),v=[];if(g.tree){p+=" gantt_cell_tree";for(var m=0;m<e.$level;m++)v.push(s.grid_indent(e));!l.hasChild(e.id)||t.isSplitTask(e)&&!t.config.open_split_tasks?(v.push(s.grid_blank(e)),v.push(s.grid_file(e))):(v.push(s.grid_open(e)),v.push(s.grid_folder(e)))}var y="width:"+(g.width-(_?1:0))+"px;";if(this.defined(g.align)){var k={right:"flex-end",left:"flex-start",center:"center"}[g.align];y+="text-align:"+g.align+";justify-content:"+k+";"}var b=t._waiAria.gridCellAttrString(g,f,e);v.push(h),d="<div class='"+p+"' data-column-index='"+u+"' data-column-name='"+g.name+"' style='"+y+"' "+b+">"+v.join("")+"</div>",c.push(d)}switch(p="",l.$config.name){case"task":p=t.getGlobalTaskIndex(e.id)%2==0?"":" odd";break;case"resource":p=l.visibleOrder.indexOf(e.id)%2==0?"":" odd"}if(p+=e.$transparent?" gantt_transparent":"",p+=e.$dataprocessor_class?" "+e.$dataprocessor_class:"",s.grid_row_class){var x=s.grid_row_class.call(t,e.start_date,e.end_date,e);x&&(p+=" "+x)}l.isSelected(e.id)&&(p+=" gantt_selected");var w=document.createElement("div");w.className="gantt_row"+p+" gantt_row_"+t.getTaskType(e.type);var S=n.getItemHeight(e.id);return w.style.height=S+"px",w.style.lineHeight=S+"px",i.smart_rendering&&(w.style.position="absolute",w.style.left="0px",w.style.top=n.getItemTop(e.id)+"px"),n.$config.item_attribute&&(w.setAttribute(n.$config.item_attribute,e.id),w.setAttribute(n.$config.bind+"_id",e.id)),t._waiAria.taskRowAttr(e,w),w.innerHTML=c.join(""),w},update:null,getRectangle:a,getVisibleRange:o,onrender:function(e,n,r){for(var a=r.getGridColumns(),o=0;o<a.length;o++){var s=a[o];if(s.onrender){var l=n.querySelector("[data-column-name="+s.name+"]");if(l){var c=s.onrender(e,l);if(c&&"string"==typeof c)l.innerHTML=c;else if(c&&"object"===i(c)&&t.config.external_render){var u=t.config.external_render;u.isElement(c)&&u.renderElement(c,l)}}}}}}}},function(t,e,n){var i=n(39),r=n(40);t.exports=function(t){var e={current_pos:null,dirs:{left:"left",right:"right",up:"up",down:"down"},path:[],clear:function(){this.current_pos=null,this.path=[]},point:function(e){this.current_pos=t.copy(e)},get_lines:function(t){this.clear(),this.point(t[0]);for(var e=1;e<t.length;e++)this.line_to(t[e]);return this.get_path()},line_to:function(e){var n=t.copy(e),i=this.current_pos,r=this._get_line(i,n);this.path.push(r),this.current_pos=n},get_path:function(){return this.path},get_wrapper_sizes:function(t,e,n){var i,r=e.$getConfig().link_wrapper_width,a=t.y-r/2;switch(t.direction){case this.dirs.left:i={top:a,height:r,lineHeight:r,left:t.x-t.size-r/2,width:t.size+r};break;case this.dirs.right:i={top:a,lineHeight:r,height:r,left:t.x-r/2,width:t.size+r};break;case this.dirs.up:i={top:a-t.size,lineHeight:t.size+r,height:t.size+r,left:t.x-r/2,width:r};break;case this.dirs.down:i={top:a,lineHeight:t.size+r,height:t.size+r,left:t.x-r/2,width:r}}return i},get_line_sizes:function(t,e){var n,i=e.$getConfig(),r=i.link_line_width,a=i.link_wrapper_width,o=t.size+r;switch(t.direction){case this.dirs.left:case this.dirs.right:n={height:r,width:o,marginTop:(a-r)/2,marginLeft:(a-r)/2};break;case this.dirs.up:case this.dirs.down:n={height:o,width:r,marginTop:(a-r)/2,marginLeft:(a-r)/2}}return n},render_line:function(t,e,n,i){var r=this.get_wrapper_sizes(t,n,i),a=document.createElement("div");a.style.cssText=["top:"+r.top+"px","left:"+r.left+"px","height:"+r.height+"px","width:"+r.width+"px"].join(";"),a.className="gantt_line_wrapper";var o=this.get_line_sizes(t,n),s=document.createElement("div");return s.style.cssText=["height:"+o.height+"px","width:"+o.width+"px","margin-top:"+o.marginTop+"px","margin-left:"+o.marginLeft+"px"].join(";"),s.className="gantt_link_line_"+t.direction,a.appendChild(s),a},_get_line:function(t,e){var n=this.get_direction(t,e),i={x:t.x,y:t.y,direction:this.get_direction(t,e)};return n==this.dirs.left||n==this.dirs.right?i.size=Math.abs(t.x-e.x):i.size=Math.abs(t.y-e.y),i},get_direction:function(t,e){return e.x<t.x?this.dirs.left:e.x>t.x?this.dirs.right:e.y>t.y?this.dirs.down:this.dirs.up}},n={path:[],clear:function(){this.path=[]},current:function(){return this.path[this.path.length-1]},point:function(e){return e?(this.path.push(t.copy(e)),e):this.current()},point_to:function(n,i,r){r=r?{x:r.x,y:r.y}:t.copy(this.point());var a=e.dirs;switch(n){case a.left:r.x-=i;break;case a.right:r.x+=i;break;case a.up:r.y-=i;break;case a.down:r.y+=i}return this.point(r)},get_points:function(n,i,r,a){var o=this.get_endpoint(n,i,r,a),s=t.config,l=o.e_y-o.y,c=o.e_x-o.x,u=e.dirs,d=i.getItemHeight(n.source);this.clear(),this.point({x:o.x,y:o.y});var h=2*s.link_arrow_size,f=this.get_line_type(n,i.$getConfig()),_=o.e_x>o.x;if(f.from_start&&f.to_start)this.point_to(u.left,h),_?(this.point_to(u.down,l),this.point_to(u.right,c)):(this.point_to(u.right,c),this.point_to(u.down,l)),this.point_to(u.right,h);else if(!f.from_start&&f.to_start)if(_=o.e_x>o.x+2*h,this.point_to(u.right,h),_)c-=h,this.point_to(u.down,l),this.point_to(u.right,c);else{c-=2*h;var g=l>0?1:-1;this.point_to(u.down,g*(d/2)),this.point_to(u.right,c),this.point_to(u.down,g*(Math.abs(l)-d/2)),this.point_to(u.right,h)}else f.from_start||f.to_start?f.from_start&&!f.to_start&&(_=o.e_x>o.x-2*h,this.point_to(u.left,h),_?(c+=2*h,g=l>0?1:-1,this.point_to(u.down,g*(d/2)),this.point_to(u.right,c),this.point_to(u.down,g*(Math.abs(l)-d/2)),this.point_to(u.left,h)):(c+=h,this.point_to(u.down,l),this.point_to(u.right,c))):(this.point_to(u.right,h),_?(this.point_to(u.right,c),this.point_to(u.down,l)):(this.point_to(u.down,l),this.point_to(u.right,c)),this.point_to(u.left,h));return this.path},get_line_type:function(e,n){var i=n.links,r=!1,a=!1;return e.type==i.start_to_start?r=a=!0:e.type==i.finish_to_finish?r=a=!1:e.type==i.finish_to_start?(r=!1,a=!0):e.type==i.start_to_finish?(r=!0,a=!1):t.assert(!1,"Invalid link type"),n.rtl&&(r=!r,a=!a),{from_start:r,to_start:a}},get_endpoint:function(t,e,n,i){var r=e.$getConfig(),o=this.get_line_type(t,r),s=o.from_start,l=o.to_start,c=a(n,e,r),u=a(i,e,r);return{x:s?c.left:c.left+c.width,e_x:l?u.left:u.left+u.width,y:c.top+c.rowHeight/2-1,e_y:u.top+u.rowHeight/2-1}}};function a(e,n,i){var r=n.getItemPosition(e);if(t.getTaskType(e.type)==i.types.milestone){var a=n.getBarHeight(e.id,!0),o=Math.sqrt(2*a*a);r.left-=o/2,r.width=o}return r}return{render:function(i,r,a){var o=t.getTask(i.source);if(!o.hide_bar){var s=t.getTask(i.target);if(!s.hide_bar){var l=n.get_endpoint(i,r,o,s),c=l.e_y-l.y;if(!(l.e_x-l.x||c))return null;var u=n.get_points(i,r,o,s),d=e.get_lines(u,r),h=document.createElement("div"),f="gantt_task_link";i.color&&(f+=" gantt_link_inline_color");var _=t.templates.link_class?t.templates.link_class(i):"";_&&(f+=" "+_),a.highlight_critical_path&&t.isCriticalLink&&t.isCriticalLink(i)&&(f+=" gantt_critical_link"),h.className=f,r.$config.link_attribute&&(h.setAttribute(r.$config.link_attribute,i.id),h.setAttribute("link_id",i.id));for(var g=0;g<d.length;g++){g==d.length-1&&(d[g].size-=a.link_arrow_size);var p=e.render_line(d[g],d[g+1],r,i.source);i.color&&(p.firstChild.style.backgroundColor=i.color),h.appendChild(p)}var v=d[d.length-1].direction,m=function(t,n,i,r){var a=i.$getConfig(),o=document.createElement("div"),s=t.y,l=t.x,c=a.link_arrow_size,u="gantt_link_arrow gantt_link_arrow_"+n;switch(n){case e.dirs.right:s-=c/2,l-=c;break;case e.dirs.left:s-=c/2;break;case e.dirs.up:l-=c;break;case e.dirs.down:s+=2*c,l-=c}return o.style.cssText=["top:"+s+"px","left:"+l+"px"].join(";"),o.className=u,o}(u[u.length-1],v,r,i.source);return i.color&&(m.style.borderColor=i.color),h.appendChild(m),t._waiAria.linkAttr(i,h),h}}},update:null,isInViewPort:i,getVisibleRange:r()}}},function(t,e){t.exports=function(t,e){var n=e.config.timeline_placeholder;if(t=t||[],n&&0===t.filter(function(t){return"timeline_placeholder_task"===t.id}).length){var i=e.getState(),r=null,a=i.min_date,o=i.max_date;t.length&&(r=t[t.length-1].id);var s={start_date:a,end_date:o,row_height:n.height||0,id:"timeline_placeholder_task",unscheduled:!0,lastTaskId:r,calendar_id:n.calendar||"global",$source:[],$target:[]};t.push(s)}}},function(t,e,n){var i=n(27),r=n(20),a=n(6),o=n(26),s=n(25),l=n(111);t.exports=function(t){var e={},n={};function c(t,n){return!(!e[t.id][n]||!e[t.id][n].parentNode)}function u(t,n){e[t]&&e[t][n]&&e[t][n].parentNode&&e[t][n].parentNode.removeChild(e[t][n])}function d(t){var e,n=t.$getTemplates();return void 0!==n.task_cell_class?(e=n.task_cell_class,(console.warn||console.log)("gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.")):e=n.timeline_cell_class,e}function h(t){return t.$getTemplates().timeline_cell_content}function f(i,r,a,o,l,c,u,d){var h=i.width[r],f="";if(s(r,i,o,t)){var _=c(a,i.trace_x[r]),g="";if(u&&(g=u(a,i.trace_x[r])),d.static_background){var p=!(!_&&!g);if(!d.static_background_cells||!p)return null}if(e[a.id][r])return n[a.id][r]=r,e[a.id][r];var v=document.createElement("div");return v.style.width=h+"px",f="gantt_task_cell"+(r==l-1?" gantt_last_cell":""),_&&(f+=" "+_),v.className=f,g&&(v.innerHTML=g),v.style.position="absolute",v.style.left=i.left[r]+"px",e[a.id][r]=v,n[a.id][r]=r,v}return null}return{render:function(i,a,s,l){var c=a.$getTemplates(),u=a.getScale(),_=u.count;if(s.static_background&&!s.static_background_cells)return null;var g,p=document.createElement("div"),v=d(a),m=h(a);if(g=l&&s.smart_rendering&&!r(t)?o(u,l.x):{start:0,end:_-1},s.show_task_cells){e[i.id]={},n[i.id]={};for(var y=g.start;y<=g.end;y++){var k=f(u,y,i,l,_,v,m,s);k&&p.appendChild(k)}}var b=a.$config.rowStore,x=b.getIndexById(i.id)%2!=0,w=c.task_row_class(i.start_date,i.end_date,i),S="gantt_task_row"+(x?" odd":"")+(w?" "+w:"");if(b.isSelected(i.id)&&(S+=" gantt_selected"),p.className=S,s.smart_rendering?(p.style.position="absolute",p.style.top=a.getItemTop(i.id)+"px",p.style.width="100%"):p.style.position="relative",p.style.height=a.getItemHeight(i.id)+"px","timeline_placeholder_task"==i.id){var T=0;i.lastTaskId&&(T=a.getItemTop(i.lastTaskId)+a.getItemHeight(i.lastTaskId));var $=(i.row_height||a.$task_data.offsetHeight)-T;$<0&&($=0),s.smart_rendering&&(p.style.top=T+"px"),p.style.height=$+"px"}return a.$config.item_attribute&&(p.setAttribute(a.$config.item_attribute,i.id),p.setAttribute(a.$config.bind+"_id",i.id)),p},update:function(t,i,r,a,s){var l=r.getScale(),_=l.count,g=d(r),p=h(r);if(a.show_task_cells){e[t.id]||(e[t.id]={}),n[t.id]||(n[t.id]={});var v=o(l,s);for(var m in n[t.id]){var y=n[t.id][m];(Number(y)<v.start||Number(y)>v.end)&&u(t.id,y)}n[t.id]={};for(var k=v.start;k<=v.end;k++){var b=f(l,k,t,s,_,g,p,a);!b&&c(t,k)?u(t.id,k):b&&!b.parentNode&&i.appendChild(b)}}},getRectangle:i,getVisibleRange:a,prepareData:l}}},function(t,e,n){var i=n(28),r=n(19),a=n(6);t.exports=function(t){var e=i(t),n={};function o(t,e,n,i,a){var o=!0;return i.smart_rendering&&(o=r(t,e,n,i,a)),o}function s(n,i,r,a){var o=t.copy(t.getTask(i.id));if(o.$rendered_at=n.id,!1!==t.callEvent("onBeforeRollupTaskDisplay",[o.id,o,n.id])){var s=e(o,r);if(s){var l=r.getBarHeight(n.id,i.type==t.config.types.milestone),c=Math.floor((r.getItemHeight(n.id)-l)/2);return s.style.top=a.top+c+"px",s.classList.add("gantt_rollup_child"),s.setAttribute("data-rollup-parent-id",n.id),s}}}function l(t,e){return t+"_"+e}return{render:function(e,i,r,a){if(!1!==e.rollup&&e.$rollup&&e.$rollup.length){var c=document.createElement("div"),u=t.getTaskPosition(e);return a&&(a.y=0,a.y_end=t.$task_bg.scrollHeight),e.$rollup.forEach(function(d){if(t.isTaskExists(d)){var h=t.getTask(d);if(o(h,a,i,r,t)){var f=s(e,h,i,u);f?(n[l(h.id,e.id)]=f,c.appendChild(f)):n[l(h.id,e.id)]=!1}}}),c}return!1},update:function(e,i,r,a,c){var u=document.createElement("div"),d=t.getTaskPosition(e);c.y=0,c.y_end=t.$task_bg.scrollHeight,e.$rollup.forEach(function(h){var f=t.getTask(h),_=l(f.id,e.id),g=o(f,c,r,a,t);if(g!==!!n[_])if(g){var p=s(e,f,r,d);n[_]=p||!1}else n[_]=!1;n[_]&&u.appendChild(n[_]),i.innerHTML="",i.appendChild(u)})},isInViewPort:r,getVisibleRange:a}}},function(t,e,n){var i=n(19);t.exports=function(t,e,n,r,a){if(!a.isSplitTask(t))return!1;var o=a.getSubtaskDates(t.id);return i({id:t.id,start_date:o.start_date,end_date:o.end_date,parent:t.parent},e,n,a)}},function(t,e,n){var i=n(28),r=n(6),a=n(114),o=n(19);t.exports=function(t){var e=i(t),n={};function s(t,e,n,i,r){var a=!t.hide_bar;return i.smart_rendering&&a&&(a=o(t,e,n,i,r)),a}function l(n,i,r,a){if(!i.hide_bar){var o=t.isSummaryTask(i);o&&t.resetProjectDates(i);var s=t.copy(t.getTask(i.id));if(s.$rendered_at=n.id,!1!==t.callEvent("onBeforeSplitTaskDisplay",[s.id,s,n.id])){var l=e(s,r);if(l){var c=r.getBarHeight(n.id,i.type==t.config.types.milestone),u=Math.floor((r.getItemHeight(n.id)-c)/2);return l.style.top=a.top+u+"px",l.classList.add("gantt_split_child"),o&&l.classList.add("gantt_split_subproject"),l}}}}function c(t,e){return t+"_"+e}function u(e,n){return t.isSplitTask(e)&&(n.open_split_tasks&&!e.$open||!n.open_split_tasks)&&t.hasChild(e.id)}return{render:function(e,i,r,a){if(u(e,r)){var o=document.createElement("div"),d=t.getTaskPosition(e);return t.hasChild(e.id)&&t.eachTask(function(u){if(s(u,a,i,r,t)){var h=l(e,u,i,d);h?(n[c(u.id,e.id)]=h,o.appendChild(h)):n[c(u.id,e.id)]=!1}},e.id),o}return!1},update:function(e,i,r,a,o){if(u(e,a)){var d=document.createElement("div"),h=t.getTaskPosition(e);t.eachTask(function(u){var f=c(u.id,e.id),_=s(u,o,r,a,t);if(_!==!!n[f])if(_){var g=l(e,u,r,h);n[f]=g||!1}else n[f]=!1;n[f]&&d.appendChild(n[f]),i.innerHTML="",i.appendChild(d)},e.id)}},isInViewPort:a,getVisibleRange:r}}},function(t,e,n){var i=n(19),r=n(6),a=n(28);t.exports=function(t){return{render:a(t),update:null,isInViewPort:i,getVisibleRange:r}}},function(t,e){t.exports=function(t){return function(n,i,r){"keepDates"==r?function(e,n){"duration"==n?e.end_date=t.calculateEndDate(e):"end_date"!=n&&"start_date"!=n||(e.duration=t.calculateDuration(e))}(n,i):"keepDuration"==r?function(n,i){"end_date"==i?n.start_date=e(n):"start_date"!=i&&"duration"!=i||(n.end_date=t.calculateEndDate(n))}(n,i):function(n,i){t.config.schedule_from_end?"end_date"==i||"duration"==i?n.start_date=e(n):"start_date"==i&&(n.duration=t.calculateDuration(n)):"start_date"==i||"duration"==i?n.end_date=t.calculateEndDate(n):"end_date"==i&&(n.duration=t.calculateDuration(n))}(n,i)};function e(e){return t.calculateEndDate({start_date:e.end_date,duration:-e.duration,task:e})}}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}function a(e){return e.formatter||t.ext.formatters.durationFormatter()}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r="<div role='cell'><input type='text' name='".concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=r},set_value:function(t,e,n,i){this.get_input(i).value=a(n.editor).format(t)},get_value:function(t,e,n){return a(e.editor).parse(this.get_input(n).value||"")}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}function a(e){return e.formatter||t.ext.formatters.linkFormatter()}function o(t,e){for(var n=(t||"").split(e.delimiter||","),i=0;i<n.length;i++){var r=n[i].trim();r?n[i]=r:(n.splice(i,1),i--)}return n.sort(),n}function s(t,e,n){for(var i=t.$target,r=[],o=0;o<i.length;o++){var s=n.getLink(i[o]);r.push(a(e).format(s))}return r.join((e.delimiter||",")+" ")}function l(t){return t.source+"_"+t.target+"_"+t.type+"_"+(t.lag||0)}function c(e,n,i){var r=function(e,n,i){var r=[];return n.forEach(function(n){var o=a(i).parse(n);o&&(o.target=e,o.id="predecessor_generated",t.isLinkAllowed(o)&&(o.id=void 0,r.push(o)))}),r}(e.id,n,i),o={};e.$target.forEach(function(e){var n=t.getLink(e);o[l(n)]=n.id});var s=[];r.forEach(function(t){var e=l(t);o[e]?delete o[e]:s.push(t)});var c=[];for(var u in o)c.push(o[u]);return{add:s,remove:c}}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r="<div role='cell'><input type='text' name='".concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=r},hide:function(){},set_value:function(e,n,i,r){this.get_input(r).value=s(e,i.editor,t)},get_value:function(t,e,n){return o(this.get_input(n).value||"",e.editor)},save:function(e,n,i){var r=c(t.getTask(e),this.get_value(e,n,i),n.editor);(r.add.length||r.remove.length)&&t.batchUpdate(function(){r.add.forEach(function(e){t.addLink(e)}),r.remove.forEach(function(e){t.deleteLink(e)}),t.autoSchedule&&t.autoSchedule()})},is_changed:function(e,n,i,r){var a=this.get_value(n,i,r),l=o(s(e,i.editor,t),i.editor);return a.join()!==l.join()}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0),r="%Y-%m-%d",a=null,o=null;function s(){return e.apply(this,arguments)||this}return n(3)(s,e),i.mixin(s.prototype,{show:function(e,n,i,s){a||(a=t.date.date_to_str(r)),o||(o=t.date.str_to_date(r));var l=null,c=null;l="function"==typeof i.min?i.min(e,n):i.min,c="function"==typeof i.max?i.max(e,n):i.max;var u=l?" min='"+a(l)+"' ":"",d=c?" max='"+a(c)+"' ":"",h="<div style='width:140px' role='cell'><input type='date' ".concat(u," ").concat(d," name='").concat(n.name,"' title='").concat(n.name,"'></div>");s.innerHTML=h},set_value:function(t,e,n,i){t&&t.getFullYear?this.get_input(i).value=a(t):this.get_input(i).value=t},is_valid:function(t,e,n,i){return!(!t||isNaN(t.getTime()))},get_value:function(t,e,n){var i;try{i=o(this.get_input(n).value||"")}catch(t){i=null}return i}},!0),s}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){for(var r="<div role='cell'><select name='".concat(e.name,"' title='").concat(e.name,"'>"),a=[],o=n.options||[],s=0;s<o.length;s++)a.push("<option value='"+n.options[s].key+"'>"+o[s].label+"</option>");r+=a.join("")+"</select></div>",i.innerHTML=r},get_input:function(t){return t.querySelector("select")}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r=n.min||0,a=n.max||100,o="<div role='cell'><input type='number' min='".concat(r,"' max='").concat(a,"' name='").concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=o},get_value:function(t,e,n){return this.get_input(n).value||""},is_valid:function(t,e,n,i){return!isNaN(parseInt(t,10))}},!0),r}},function(t,e,n){t.exports=function(t){var e=n(10)(t),i=n(0);function r(){return e.apply(this,arguments)||this}return n(3)(r,e),i.mixin(r.prototype,{show:function(t,e,n,i){var r="<div role='cell'><input type='text' name='".concat(e.name,"' title='").concat(e.name,"'></div>");i.innerHTML=r}},!0),r}},function(t,e){t.exports={init:function(t,e){var n=t,i=e.$gantt,r=null,a=i.ext.keyboardNavigation;a.attachEvent("onBeforeFocus",function(e){var i=t.locateCell(e);if(clearTimeout(r),i){var a=i.columnName,o=i.id,s=n.getState();if(n.isVisible()&&s.id==o&&s.columnName===a)return!1}return!0}),a.attachEvent("onFocus",function(e){var i=t.locateCell(e),a=t.getState();return clearTimeout(r),!i||i.id==a.id&&i.columnName==a.columnName||n.isVisible()&&n.save(),!0}),t.attachEvent("onHide",function(){clearTimeout(r)}),a.attachEvent("onBlur",function(){return r=setTimeout(function(){n.save()}),!0}),i.attachEvent("onTaskDblClick",function(e,n){var i=t.getState(),r=t.locateCell(n.target);return!r||!t.isVisible()||r.columnName!=i.columnName}),i.attachEvent("onTaskClick",function(e,n){if(i._is_icon_open_click(n))return!0;var r=t.getState(),a=t.locateCell(n.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),i.attachEvent("onEmptyClick",function(){return n.save(),!0}),a.attachEvent("onKeyDown",function(e,r){var o=t.locateCell(r.target),s=!!o&&t.getEditorConfig(o.columnName),l=t.getState(),c=i.constants.KEY_CODES,u=r.keyCode,d=!1;switch(u){case c.ENTER:t.isVisible()?(t.save(),r.preventDefault(),d=!0):s&&!(r.ctrlKey||r.metaKey||r.shiftKey)&&(n.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.ESC:t.isVisible()&&(t.hide(),r.preventDefault(),d=!0);break;case c.UP:case c.DOWN:break;case c.LEFT:case c.RIGHT:(s&&t.isVisible()||"date"===l.editorType)&&(d=!0);break;case c.SPACE:t.isVisible()&&(d=!0),s&&!t.isVisible()&&(n.startEdit(o.id,o.columnName),r.preventDefault(),d=!0);break;case c.DELETE:s&&!t.isVisible()?(n.startEdit(o.id,o.columnName),d=!0):s&&t.isVisible()&&(d=!0);break;case c.TAB:if(t.isVisible()){r.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);var h=t.getState();h.id&&a.focus({type:"taskCell",id:h.id,column:h.columnName}),r.preventDefault(),d=!0}break;default:if(t.isVisible())d=!0;else if(u>=48&&u<=57||u>95&&u<112||u>=64&&u<=91||u>185&&u<193||u>218&&u<223){var f=e.modifiers,_=f.alt||f.ctrl||f.meta||f.shift;f.alt||_&&a.getCommandHandler(e,"taskCell")||s&&!t.isVisible()&&(n.startEdit(o.id,o.columnName),d=!0)}}return!d})},onShow:function(t,e,n){},onHide:function(t,e,n){n.$gantt.focus()},destroy:function(){}}},function(t,e){t.exports={init:function(t,e){var n=e.$gantt;n.attachEvent("onTaskClick",function(e,i){if(n._is_icon_open_click(i))return!0;var r=t.getState(),a=t.locateCell(i.target);return!a||!t.getEditorConfig(a.columnName)||(t.isVisible()&&r.id==a.id&&r.columnName==a.columnName||t.startEdit(a.id,a.columnName),!1)}),n.attachEvent("onEmptyClick",function(){return t.isVisible()&&t.isChanged()?t.save():t.hide(),!0}),n.attachEvent("onTaskDblClick",function(e,n){var i=t.getState(),r=t.locateCell(n.target);return!r||!t.isVisible()||r.columnName!=i.columnName})},onShow:function(t,e,n){var i=n.$gantt;i.ext&&i.ext.keyboardNavigation&&i.ext.keyboardNavigation.attachEvent("onKeyDown",function(e,n){var r=i.constants.KEY_CODES,a=!1;switch(n.keyCode){case r.SPACE:t.isVisible()&&(a=!0)}return!a});e.onkeydown=function(e){e=e||window.event;var n=i.constants.KEY_CODES;if(!(e.defaultPrevented||e.shiftKey&&e.keyCode!=n.TAB)){var r=!0;switch(e.keyCode){case i.keys.edit_save:t.save();break;case i.keys.edit_cancel:t.hide();break;case n.UP:case n.DOWN:t.isVisible()&&(t.hide(),r=!1);break;case n.TAB:e.shiftKey?t.editPrevCell(!0):t.editNextCell(!0);break;default:r=!1}r&&e.preventDefault()}}},onHide:function(){},destroy:function(){}}},function(t,e,n){var i=n(125),r=n(124);t.exports=function(t){var e=null;return{setMapping:function(t){e=t},getMapping:function(){return e||(t.config.keyboard_navigation_cells&&t.ext.keyboardNavigation?r:i)}}}},function(t,e,n){var i=n(126),r=n(123),a=n(122),o=n(121),s=n(120),l=n(119),c=n(118),u=n(0),d=n(1),h=n(5),f=n(117);function _(t){t.config.editor_types={text:new(r(t)),number:new(a(t)),select:new(o(t)),date:new(s(t)),predecessor:new(l(t)),duration:new(c(t))}}t.exports=function(t){var e=i(t),n={};h(n);var r={init:_,createEditors:function(i){function r(e,n){var r=i.$getConfig(),a=function(t,e){for(var n=i.$getConfig(),r=i.getItemTop(t),a=i.getItemHeight(t),o=i.getGridColumns(),s=0,l=0,c=0,u=0;u<o.length;u++){if(o[u].name==e){c=o[u].width;break}n.rtl?l+=o[u].width:s+=o[u].width}return n.rtl?{top:r,right:l,height:a,width:c}:{top:r,left:s,height:a,width:c}}(e,n),o=document.createElement("div");o.className="gantt_grid_editor_placeholder",o.setAttribute(i.$config.item_attribute,e),o.setAttribute(i.$config.bind+"_id",e),o.setAttribute("data-column-name",n);var s=function(t,e){for(var n=t.getGridColumns(),i=0;i<n.length;i++)if(n[i].name==e)return i;return 0}(i,n);return o.setAttribute("data-column-index",s),t._waiAria.inlineEditorAttr(o),r.rtl?o.style.cssText=["top:"+a.top+"px","right:"+a.right+"px","width:"+a.width+"px","height:"+a.height+"px"].join(";"):o.style.cssText=["top:"+a.top+"px","left:"+a.left+"px","width:"+a.width+"px","height:"+a.height+"px"].join(";"),o}var a=f(t),o=[],s=[],l=null,c={_itemId:null,_columnName:null,_editor:null,_editorType:null,_placeholder:null,locateCell:function(t){if(!d.isChildOf(t,i.$grid))return null;var e=d.locateAttribute(t,i.$config.item_attribute),n=d.locateAttribute(t,"data-column-name");if(e&&n){var r=n.getAttribute("data-column-name");return{id:e.getAttribute(i.$config.item_attribute),columnName:r}}return null},getEditorConfig:function(t){return i.getColumn(t).editor},init:function(){var n=e.getMapping();n.init&&n.init(this,i),l=i.$gantt.getDatastore(i.$config.bind);var r=this;o.push(l.attachEvent("onIdChange",function(t,e){r._itemId==t&&(r._itemId=e)})),o.push(l.attachEvent("onStoreUpdated",function(){i.$gantt.getState("batchUpdate").batch_update||r.isVisible()&&!l.isVisible(r._itemId)&&r.hide()})),s.push(t.attachEvent("onDataRender",function(){r._editor&&r._placeholder&&!d.isChildOf(r._placeholder,t.$root)&&i.$grid_data.appendChild(r._placeholder)})),this.init=function(){}},getState:function(){return{editor:this._editor,editorType:this._editorType,placeholder:this._placeholder,id:this._itemId,columnName:this._columnName}},startEdit:function(e,n){if(this.isVisible()&&this.save(),l.exists(e)){var i={id:e,columnName:n};t.isReadonly(l.getItem(e))?this.callEvent("onEditPrevent",[i]):!1!==this.callEvent("onBeforeEditStart",[i])?(this.show(i.id,i.columnName),this.setValue(),this.callEvent("onEditStart",[i])):this.callEvent("onEditPrevent",[i])}},isVisible:function(){return!(!this._editor||!d.isChildOf(this._placeholder,t.$root))},show:function(t,n){this.isVisible()&&this.save();var a={id:t,columnName:n},o=i.getColumn(a.columnName),s=this.getEditorConfig(o.name);if(s){var l=i.$getConfig().editor_types[s.type],c=r(a.id,a.columnName);i.$grid_data.appendChild(c),l.show(a.id,o,s,c),this._editor=l,this._placeholder=c,this._itemId=a.id,this._columnName=a.columnName,this._editorType=s.type;var u=e.getMapping();u.onShow&&u.onShow(this,c,i)}},setValue:function(){var t=this.getState(),e=t.id,n=t.columnName,r=i.getColumn(n),a=l.getItem(e),o=this.getEditorConfig(n);if(o){var s=a[o.map_to];"auto"==o.map_to&&(s=l.getItem(e)),this._editor.set_value(s,e,r,this._placeholder),this.focus()}},focus:function(){this._editor.focus(this._placeholder)},getValue:function(){var t=i.getColumn(this._columnName);return this._editor.get_value(this._itemId,t,this._placeholder)},_getItemValue:function(){var e=this.getEditorConfig(this._columnName);if(e){var n=t.getTask(this._itemId)[e.map_to];return"auto"==e.map_to&&(n=l.getItem(this._itemId)),n}},isChanged:function(){var t=i.getColumn(this._columnName),e=this._getItemValue();return this._editor.is_changed(e,this._itemId,t,this._placeholder)},hide:function(){if(this._itemId){var t=this._itemId,n=this._columnName,r=e.getMapping();r.onHide&&r.onHide(this,this._placeholder,i),this._itemId=null,this._columnName=null,this._editorType=null,this._placeholder&&(this._editor&&this._editor.hide&&this._editor.hide(this._placeholder),this._editor=null,this._placeholder.parentNode&&this._placeholder.parentNode.removeChild(this._placeholder),this._placeholder=null,this.callEvent("onEditEnd",[{id:t,columnName:n}]))}},save:function(){if(this.isVisible()&&l.exists(this._itemId)&&this.isChanged()){var e=this._itemId,n=this._columnName;if(l.exists(e)){var r=l.getItem(e),o=this.getEditorConfig(n),s={id:e,columnName:n,newValue:this.getValue(),oldValue:this._getItemValue()};if(!1!==this.callEvent("onBeforeSave",[s])&&(!this._editor.is_valid||this._editor.is_valid(s.newValue,s.id,i.getColumn(n),this._placeholder))){var c=o.map_to,u=s.newValue;"auto"!=c?(r[c]=u,a(r,c,t.config.inline_editors_date_processing),l.updateItem(e)):this._editor.save(e,i.getColumn(n),this._placeholder),this.callEvent("onSave",[s])}this.hide()}}else this.hide()},_findEditableCell:function(t,e){var n=t,r=i.getGridColumns()[n],a=r?r.name:null;if(a){for(;a&&!this.getEditorConfig(a);)a=this._findEditableCell(t+e,e);return a}return null},getNextCell:function(t){return this._findEditableCell(i.getColumnIndex(this._columnName,!0)+t,t)},getFirstCell:function(){return this._findEditableCell(0,1)},getLastCell:function(){return this._findEditableCell(i.getGridColumns().length-1,-1)},editNextCell:function(t){var e=this.getNextCell(1);if(e){var n=this.getNextCell(1);n&&this.getEditorConfig(n)&&this.startEdit(this._itemId,n)}else if(t&&this.moveRow(1)){var i=this.moveRow(1);(e=this.getFirstCell())&&this.getEditorConfig(e)&&this.startEdit(i,e)}},editPrevCell:function(t){var e=this.getNextCell(-1);if(e){var n=this.getNextCell(-1);n&&this.getEditorConfig(n)&&this.startEdit(this._itemId,n)}else if(t&&this.moveRow(-1)){var i=this.moveRow(-1);(e=this.getLastCell())&&this.getEditorConfig(e)&&this.startEdit(i,e)}},moveRow:function(e){for(var n=e>0?t.getNext:t.getPrev,i=(n=t.bind(n,t))(this._itemId);t.isTaskExists(i)&&t.isReadonly(t.getTask(i));)i=n(i);return i},editNextRow:function(e){var n=this.getState().id;if(t.isTaskExists(n)){var i=null;i=e?this.moveRow(1):t.getNext(n),t.isTaskExists(i)&&this.startEdit(i,this._columnName)}},editPrevRow:function(e){var n=this.getState().id;if(t.isTaskExists(n)){var i=null;i=e?this.moveRow(-1):t.getPrev(n),t.isTaskExists(i)&&this.startEdit(i,this._columnName)}},destructor:function(){o.forEach(function(t){l.detachEvent(t)}),s.forEach(function(e){t.detachEvent(e)}),o=[],s=[],l=null,this.hide(),this.detachAllEvents()}};return u.mixin(c,e),u.mixin(c,n),c}};return u.mixin(r,e),u.mixin(r,n),r}},function(t,e){t.exports={create:function(){return{render:function(){},destroy:function(){}}}}},function(t,e,n){var i=n(3),r=n(1),a=n(0),o=n(11),s=function(t){"use strict";var e=["altKey","shiftKey","metaKey"];function n(e,n,i,r){var o=t.apply(this,arguments)||this;this.$config=a.mixin(n,{scroll:"x"}),o._scrollHorizontalHandler=a.bind(o._scrollHorizontalHandler,o),o._scrollVerticalHandler=a.bind(o._scrollVerticalHandler,o),o._outerScrollVerticalHandler=a.bind(o._outerScrollVerticalHandler,o),o._outerScrollHorizontalHandler=a.bind(o._outerScrollHorizontalHandler,o),o._mouseWheelHandler=a.bind(o._mouseWheelHandler,o),this.$config.hidden=!0;var s=r.config.scroll_size;return r.env.isIE&&(s+=1),this._isHorizontal()?(o.$config.height=s,o.$parent.$config.height=s):(o.$config.width=s,o.$parent.$config.width=s),this.$config.scrollPosition=0,o.$name="scroller",o}return i(n,t),n.prototype.init=function(t){t.innerHTML=this.$toHTML(),this.$view=t.firstChild,this.$view||this.init(),this._isVertical()?this._initVertical():this._initHorizontal(),this._initMouseWheel(),this._initLinkedViews()},n.prototype.$toHTML=function(){return"<div class='gantt_layout_cell "+(this._isHorizontal()?"gantt_hor_scroll":"gantt_ver_scroll")+"'><div style='"+(this._isHorizontal()?"width:2000px":"height:2000px")+"'></div></div>"},n.prototype._getRootParent=function(){for(var t=this.$parent;t&&t.$parent;)t=t.$parent;if(t)return t},n.prototype._eachView=function(){var t=[];return function t(e,n){if(n.push(e),e.$cells)for(var i=0;i<e.$cells.length;i++)t(e.$cells[i],n)}(this._getRootParent(),t),t},n.prototype._getLinkedViews=function(){for(var t=this._eachView(),e=[],n=0;n<t.length;n++)t[n].$config&&(this._isVertical()&&t[n].$config.scrollY==this.$id||this._isHorizontal()&&t[n].$config.scrollX==this.$id)&&e.push(t[n]);return e},n.prototype._initHorizontal=function(){this.$scroll_hor=this.$view,this.$domEvents.attach(this.$view,"scroll",this._scrollHorizontalHandler)},n.prototype._initLinkedViews=function(){for(var t=this._getLinkedViews(),e=this._isVertical()?"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical":"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal",n=0;n<t.length;n++)r.addClassName(t[n].$view||t[n].getNode(),e)},n.prototype._initVertical=function(){this.$scroll_ver=this.$view,this.$domEvents.attach(this.$view,"scroll",this._scrollVerticalHandler)},n.prototype._updateLinkedViews=function(){},n.prototype._initMouseWheel=function(){o.isFF?this.$domEvents.attach(this._getRootParent().$view,"wheel",this._mouseWheelHandler,{passive:!1}):this.$domEvents.attach(this._getRootParent().$view,"mousewheel",this._mouseWheelHandler,{passive:!1})},n.prototype.scrollHorizontally=function(t){if(!this._scrolling){this._scrolling=!0,this.$scroll_hor.scrollLeft=t,this.$config.codeScrollLeft=t,t=this.$scroll_hor.scrollLeft;for(var e=this._getLinkedViews(),n=0;n<e.length;n++)e[n].scrollTo&&e[n].scrollTo(t,void 0);var i=this.$config.scrollPosition;this.$config.scrollPosition=t,this.callEvent("onScroll",[i,t,this.$config.scroll]),this._scrolling=!1}},n.prototype.scrollVertically=function(t){if(!this._scrolling){this._scrolling=!0,this.$scroll_ver.scrollTop=t,t=this.$scroll_ver.scrollTop;for(var e=this._getLinkedViews(),n=0;n<e.length;n++)e[n].scrollTo&&e[n].scrollTo(void 0,t);var i=this.$config.scrollPosition;this.$config.scrollPosition=t,this.callEvent("onScroll",[i,t,this.$config.scroll]),this._scrolling=!1}},n.prototype._isVertical=function(){return"y"==this.$config.scroll},n.prototype._isHorizontal=function(){return"x"==this.$config.scroll},n.prototype._scrollHorizontalHandler=function(t){if(!this._isVertical()&&!this._scrolling){if(new Date-(this._wheel_time||0)<100)return!0;var e=this.$scroll_hor.scrollLeft;this.scrollHorizontally(e),this._oldLeft=this.$scroll_hor.scrollLeft}},n.prototype._outerScrollHorizontalHandler=function(t){this._isVertical()},n.prototype.show=function(){this.$parent.show()},n.prototype.hide=function(){this.$parent.hide()},n.prototype._getScrollSize=function(){for(var t,e=0,n=0,i=this._isHorizontal(),r=this._getLinkedViews(),a=i?"scrollWidth":"scrollHeight",o=i?"contentX":"contentY",s=i?"x":"y",l=this._getScrollOffset(),c=0;c<r.length;c++)if((t=r[c])&&t.$content&&t.$content.getSize&&!t.$config.hidden){var u,d=t.$content.getSize();if(u=d.hasOwnProperty(a)?d[a]:d[o],l)d[o]>d[s]&&d[o]>e&&u>d[s]-l+2&&(e=u+(i?0:2),n=d[s]);else{var h=Math.max(d[o]-u,0);(u+=h)>Math.max(d[s]-h,0)&&u>e&&(e=u,n=d[s])}}return{outerScroll:n,innerScroll:e}},n.prototype.scroll=function(t){this._isHorizontal()?this.scrollHorizontally(t):this.scrollVertically(t)},n.prototype.getScrollState=function(){return{visible:this.isVisible(),direction:this.$config.scroll,size:this.$config.outerSize,scrollSize:this.$config.scrollSize||0,position:this.$config.scrollPosition||0}},n.prototype.setSize=function(e,n){t.prototype.setSize.apply(this,arguments);var i=this._getScrollSize(),r=(this._isVertical()?n:e)-this._getScrollOffset()+(this._isHorizontal()?1:0);i.innerScroll&&r>i.outerScroll&&(i.innerScroll+=r-i.outerScroll),this.$config.scrollSize=i.innerScroll,this.$config.width=e,this.$config.height=n,this._setScrollSize(i.innerScroll)},n.prototype.isVisible=function(){return!(!this.$parent||!this.$parent.$view.parentNode)},n.prototype.shouldShow=function(){var t=this._getScrollSize();return!(!t.innerScroll&&this.$parent&&this.$parent.$view.parentNode)&&!(!t.innerScroll||this.$parent&&this.$parent.$view.parentNode)},n.prototype.shouldHide=function(){return!(this._getScrollSize().innerScroll||!this.$parent||!this.$parent.$view.parentNode)},n.prototype.toggleVisibility=function(){this.shouldHide()?this.hide():this.shouldShow()&&this.show()},n.prototype._getScaleOffset=function(t){var e=0;return!t||"timeline"!=t.$config.view&&"grid"!=t.$config.view||(e=t.$content.$getConfig().scale_height),e},n.prototype._getScrollOffset=function(){var t=0;if(this._isVertical()){var e=this.$parent.$parent;t=Math.max(this._getScaleOffset(e.getPrevSibling(this.$parent.$id)),this._getScaleOffset(e.getNextSibling(this.$parent.$id)))}else for(var n=this._getLinkedViews(),i=0;i<n.length;i++){var r=n[i].$parent.$cells,a=r[r.length-1];if(a&&"scrollbar"==a.$config.view&&!1===a.$config.hidden){t=a.$config.width;break}}return t||0},n.prototype._setScrollSize=function(t){var e=this._isHorizontal()?"width":"height",n=this._isHorizontal()?this.$scroll_hor:this.$scroll_ver,i=this._getScrollOffset(),a=n.firstChild;i?this._isVertical()?(this.$config.outerSize=this.$config.height-i+3,n.style.height=this.$config.outerSize+"px",n.style.top=i-1+"px",r.addClassName(n,this.$parent._borders.top),r.addClassName(n.parentNode,"gantt_task_vscroll")):(this.$config.outerSize=this.$config.width-i+1,n.style.width=this.$config.outerSize+"px"):(n.style.top="auto",r.removeClassName(n,this.$parent._borders.top),r.removeClassName(n.parentNode,"gantt_task_vscroll"),this.$config.outerSize=this.$config.height),a.style[e]=t+"px"},n.prototype._scrollVerticalHandler=function(t){if(!this._scrollHorizontalHandler()&&!this._scrolling){var e=this.$scroll_ver.scrollTop;e!=this._oldTop&&(this.scrollVertically(e),this._oldTop=this.$scroll_ver.scrollTop)}},n.prototype._outerScrollVerticalHandler=function(t){this._scrollHorizontalHandler()},n.prototype._checkWheelTarget=function(t){for(var e=this._getLinkedViews().concat(this),n=0;n<e.length;n++){var i=e[n].$view;if(r.isChildOf(t,i))return!0}return!1},n.prototype._mouseWheelHandler=function(t){var n=t.target||t.srcElement;if(this._checkWheelTarget(n)){this._wheel_time=new Date;var i={},r={x:1,y:1},a=this.$gantt.config.wheel_scroll_sensitivity;"number"==typeof a&&a?r={x:a,y:a}:"[object Object]"=={}.toString.apply(a)&&(r={x:a.x,y:a.y});var s=o.isFF,l=s?t.deltaX:t.wheelDeltaX,c=s?t.deltaY:t.wheelDelta,u=-20;s&&(u=0!==t.deltaMode?-40:-10);var d=s?l*u*r.x:2*l*r.x,h=s?c*u*r.y:c*r.y,f=this.$gantt.config.horizontal_scroll_key;if(!1!==f&&e.indexOf(f)>=0&&(!t[f]||t.deltaX||t.wheelDeltaX||(d=2*h,h=0)),d&&Math.abs(d)>Math.abs(h)){if(this._isVertical())return;if(i.x)return!0;if(!this.$scroll_hor||!this.$scroll_hor.offsetWidth)return!0;var _=d/-40,g=this._oldLeft,p=g+30*_;if(this.scrollHorizontally(p),this.$scroll_hor.scrollLeft=p,g==this.$scroll_hor.scrollLeft)return!0;this._oldLeft=this.$scroll_hor.scrollLeft}else{if(this._isHorizontal())return;if(i.y)return!0;if(!this.$scroll_ver||!this.$scroll_ver.offsetHeight)return!0;_=h/-40;void 0===h&&(_=t.detail);var v=this._oldTop,m=this.$scroll_ver.scrollTop+30*_;if(this.scrollVertically(m),this.$scroll_ver.scrollTop=m,v==this.$scroll_ver.scrollTop)return!0;this._oldTop=this.$scroll_ver.scrollTop}return t.preventDefault&&t.preventDefault(),t.cancelBubble=!0,!1}},n}(n(14));t.exports=s},function(t,e){t.exports=null},function(t,e,n){var i=n(3),r=n(0),a=function(t){"use strict";function e(e,n,i){var a=t.apply(this,arguments)||this;if(n.view){n.id&&(this.$id=r.uid());var o=r.copy(n);if(delete o.config,delete o.templates,this.$content=this.$factory.createView(n.view,this,o,this),!this.$content)return!1}return a.$name="viewCell",a}return i(e,t),e.prototype.destructor=function(){this.clear(),t.prototype.destructor.call(this)},e.prototype.clear=function(){if(this.$initialized=!1,this.$content){var e=this.$content.unload||this.$content.destructor;e&&e.call(this.$content)}t.prototype.clear.call(this)},e.prototype.scrollTo=function(e,n){this.$content&&this.$content.scrollTo?this.$content.scrollTo(e,n):t.prototype.scrollTo.call(this,e,n)},e.prototype._setContentSize=function(t,e){var n=this._getBorderSizes();if("number"==typeof t){var i=t+n.horizontal;this.$config.width=i}if("number"==typeof e){var r=e+n.vertical;this.$config.height=r}},e.prototype.setSize=function(e,n){if(t.prototype.setSize.call(this,e,n),!this.$preResize&&this.$content&&!this.$initialized){this.$initialized=!0;var i=this.$view.childNodes[0],r=this.$view.childNodes[1];r||(r=i),this.$content.init(r)}},e.prototype.setContentSize=function(){!this.$preResize&&this.$content&&this.$initialized&&this.$content.setSize(this.$lastSize.contentX,this.$lastSize.contentY)},e.prototype.getContentSize=function(){var e=t.prototype.getContentSize.call(this);if(this.$content&&this.$initialized){var n=this.$content.getSize();e.width=void 0===n.contentX?n.width:n.contentX,e.height=void 0===n.contentY?n.height:n.contentY}var i=this._getBorderSizes();return e.width+=i.horizontal,e.height+=i.vertical,e},e}(n(14));t.exports=a},function(t,e,n){var i=n(3),r=n(38),a=n(14),o=function(t){"use strict";function e(e,n,i){for(var r=t.apply(this,arguments)||this,a=0;a<r.$cells.length;a++)r.$cells[a].$config.hidden=0!==a;return r.$cell=r.$cells[0],r.$name="viewLayout",r}return i(e,t),e.prototype.cell=function(e){var n=t.prototype.cell.call(this,e);return n.$view||this.$fill(null,this),n},e.prototype.moveView=function(t){var e=this.$view;this.$cell&&(this.$cell.$config.hidden=!0,e.removeChild(this.$cell.$view)),this.$cell=t,e.appendChild(t.$view)},e.prototype.setSize=function(t,e){a.prototype.setSize.call(this,t,e)},e.prototype.setContentSize=function(){var t=this.$lastSize;this.$cell.setSize(t.contentX,t.contentY)},e.prototype.getSize=function(){var e=t.prototype.getSize.call(this);if(this.$cell){var n=this.$cell.getSize();if(this.$config.byMaxSize)for(var i=0;i<this.$cells.length;i++){var r=this.$cells[i].getSize();for(var a in n)n[a]=Math.max(n[a],r[a])}for(var o in e)e[o]=e[o]||n[o];e.gravity=Math.max(e.gravity,n.gravity)}return e},e}(r);t.exports=o},function(t,e){t.exports=function(t,e,n){if(!t.start_date||!t.end_date)return null;var i=e.posFromDate(t.start_date),r=e.posFromDate(t.end_date),a=Math.min(i,r)-200,o=Math.max(i,r)+200;return{top:e.getItemTop(t.id),height:e.getItemHeight(t.id),left:a,width:o-a}}},function(t,e,n){var i=n(133);t.exports=function(t,e,n,r){if(!r.isTaskExists(t.source))return null;if(!r.isTaskExists(t.target))return null;var a=i(r.getTask(t.source),e,r),o=i(r.getTask(t.target),e,r);if(!a||!o)return null;var s=Math.min(a.left,o.left)-100,l=Math.max(a.left+a.width,o.left+o.width)+100,c=Math.min(a.top,o.top)-100,u=Math.max(a.top+a.height,o.top+o.height)+100;return{top:c,height:u-c,bottom:u,left:s,width:l-s,right:l}}},function(t,e){t.exports=function(t,e){return!!e&&(!(e.left>t.x_end||e.left+e.width<t.x)&&!(e.top>t.y_end||e.top+e.height<t.y))}},function(t,e,n){var i=n(135),r=n(20),a=n(30),o=n(6);t.exports=function(t){var e={},n={};function s(e){var n=null;return"string"==typeof e.view?n=t.$ui.getView(e.view):e.view&&(n=e.view),n}function l(l,c,u){if(n[l])return n[l];c.renderer||t.assert(!1,"Invalid renderer call");var d=null,h=null,f=null,_=null,g=null;"function"==typeof c.renderer?(d=c.renderer,f=a):(d=c.renderer.render,h=c.renderer.update,_=c.renderer.onrender,c.renderer.isInViewPort?g=c.renderer.isInViewPort:f=c.renderer.getRectangle,f||null===f||(f=a));var p=c.filter;return u&&u.setAttribute(t.config.layer_attribute,!0),n[l]={render_item:function(e,n,a,o,l){if(n=n||u,!p||p(e)){var h=o||s(c),v=l||(h?h.$getConfig():null),m=a;!m&&v&&v.smart_rendering&&(m=h.getViewPort());var y=null;!r(t)&&(f||g)&&m?(g?g(e,m,h,v,t):i(m,f(e,h,v,t)))&&(y=d.call(t,e,h,v,m)):y=d.call(t,e,h,v,m),this.append(e,y,n);var k=11==n.nodeType;_&&!k&&y&&_.call(t,e,y,h)}else this.remove_item(e.id)},clear:function(t){this.rendered=e[l]={},c.append||this.clear_container(t)},clear_container:function(t){(t=t||u)&&(t.innerHTML="")},get_visible_range:function(e){var n,i,r=s(c),a=r?r.$getConfig():null;return a&&a.smart_rendering&&(n=r.getViewPort()),r&&n&&("function"==typeof c.renderer?i=o(t,r,a,e,n):c.renderer&&c.renderer.getVisibleRange&&(i=c.renderer.getVisibleRange(t,r,a,e,n))),i||(i={start:0,end:e.count()}),i},prepare_data:function(e){if(c.renderer&&c.renderer.prepareData)return c.renderer.prepareData(e,t,c)},render_items:function(e,n){n=n||u;var i=document.createDocumentFragment();this.clear(n);var r=null,a=s(c),o=a?a.$getConfig():null;o&&o.smart_rendering&&(r=a.getViewPort());for(var l=0,d=e.length;l<d;l++)this.render_item(e[l],i,r,a,o);n.appendChild(i,n);var h={};e.forEach(function(t){h[t.id]=t});var f={};if(_){var g={};for(var l in this.rendered)f[l]||(g[l]=this.rendered[l],_.call(t,h[l],this.rendered[l],a))}},update_items:function(e,n){var a=s(c),o=a?a.$getConfig():null;if(a&&a.$getConfig().smart_rendering&&!r(t)&&this.rendered&&(f||g)){n=n||u;var l=document.createDocumentFragment(),d=null;a&&(d=a.getViewPort());var p={};e.forEach(function(t){p[t.id]=t});var v={},m={};for(var y in this.rendered)m[y]=!0,v[y]=!0;for(var k={},b=(y=0,e.length);y<b;y++){var x=e[y],w=this.rendered[x.id];m[x.id]=!1,w&&w.parentNode?(g?g(x,d,a,o,t):i(d,f(x,a,o,t)))?(h&&h.call(t,x,w,a,o,d),this.restore(x,l)):m[x.id]=!0:(k[e[y].id]=!0,this.render_item(e[y],l,d,a,o))}for(var y in m)m[y]&&this.hide(y);if(l.childNodes.length&&n.appendChild(l,n),_){var S={};for(var y in this.rendered)v[y]&&!k[y]||(S[y]=this.rendered[y],_.call(t,p[y],this.rendered[y],a))}}},append:function(t,e,n){this.rendered&&(e?(this.rendered[t.id]&&this.rendered[t.id].parentNode?this.replace_item(t.id,e):n.appendChild(e),this.rendered[t.id]=e):this.rendered[t.id]&&this.remove_item(t.id))},replace_item:function(t,e){var n=this.rendered[t];n&&n.parentNode&&n.parentNode.replaceChild(e,n),this.rendered[t]=e},remove_item:function(t){this.hide(t),delete this.rendered[t]},hide:function(t){var e=this.rendered[t];e&&e.parentNode&&e.parentNode.removeChild(e)},restore:function(t,e){var n=this.rendered[t.id];n?n.parentNode||this.append(t,n,e||u):this.render_item(t,e||u)},change_id:function(t,e){this.rendered[e]=this.rendered[t],delete this.rendered[t]},rendered:e[l],node:u,destructor:function(){this.clear(),delete n[l],delete e[l]}},n[l]}return{getRenderer:l,clearRenderers:function(){for(var t in n)l(t).destructor()}}}},function(t,e,n){var i=n(136),r=n(0),a=n(1),o=n(20);function s(t){return t instanceof Array||(t=Array.prototype.slice.call(arguments,0)),function(e){for(var n=!0,i=0,r=t.length;i<r;i++){var a=t[i];a&&(n=n&&!1!==a(e.id,e))}return n}}t.exports=function(t){var e=i(t);return{createGroup:function(n,i,l,c){var u={tempCollection:[],renderers:{},container:n,filters:[],getLayers:function(){this._add();var t=[];for(var e in this.renderers)t.push(this.renderers[e]);return t},getLayer:function(t){return this.renderers[t]},_add:function(n){n&&(n.id=n.id||r.uid(),this.tempCollection.push(n));for(var o=this.container(),s=this.tempCollection,l=0;l<s.length;l++)if(n=s[l],this.container()||n&&n.container&&a.isChildOf(n.container,document.body)){var u=n.container,d=n.id,h=n.topmost;if(!u.parentNode)if(h)o.appendChild(u);else{var f=i?i():o.firstChild;f&&f.parentNode==o?o.insertBefore(u,f):o.appendChild(u)}this.renderers[d]=e.getRenderer(d,n,u),c&&c(n,t),this.tempCollection.splice(l,1),l--}},addLayer:function(e){if(e){"function"==typeof e&&(e={renderer:e}),void 0===e.filter?e.filter=s(l||[]):e.filter instanceof Array&&(e.filter.push(l),e.filter=s(e.filter)),e.container||(e.container=document.createElement("div"));var n=this;e.requestUpdate=function(){t.config.smart_rendering&&!o(t)&&n.renderers[e.id]&&n.onUpdateRequest(n.renderers[e.id])}}return this._add(e),e?e.id:void 0},onUpdateRequest:function(t){},eachLayer:function(t){for(var e in this.renderers)t(this.renderers[e])},removeLayer:function(t){this.renderers[t]&&(this.renderers[t].destructor(),delete this.renderers[t])},clear:function(){for(var t in this.renderers)this.renderers[t].destructor();this.renderers={}}};return t.attachEvent("onDestroy",function(){u.clear(),u=null}),u}}}},function(t,e,n){var i=n(137),r=n(6),a=n(40),o=n(39);function s(t,e){if(t.view){var n=t.view;"string"==typeof n&&(n=e.$ui.getView(n)),n&&n.attachEvent&&n.attachEvent("onScroll",function(){e.$services.getService("state").getState("batchUpdate").batch_update||n.$config.$skipSmartRenderOnScroll||t.requestUpdate&&t.requestUpdate()})}}t.exports=function(t){var e=i(t);return{getDataRender:function(e){return t.$services.getService("layer:"+e)||null},createDataRender:function(n){var i=n.name,r=n.defaultContainer,a=n.defaultContainerSibling,o=e.createGroup(r,a,function(t,e){if(!o.filters)return!0;for(var n=0;n<o.filters.length;n++)if(!1===o.filters[n](t,e))return!1},s);return t.$services.setService("layer:"+i,function(){return o}),t.attachEvent("onGanttReady",function(){o.addLayer()}),o},init:function(){var e=this.createDataRender({name:"task",defaultContainer:function(){return t.$task_data?t.$task_data:t.$ui.getView("timeline")?t.$ui.getView("timeline").$task_data:void 0},defaultContainerSibling:function(){return t.$task_links?t.$task_links:t.$ui.getView("timeline")?t.$ui.getView("timeline").$task_links:void 0},filter:function(t){}},t),n=this.createDataRender({name:"link",defaultContainer:function(){return t.$task_data?t.$task_data:t.$ui.getView("timeline")?t.$ui.getView("timeline").$task_data:void 0}},t);return{addTaskLayer:function(t){var n=r;return"function"==typeof t?t={renderer:{render:t,getVisibleRange:n}}:t.renderer&&!t.renderer.getVisibleRange&&(t.renderer.getVisibleRange=n),t.view="timeline",e.addLayer(t)},_getTaskLayers:function(){return e.getLayers()},removeTaskLayer:function(t){e.removeLayer(t)},_clearTaskLayers:function(){e.clear()},addLinkLayer:function(t){var e=a();return"function"==typeof t?t={renderer:{render:t,getVisibleRange:e}}:t.renderer&&!t.renderer.getVisibleRange&&(t.renderer.getVisibleRange=e),t.view="timeline",t&&t.renderer&&(t.renderer.getRectangle||t.renderer.isInViewPort||(t.renderer.isInViewPort=o)),n.addLayer(t)},_getLinkLayers:function(){return n.getLayers()},removeLinkLayer:function(t){n.removeLayer(t)},_clearLinkLayers:function(){n.clear()}}}}}},function(t,e,n){var i=function(t){return function(e){var n={click:{},doubleclick:{},contextMenu:{}};function i(t,e,i,r){n[t][e]||(n[t][e]=[]),n[t][e].push({handler:i,root:r})}function r(t){t=t||window.event;var i=e.locate(t),r=o(t,n.click),a=!0;if(null!==i?a=!e.checkEvent("onTaskClick")||e.callEvent("onTaskClick",[i,t]):e.callEvent("onEmptyClick",[t]),a){if(!s(r,t,i))return;switch(t.target.nodeName){case"SELECT":case"INPUT":return}i&&e.getTask(i)&&!e._multiselect&&e.config.select_task&&e.selectTask(i)}}function a(t){var n=(t=t||window.event).target||t.srcElement,i=e.locate(n),r=e.locate(n,e.config.link_attribute),a=!e.checkEvent("onContextMenu")||e.callEvent("onContextMenu",[i,r,t]);return a||(t.preventDefault?t.preventDefault():t.returnValue=!1),a}function o(e,n){for(var i=e.target||e.srcElement,r=[];i;){var a=t.getClassName(i);if(a){a=a.split(" ");for(var o=0;o<a.length;o++)if(a[o]&&n[a[o]])for(var s=n[a[o]],l=0;l<s.length;l++)s[l].root&&!t.isChildOf(i,s[l].root)||r.push(s[l].handler)}i=i.parentNode}return r}function s(t,n,i){for(var r=!0,a=0;a<t.length;a++){var o=t[a].call(e,n,i,n.target||n.srcElement);r=r&&!(void 0!==o&&!0!==o)}return r}function l(t){t=t||window.event;var i=e.locate(t),r=o(t,n.doubleclick),a=!e.checkEvent("onTaskDblClick")||null===i||e.callEvent("onTaskDblClick",[i,t]);if(a){if(!s(r,t,i))return;null!==i&&e.getTask(i)&&a&&e.config.details_on_dblclick&&!e.isReadonly(i)&&e.showLightbox(i)}}function c(t){if(e.checkEvent("onMouseMove")){var n=e.locate(t);e._last_move_event=t,e.callEvent("onMouseMove",[n,t])}}var u=e._createDomEventScope();function d(t){u.detachAll(),t&&(u.attach(t,"click",r),u.attach(t,"dblclick",l),u.attach(t,"mousemove",c),u.attach(t,"contextmenu",a))}return{reset:d,global:function(t,e,n){i(t,e,n,null)},delegate:i,detach:function(t,e,i,r){if(n[t]&&n[t][e]){for(var a=n[t],o=a[e],s=0;s<o.length;s++)o[s].root==r&&(o.splice(s,1),s--);o.length||delete a[e]}},callHandler:function(t,e,i,r){var a=n[t][e];if(a)for(var o=0;o<a.length;o++)(i||a[o].root)&&a[o].root!==i||a[o].handler.apply(this,r)},onDoubleClick:l,onMouseMove:c,onContextMenu:a,onClick:r,destructor:function(){d(),n=null,u=null}}}}(n(1));t.exports={init:i}},function(t,e,n){var i=n(0);function r(t,e){var n=this.$config[t];return n?(n.$extendedConfig||(n.$extendedConfig=!0,Object.setPrototypeOf(n,e)),n):e}t.exports=function(t,e){i.mixin(t,function(t){var e,n;return{$getConfig:function(){return e||(e=t?t.$getConfig():this.$gantt.config),this.$config.config?r.call(this,"config",e):e},$getTemplates:function(){return n||(n=t?t.$getTemplates():this.$gantt.templates),this.$config.templates?r.call(this,"templates",n):n}}}(e))}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(0),a=n(140);t.exports={createFactory:function(t){var e={};var n={};function o(o,s,l,c){var u=e[o];if(!u||!u.create)return!1;"resizer"!=o||l.mode||(c.$config.cols?l.mode="x":l.mode="y"),"viewcell"!=o||"scrollbar"!=l.view||l.scroll||(c.$config.cols?l.scroll="y":l.scroll="x"),(l=r.copy(l)).id||n[l.view]||(l.id=l.view),l.id&&!l.css&&(l.css=l.id+"_cell");var d=new u.create(s,l,this,t);return u.configure&&u.configure(d),a(d,c),d.$id||(d.$id=l.id||t.uid()),d.$parent||"object"!=i(s)||(d.$parent=s),d.$config||(d.$config=l),n[d.$id]&&(d.$id=t.uid()),n[d.$id]=d,d}return{initUI:function(t,e){var n="cell";return t.view?n="viewcell":t.resizer?n="resizer":t.rows||t.cols?n="layout":t.views&&(n="multiview"),o.call(this,n,null,t,e)},reset:function(){n={}},registerView:function(t,n,i){e[t]={create:n,configure:i}},createView:o,getView:function(t){return n[t]}}}}},function(t,e,n){var i=n(141),r=n(139),a=n(138),o=n(14),s=n(38),l=n(132),c=n(131),u=n(130),d=n(129),h=n(29),f=n(32),_=n(32),g=n(29),p=n(29),v=n(127),m=n(116),y=n(115),k=n(113),b=n(112),x=n(110),w=n(109),S=n(108),T=n(107),$=n(106),C=n(105),E=n(99),A=n(96);t.exports={init:function(t){function e(e,n){var i=n(t);i.onCreated&&i.onCreated(e),e.attachEvent("onReady",function(){i.onInitialized&&i.onInitialized(e)}),e.attachEvent("onDestroy",function(){i.onDestroyed&&i.onDestroyed(e)})}var n=i.createFactory(t);n.registerView("cell",o),n.registerView("resizer",u),n.registerView("scrollbar",d),n.registerView("layout",s,function(t){"main"===(t.$config?t.$config.id:null)&&e(t,A)}),n.registerView("viewcell",c),n.registerView("multiview",l),n.registerView("timeline",h,function(t){"timeline"!==(t.$config?t.$config.id:null)&&"task"!=t.$config.bind||e(t,E)}),n.registerView("grid",f,function(t){"grid"!==(t.$config?t.$config.id:null)&&"task"!=t.$config.bind||e(t,C)}),n.registerView("resourceGrid",_),n.registerView("resourceTimeline",g),n.registerView("resourceHistogram",p);var D=a(t),M=v(t);return t.ext.inlineEditors=M,t.ext._inlineEditors=M,M.init(t),{factory:n,mouseEvents:r.init(t),layersApi:D.init(),render:{gridLine:function(){return w(t)},taskBg:function(){return b(t)},taskBar:function(){return m(t)},taskRollupBar:function(){return k(t)},taskSplitBar:function(){return y(t)},link:function(){return x(t)},resourceRow:function(){return S(t)},resourceHistogram:function(){return T(t)},gridTaskRowResizer:function(){return $(t)}},layersService:{getDataRender:function(e){return D.getDataRender(e,t)},createDataRender:function(e){return D.createDataRender(e,t)}}}}}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(0),a=n(1);t.exports=function(t){var e="data-dhxbox",n=null;function o(t,e){var i=t.callback;y.hide(t.box),n=t.box=null,i&&i(e)}function s(t){if(n){var e=t.which||t.keyCode,i=!1;if(k.keyboard){if(13==e||32==e){var r=t.target||t.srcElement;a.getClassName(r).indexOf("gantt_popup_button")>-1&&r.click?r.click():(o(n,!0),i=!0)}27==e&&(o(n,!1),i=!0)}return i?(t.preventDefault&&t.preventDefault(),!(t.cancelBubble=!0)):void 0}}var l=a.getRootNode(t.$root)||document;function c(t){c.cover||(c.cover=document.createElement("div"),c.cover.onkeydown=s,c.cover.className="dhx_modal_cover",document.body.appendChild(c.cover)),c.cover.style.display=t?"inline-block":"none"}function u(e,n,i){return"<div "+t._waiAria.messageButtonAttrString(e)+" class='gantt_popup_button "+("gantt_"+n.toLowerCase().replace(/ /g,"_")+"_button")+"' data-result='"+i+"' result='"+i+"' ><div>"+e+"</div></div>"}function d(e){k.area||(k.area=document.createElement("div"),k.area.className="gantt_message_area",k.area.style[k.position]="5px",document.body.appendChild(k.area)),k.hide(e.id);var n=document.createElement("div");return n.innerHTML="<div>"+e.text+"</div>",n.className="gantt-info gantt-"+e.type,n.onclick=function(){k.hide(e.id),e=null},t._waiAria.messageInfoAttr(n),"bottom"==k.position&&k.area.firstChild?k.area.insertBefore(n,k.area.firstChild):k.area.appendChild(n),e.expire>0&&(k.timers[e.id]=window.setTimeout(function(){k&&k.hide(e.id)},e.expire)),k.pull[e.id]=n,n=null,e.id}function h(){for(var t=[].slice.apply(arguments,[0]),e=0;e<t.length;e++)if(t[e])return t[e]}function f(l,d,f){var _=l.tagName?l:function(s,l,c){var d=document.createElement("div"),f=r.uid();t._waiAria.messageModalAttr(d,f),d.className=" gantt_modal_box gantt-"+s.type,d.setAttribute(e,1);var _="";if(s.width&&(d.style.width=s.width),s.height&&(d.style.height=s.height),s.title&&(_+='<div class="gantt_popup_title">'+s.title+"</div>"),_+='<div class="gantt_popup_text" id="'+f+'"><span>'+(s.content?"":s.text)+'</span></div><div class="gantt_popup_controls">',l&&(_+=u(h(s.ok,t.locale.labels.message_ok,"OK"),"ok",!0)),c&&(_+=u(h(s.cancel,t.locale.labels.message_cancel,"Cancel"),"cancel",!1)),s.buttons)for(var g=0;g<s.buttons.length;g++){var p=s.buttons[g];"object"==i(p)?_+=u(p.label,p.css||"gantt_"+p.label.toLowerCase()+"_button",p.value||g):_+=u(p,p,g)}if(_+="</div>",d.innerHTML=_,s.content){var v=s.content;"string"==typeof v&&(v=document.getElementById(v)),"none"==v.style.display&&(v.style.display=""),d.childNodes[s.title?1:0].appendChild(v)}return d.onclick=function(t){var e=t.target||t.srcElement;if(e.className||(e=e.parentNode),a.closest(e,".gantt_popup_button")){var n=e.getAttribute("data-result");o(s,n="true"==n||"false"!=n&&n)}},s.box=d,(l||c)&&(n=s),d}(l,d,f);l.hidden||c(!0),document.body.appendChild(_);var g=Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-_.offsetWidth)/2)),p=Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-_.offsetHeight)/2));return"top"==l.position?_.style.top="-3px":_.style.top=p+"px",_.style.left=g+"px",_.onkeydown=s,y.focus(_),l.hidden&&y.hide(_),t.callEvent("onMessagePopup",[_]),_}function _(t){return f(t,!0,!1)}function g(t){return f(t,!0,!0)}function p(t){return f(t)}function v(t,e,n){return"object"!=i(t)&&("function"==typeof e&&(n=e,e=""),t={text:t,type:e,callback:n}),t}function m(t,e,n,a){return"object"!=i(t)&&(t={text:t,type:e,expire:n,id:a}),t.id=t.id||r.uid(),t.expire=t.expire||k.expire,t}t.event(l,"keydown",s,!0);var y=function(){var t=v.apply(this,arguments);return t.type=t.type||"alert",p(t)};y.hide=function(n){for(;n&&n.getAttribute&&!n.getAttribute(e);)n=n.parentNode;n&&(n.parentNode.removeChild(n),c(!1),t.callEvent("onAfterMessagePopup",[n]))},y.focus=function(t){setTimeout(function(){var e=a.getFocusableNodes(t);e.length&&e[0].focus&&e[0].focus()},1)};var k=function(t,e,n,i){switch((t=m.apply(this,arguments)).type=t.type||"info",t.type.split("-")[0]){case"alert":return _(t);case"confirm":return g(t);case"modalbox":return p(t);default:return d(t)}};k.seed=(new Date).valueOf(),k.uid=r.uid,k.expire=4e3,k.keyboard=!0,k.position="top",k.pull={},k.timers={},k.hideAll=function(){for(var t in k.pull)k.hide(t)},k.hide=function(t){var e=k.pull[t];e&&e.parentNode&&(window.setTimeout(function(){e.parentNode.removeChild(e),e=null},2e3),e.className+=" hidden",k.timers[t]&&window.clearTimeout(k.timers[t]),delete k.pull[t])};var b=[];return t.attachEvent("onMessagePopup",function(t){b.push(t)}),t.attachEvent("onAfterMessagePopup",function(t){for(var e=0;e<b.length;e++)b[e]===t&&(b.splice(e,1),e--)}),t.attachEvent("onDestroy",function(){c.cover&&c.cover.parentNode&&c.cover.parentNode.removeChild(c.cover);for(var t=0;t<b.length;t++)b[t].parentNode&&b[t].parentNode.removeChild(b[t]);b=null,k.area&&k.area.parentNode&&k.area.parentNode.removeChild(k.area),k=null}),{alert:function(){var t=v.apply(this,arguments);return t.type=t.type||"confirm",_(t)},confirm:function(){var t=v.apply(this,arguments);return t.type=t.type||"alert",g(t)},message:k,modalbox:y}}},function(t,e,n){t.exports=function(t){var e=n(0),i=n(11),r=n(15);if(!i.isNode){var a=n(1),o=n(2);t.utils={arrayFind:o.arrayFind,dom:a};var s=n(51)();t.event=s.attach,t.eventRemove=s.detach,t._eventRemoveAll=s.detachAll,t._createDomEventScope=s.extend,e.mixin(t,n(143)(t));var l=n(142).init(t);t.$ui=l.factory,t.$ui.layers=l.render,t.$mouseEvents=l.mouseEvents,t.$services.setService("mouseEvents",function(){return t.$mouseEvents}),t.mixin(t,l.layersApi),n(95)(t),t.$services.setService("layers",function(){return l.layersService});var c=n(94);t.mixin(t,c()),n(93)(t),n(92)(t),n(91)(t),n(90)(t),n(89)(t),n(88)(t),n(87)(t),n(86)(t),n(85)(t),n(80)(t),n(79)(t),n(69)(t),n(68)(t),t.locate=function(t){var e=a.getTargetNode(t);if(a.closest(e,".gantt_task_row"))return null;var n=arguments[1]||this.config.task_attribute,i=a.locateAttribute(e,n);return i?i.getAttribute(n):null},t._locate_css=function(t,e,n){return a.locateClassName(t,e,n)},t._locateHTML=function(t,e){return a.locateAttribute(t,e||this.config.task_attribute)}}t.attachEvent("onParse",function(){r(t)||t.attachEvent("onGanttRender",function(){if(t.config.initial_scroll){var e=t.getTaskByIndex(0),n=e?e.id:t.config.root_id;t.isTaskExists(n)&&t.$task&&t.utils.dom.isChildOf(t.$task,t.$container)&&t.showTask(n)}},{once:!0})}),t.attachEvent("onBeforeGanttReady",function(){this.config.scroll_size||(this.config.scroll_size=a.getScrollSize()||1),r(t)||(this._eventRemoveAll(),this.$mouseEvents.reset(),this.resetLightbox())}),t.attachEvent("onGanttReady",function(){!r(t)&&t.config.rtl&&t.$layout.getCellsByType("viewCell").forEach(function(e){var n=e.$config.scrollX;if(n){var i=t.$ui.getView(n);i&&i.scrollTo(i.$config.scrollSize,0)}})}),t.attachEvent("onGanttReady",function(){if(!r(t)){var e=t.plugins(),n={auto_scheduling:t.autoSchedule,click_drag:t.ext.clickDrag,critical_path:t.isCriticalTask,drag_timeline:t.ext.dragTimeline,export_api:t.exportToPDF,fullscreen:t.ext.fullscreen,grouping:t.groupBy,keyboard_navigation:t.ext.keyboardNavigation,marker:t.addMarker,multiselect:t.eachSelectedTask,overlay:t.ext.overlay,quick_info:t.templates.quick_info_content,tooltip:t.ext.tooltips,undo:t.undo};for(var i in n)n[i]&&!e[i]&&console.warn("You connected the '".concat(i,"' extension via an obsolete file. \nTo fix it, you need to remove the obsolete file and connect the extension via the plugins method: https://docs.dhtmlx.com/gantt/api__gantt_plugins.html"))}})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],month_short:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],day_full:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],day_short:["Нед","Пон","Вів","Сер","Чет","Птн","Суб"]},labels:{new_task:"Нове завдання",icon_save:"Зберегти",icon_cancel:"Відміна",icon_details:"Деталі",icon_edit:"Редагувати",icon_delete:"Вилучити",confirm_closing:"",confirm_deleting:"Подія вилучиться назавжди. Ви впевнені?",section_description:"Опис",section_time:"Часовий проміжок",section_type:"Тип",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Відміна",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],month_short:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],day_full:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],day_short:["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"]},labels:{new_task:"Yeni görev",icon_save:"Kaydet",icon_cancel:"İptal",icon_details:"Detaylar",icon_edit:"Düzenle",icon_delete:"Sil",confirm_closing:"",confirm_deleting:"Görev silinecek, emin misiniz?",section_description:"Açıklama",section_time:"Zaman Aralığı",section_type:"Tip",column_wbs:"WBS",column_text:"Görev Adı",column_start_date:"Başlangıç",column_duration:"Süre",column_add:"",link:"Bağlantı",confirm_link_deleting:"silinecek",link_start:" (başlangıç)",link_end:" (bitiş)",type_task:"Görev",type_project:"Proje",type_milestone:"Kilometretaşı",minutes:"Dakika",hours:"Saat",days:"Gün",weeks:"Hafta",months:"Ay",years:"Yıl",message_ok:"OK",message_cancel:"Ýptal",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],day_short:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},labels:{new_task:"Ny uppgift",icon_save:"Spara",icon_cancel:"Avbryt",icon_details:"Detajer",icon_edit:"Ändra",icon_delete:"Ta bort",confirm_closing:"",confirm_deleting:"Är du säker på att du vill ta bort händelsen permanent?",section_description:"Beskrivning",section_time:"Tid",section_type:"Typ",column_wbs:"WBS",column_text:"Uppgiftsnamn",column_start_date:"Starttid",column_duration:"Varaktighet",column_add:"",link:"Länk",confirm_link_deleting:"kommer tas bort",link_start:" (start)",link_end:" (slut)",type_task:"Uppgift",type_project:"Projekt",type_milestone:"Milstolpe",minutes:"Minuter",hours:"Timmar",days:"Dagar",weeks:"Veckor",months:"Månader",years:"År",message_ok:"OK",message_cancel:"Avbryt",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],month_short:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sept","Okt","Nov","Dec"],day_full:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],day_short:["Ne","Po","Ut","St","Št","Pi","So"]},labels:{new_task:"Nová úloha",icon_save:"Uložiť",icon_cancel:"Späť",icon_details:"Detail",icon_edit:"Edituj",icon_delete:"Zmazať",confirm_closing:"Vaše zmeny nebudú uložené. Skutočne?",confirm_deleting:"Udalosť bude natrvalo vymazaná. Skutočne?",section_description:"Poznámky",section_time:"Doba platnosti",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Späť",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],day_short:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"]},labels:{new_task:"Nova naloga",icon_save:"Shrani",icon_cancel:"Prekliči",icon_details:"Podrobnosti",icon_edit:"Uredi",icon_delete:"Izbriši",confirm_closing:"",confirm_deleting:"Dogodek bo izbrisan. Želite nadaljevati?",section_description:"Opis",section_time:"Časovni okvir",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Prekliči",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Январь","Февраль","Март","Апрель","Maй","Июнь","Июль","Август","Сентябрь","Oктябрь","Ноябрь","Декабрь"],month_short:["Янв","Фев","Maр","Aпр","Maй","Июн","Июл","Aвг","Сен","Окт","Ноя","Дек"],day_full:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],day_short:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"]},labels:{new_task:"Новое задание",icon_save:"Сохранить",icon_cancel:"Отменить",icon_details:"Детали",icon_edit:"Изменить",icon_delete:"Удалить",confirm_closing:"",confirm_deleting:"Событие будет удалено безвозвратно, продолжить?",section_description:"Описание",section_time:"Период времени",section_type:"Тип",column_wbs:"ИСР",column_text:"Задача",column_start_date:"Начало",column_duration:"Длительность",column_add:"",link:"Связь",confirm_link_deleting:"будет удалена",link_start:" (начало)",link_end:" (конец)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Минута",hours:"Час",days:"День",weeks:"Неделя",months:"Месяц",years:"Год",message_ok:"OK",message_cancel:"Отменить",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"начните вводить слово для фильтрации",resources_filter_label:"спрятать не установленные",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","November","December"],month_short:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],day_full:["Duminica","Luni","Marti","Miercuri","Joi","Vineri","Sambata"],day_short:["Du","Lu","Ma","Mi","Jo","Vi","Sa"]},labels:{new_task:"Sarcina noua",icon_save:"Salveaza",icon_cancel:"Anuleaza",icon_details:"Detalii",icon_edit:"Editeaza",icon_delete:"Sterge",confirm_closing:"Schimbarile nu vor fi salvate, esti sigur?",confirm_deleting:"Evenimentul va fi sters permanent, esti sigur?",section_description:"Descriere",section_time:"Interval",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Anuleaza",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],month_short:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],day_full:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],day_short:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},labels:{new_task:"Nova tarefa",icon_save:"Salvar",icon_cancel:"Cancelar",icon_details:"Detalhes",icon_edit:"Editar",icon_delete:"Excluir",confirm_closing:"",confirm_deleting:"As tarefas serão excluidas permanentemente, confirme?",section_description:"Descrição",section_time:"Período",section_type:"Tipo",column_wbs:"EAP",column_text:"Nome tarefa",column_start_date:"Data início",column_duration:"Duração",column_add:"",link:"Link",confirm_link_deleting:"Será excluído!",link_start:" (início)",link_end:" (fim)",type_task:"Task",type_project:"Projeto",type_milestone:"Marco",minutes:"Minutos",hours:"Horas",days:"Dias",weeks:"Semanas",months:"Meses",years:"Anos",message_ok:"OK",message_cancel:"Cancelar",section_constraint:"Restrição",constraint_type:"Tipo Restrição",constraint_date:"Data restrição",asap:"Mais breve possível",alap:"Mais tarde possível",snet:"Não começar antes de",snlt:"Não começar depois de",fnet:"Não terminar antes de",fnlt:"Não terminar depois de",mso:"Precisa começar em",mfo:"Precisa terminar em",resources_filter_placeholder:"Tipo de filtros",resources_filter_label:"Ocultar vazios",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],month_short:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Paź","Lis","Gru"],day_full:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],day_short:["Nie","Pon","Wto","Śro","Czw","Pią","Sob"]},labels:{new_task:"Nowe zadanie",icon_save:"Zapisz",icon_cancel:"Anuluj",icon_details:"Szczegóły",icon_edit:"Edytuj",icon_delete:"Usuń",confirm_closing:"",confirm_deleting:"Zdarzenie zostanie usunięte na zawsze, kontynuować?",section_description:"Opis",section_time:"Okres czasu",section_type:"Typ",column_wbs:"WBS",column_text:"Nazwa zadania",column_start_date:"Początek",column_duration:"Czas trwania",column_add:"",link:"Link",confirm_link_deleting:"zostanie usunięty",link_start:" (początek)",link_end:" (koniec)",type_task:"Zadanie",type_project:"Projekt",type_milestone:"Milestone",minutes:"Minuty",hours:"Godziny",days:"Dni",weeks:"Tydzień",months:"Miesiące",years:"Lata",message_ok:"OK",message_cancel:"Anuluj",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},labels:{new_task:"Ny oppgave",icon_save:"Lagre",icon_cancel:"Avbryt",icon_details:"Detaljer",icon_edit:"Endre",icon_delete:"Slett",confirm_closing:"Endringer blir ikke lagret, er du sikker?",confirm_deleting:"Oppføringen vil bli slettet, er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Avbryt",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],month_short:["Jan","Feb","mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],day_short:["Zo","Ma","Di","Wo","Do","Vr","Za"]},labels:{new_task:"Nieuwe taak",icon_save:"Opslaan",icon_cancel:"Annuleren",icon_details:"Details",icon_edit:"Bewerken",icon_delete:"Verwijderen",confirm_closing:"",confirm_deleting:"Item zal permanent worden verwijderd, doorgaan?",section_description:"Beschrijving",section_time:"Tijd periode",section_type:"Type",column_wbs:"WBS",column_text:"Taak omschrijving",column_start_date:"Startdatum",column_duration:"Duur",column_add:"",link:"Koppeling",confirm_link_deleting:"zal worden verwijderd",link_start:" (start)",link_end:" (eind)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"minuten",hours:"uren",days:"dagen",weeks:"weken",months:"maanden",years:"jaren",message_ok:"OK",message_cancel:"Annuleren",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Mon","Tir","Ons","Tor","Fre","Lør"]},labels:{new_task:"Ny oppgave",icon_save:"Lagre",icon_cancel:"Avbryt",icon_details:"Detaljer",icon_edit:"Rediger",icon_delete:"Slett",confirm_closing:"",confirm_deleting:"Hendelsen vil bli slettet permanent. Er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Avbryt",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t){var e=this;for(var n in this.addLocale=function(t,n){e._locales[t]=n},this.getLocale=function(t){return e._locales[t]},this._locales={},t)this._locales[n]=t[n]}}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],month_short:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],day_full:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],day_short:["일","월","화","수","목","금","토"]},labels:{new_task:"이름없는 작업",icon_save:"저장",icon_cancel:"취소",icon_details:"세부 사항",icon_edit:"수정",icon_delete:"삭제",confirm_closing:"",confirm_deleting:"작업을 삭제하시겠습니까?",section_description:"설명",section_time:"기간",section_type:"Type",column_wbs:"WBS",column_text:"작업명",column_start_date:"시작일",column_duration:"기간",column_add:"",link:"전제",confirm_link_deleting:"삭제 하시겠습니까?",link_start:" (start)",link_end:" (end)",type_task:"작업",type_project:"프로젝트",type_milestone:"마일스톤",minutes:"분",hours:"시간",days:"일",weeks:"주",months:"달",years:"년",message_ok:"OK",message_cancel:"취소",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],month_short:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day_full:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],day_short:["日","月","火","水","木","金","土"]},labels:{new_task:"新しい仕事",icon_save:"保存",icon_cancel:"キャンセル",icon_details:"詳細",icon_edit:"編集",icon_delete:"削除",confirm_closing:"",confirm_deleting:"イベント完全に削除されます、宜しいですか?",section_description:"デスクリプション",section_time:"期間",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"キャンセル",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],month_short:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],day_full:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],day_short:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"]},labels:{new_task:"Nuovo compito",icon_save:"Salva",icon_cancel:"Chiudi",icon_details:"Dettagli",icon_edit:"Modifica",icon_delete:"Elimina",confirm_closing:"",confirm_deleting:"Sei sicuro di confermare l'eliminazione?",section_description:"Descrizione",section_time:"Periodo di tempo",section_type:"Tipo",column_wbs:"WBS",column_text:"Nome Attività",column_start_date:"Inizio",column_duration:"Durata",column_add:"",link:"Link",confirm_link_deleting:"sarà eliminato",link_start:" (inizio)",link_end:" (fine)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minuti",hours:"Ore",days:"Giorni",weeks:"Settimane",months:"Mesi",years:"Anni",message_ok:"OK",message_cancel:"Chiudi",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],month_short:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],day_full:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],day_short:["Ming","Sen","Sel","Rab","Kam","Jum","Sab"]},labels:{new_task:"Tugas baru",icon_save:"Simpan",icon_cancel:"Batal",icon_details:"Detail",icon_edit:"Edit",icon_delete:"Hapus",confirm_closing:"",confirm_deleting:"Acara akan dihapus",section_description:"Keterangan",section_time:"Periode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Batal",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],month_short:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],day_full:["Vasárnap","Hétfõ","Kedd","Szerda","Csütörtök","Péntek","szombat"],day_short:["Va","Hé","Ke","Sze","Csü","Pé","Szo"]},labels:{new_task:"Új feladat",icon_save:"Mentés",icon_cancel:"Mégse",icon_details:"Részletek",icon_edit:"Szerkesztés",icon_delete:"Törlés",confirm_closing:"",confirm_deleting:"Az esemény törölve lesz, biztosan folytatja?",section_description:"Leírás",section_time:"Idõszak",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Mégse",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],month_short:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],day_full:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],day_short:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"]},labels:{new_task:"Novi Zadatak",icon_save:"Spremi",icon_cancel:"Odustani",icon_details:"Detalji",icon_edit:"Izmjeni",icon_delete:"Obriši",confirm_closing:"",confirm_deleting:"Zadatak će biti trajno izbrisan, jeste li sigurni?",section_description:"Opis",section_time:"Vremenski Period",section_type:"Tip",column_wbs:"WBS",column_text:"Naziv Zadatka",column_start_date:"Početno Vrijeme",column_duration:"Trajanje",column_add:"",link:"Poveznica",confirm_link_deleting:"će biti izbrisan",link_start:" (početak)",link_end:" (kraj)",type_task:"Zadatak",type_project:"Projekt",type_milestone:"Milestone",minutes:"Minute",hours:"Sati",days:"Dani",weeks:"Tjedni",months:"Mjeseci",years:"Godine",message_ok:"OK",message_cancel:"Odustani",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],month_short:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],day_full:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],day_short:["א","ב","ג","ד","ה","ו","ש"]},labels:{new_task:"משימה חדש",icon_save:"שמור",icon_cancel:"בטל",icon_details:"פרטים",icon_edit:"ערוך",icon_delete:"מחק",confirm_closing:"",confirm_deleting:"ארוע ימחק סופית.להמשיך?",section_description:"הסבר",section_time:"תקופה",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"בטל",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],month_short:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Aoû","Sep","Oct","Nov","Déc"],day_full:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],day_short:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"]},labels:{new_task:"Nouvelle tâche",icon_save:"Enregistrer",icon_cancel:"Annuler",icon_details:"Détails",icon_edit:"Modifier",icon_delete:"Effacer",confirm_closing:"",confirm_deleting:"L'événement sera effacé sans appel, êtes-vous sûr ?",section_description:"Description",section_time:"Période",section_type:"Type",column_wbs:"OTP",column_text:"Nom de la tâche",column_start_date:"Date initiale",column_duration:"Durée",column_add:"",link:"Le lien",confirm_link_deleting:"sera supprimé",link_start:"(début)",link_end:"(fin)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Heures",days:"Jours",weeks:"Semaines",months:"Mois",years:"Années",message_ok:"OK",message_cancel:"Annuler",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],month_short:["Tam","Hel","Maa","Huh","Tou","Kes","Hei","Elo","Syy","Lok","Mar","Jou"],day_full:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],day_short:["Su","Ma","Ti","Ke","To","Pe","La"]},labels:{new_task:"Uusi tehtävä",icon_save:"Tallenna",icon_cancel:"Peru",icon_details:"Tiedot",icon_edit:"Muokkaa",icon_delete:"Poista",confirm_closing:"",confirm_deleting:"Haluatko varmasti poistaa tapahtuman?",section_description:"Kuvaus",section_time:"Aikajakso",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Peru",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],month_short:["1","2","3","4","5","6","7","8","9","10","11","12"],day_full:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],day_short:["ی","د","س","چ","پ","ج","ش"]},labels:{new_task:"وظیفه جدید",icon_save:"ذخیره",icon_cancel:"لغو",icon_details:"جزییات",icon_edit:"ویرایش",icon_delete:"حذف",confirm_closing:"تغییرات شما ازدست خواهد رفت، آیا مطمئن هستید؟",confirm_deleting:"این مورد برای همیشه حذف خواهد شد، آیا مطمئن هستید؟",section_description:"توضیحات",section_time:"مدت زمان",section_type:"نوع",column_wbs:"WBS",column_text:"عنوان",column_start_date:"زمان شروع",column_duration:"مدت",column_add:"",link:"ارتباط",confirm_link_deleting:"حذف خواهد شد",link_start:" (آغاز)",link_end:" (پایان)",type_task:"وظیفه",type_project:"پروژه",type_milestone:"نگارش",minutes:"دقایق",hours:"ساعات",days:"روزها",weeks:"هفته",months:"ماهها",years:"سالها",message_ok:"تایید",message_cancel:"لغو",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],month_short:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],day_full:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],day_short:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"]},labels:{new_task:"Nueva tarea",icon_save:"Guardar",icon_cancel:"Cancelar",icon_details:"Detalles",icon_edit:"Editar",icon_delete:"Eliminar",confirm_closing:"",confirm_deleting:"El evento se borrará definitivamente, ¿continuar?",section_description:"Descripción",section_time:"Período",section_type:"Tipo",column_wbs:"EDT",column_text:"Tarea",column_start_date:"Inicio",column_duration:"Duración",column_add:"",link:"Enlace",confirm_link_deleting:"será borrada",link_start:" (inicio)",link_end:" (fin)",type_task:"Tarea",type_project:"Proyecto",type_milestone:"Hito",minutes:"Minutos",hours:"Horas",days:"Días",weeks:"Semanas",months:"Meses",years:"Años",message_ok:"OK",message_cancel:"Cancelar",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},labels:{new_task:"New task",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Task will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Cancel",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάϊος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],month_short:["ΙΑΝ","ΦΕΒ","ΜΑΡ","ΑΠΡ","ΜΑΙ","ΙΟΥΝ","ΙΟΥΛ","ΑΥΓ","ΣΕΠ","ΟΚΤ","ΝΟΕ","ΔΕΚ"],day_full:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Κυριακή"],day_short:["ΚΥ","ΔΕ","ΤΡ","ΤΕ","ΠΕ","ΠΑ","ΣΑ"]},labels:{new_task:"Νέα εργασία",icon_save:"Αποθήκευση",icon_cancel:"Άκυρο",icon_details:"Λεπτομέρειες",icon_edit:"Επεξεργασία",icon_delete:"Διαγραφή",confirm_closing:"",confirm_deleting:"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;",section_description:"Περιγραφή",section_time:"Χρονική περίοδος",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Άκυρο",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:[" Januar"," Februar"," März "," April"," Mai"," Juni"," Juli"," August"," September "," Oktober"," November "," Dezember"],month_short:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],day_full:["Sonntag","Montag","Dienstag"," Mittwoch"," Donnerstag","Freitag","Samstag"],day_short:["So","Mo","Di","Mi","Do","Fr","Sa"]},labels:{new_task:"Neue Aufgabe",icon_save:"Speichern",icon_cancel:"Abbrechen",icon_details:"Details",icon_edit:"Ändern",icon_delete:"Löschen",confirm_closing:"",confirm_deleting:"Der Eintrag wird gelöscht",section_description:"Beschreibung",section_time:"Zeitspanne",section_type:"Type",column_wbs:"PSP",column_text:"Task-Namen",column_start_date:"Startzeit",column_duration:"Dauer",column_add:"",link:"Link",confirm_link_deleting:"werden gelöscht",link_start:"(starten)",link_end:"(ende)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minuten",hours:"Stunden",days:"Tage",weeks:"Wochen",months:"Monate",years:"Jahre",message_ok:"OK",message_cancel:"Abbrechen",section_constraint:"Regel",constraint_type:"Regel",constraint_date:"Regel - Datum",asap:"So bald wie möglich",alap:"So spät wie möglich",snet:"Beginn nicht vor",snlt:"Beginn nicht später als",fnet:"Fertigstellung nicht vor",fnlt:"Fertigstellung nicht später als",mso:"Muss beginnen am",mfo:"Muss fertig sein am",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],month_short:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],day_full:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_short:["Søn","Man","Tir","Ons","Tor","Fre","Lør"]},labels:{new_task:"Ny opgave",icon_save:"Gem",icon_cancel:"Fortryd",icon_details:"Detaljer",icon_edit:"Tilret",icon_delete:"Slet",confirm_closing:"Dine rettelser vil gå tabt.. Er dy sikker?",confirm_deleting:"Bigivenheden vil blive slettet permanent. Er du sikker?",section_description:"Beskrivelse",section_time:"Tidsperiode",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Fortryd",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],month_short:["Led","Ún","Bře","Dub","Kvě","Čer","Čec","Srp","Září","Říj","List","Pro"],day_full:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],day_short:["Ne","Po","Út","St","Čt","Pá","So"]},labels:{new_task:"Nová práce",icon_save:"Uložit",icon_cancel:"Zpět",icon_details:"Detail",icon_edit:"Edituj",icon_delete:"Smazat",confirm_closing:"",confirm_deleting:"Událost bude trvale smazána, opravdu?",section_description:"Poznámky",section_time:"Doba platnosti",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Zpět",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],month_short:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day_full:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],day_short:["日","一","二","三","四","五","六"]},labels:{new_task:"新任務",icon_save:"保存",icon_cancel:"关闭",icon_details:"详细",icon_edit:"编辑",icon_delete:"删除",confirm_closing:"请确认是否撤销修改!",confirm_deleting:"是否删除日程?",section_description:"描述",section_time:"时间范围",section_type:"类型",column_wbs:"工作分解结构",column_text:"任务名",column_start_date:"开始时间",column_duration:"持续时间",column_add:"",link:"关联",confirm_link_deleting:"将被删除",link_start:" (开始)",link_end:" (结束)",type_task:"任务",type_project:"项目",type_milestone:"里程碑",minutes:"分钟",hours:"小时",days:"天",weeks:"周",months:"月",years:"年",message_ok:"OK",message_cancel:"关闭",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],month_short:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],day_full:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],day_short:["Dg","Dl","Dm","Dc","Dj","Dv","Ds"]},labels:{new_task:"Nova tasca",icon_save:"Guardar",icon_cancel:"Cancel·lar",icon_details:"Detalls",icon_edit:"Editar",icon_delete:"Esborrar",confirm_closing:"",confirm_deleting:"L'esdeveniment s'esborrarà definitivament, continuar ?",section_description:"Descripció",section_time:"Periode de temps",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"Cancel·lar",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["Студзень","Люты","Сакавік","Красавік","Maй","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],month_short:["Студз","Лют","Сак","Крас","Maй","Чэр","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],day_full:["Нядзеля","Панядзелак","Аўторак","Серада","Чацвер","Пятніца","Субота"],day_short:["Нд","Пн","Аўт","Ср","Чцв","Пт","Сб"]},labels:{new_task:"Новае заданне",icon_save:"Захаваць",icon_cancel:"Адмяніць",icon_details:"Дэталі",icon_edit:"Змяніць",icon_delete:"Выдаліць",confirm_closing:"",confirm_deleting:"Падзея будзе выдалена незваротна, працягнуць?",section_description:"Апісанне",section_time:"Перыяд часу",section_type:"Тып",column_wbs:"ІСР",column_text:"Задача",column_start_date:"Пачатак",column_duration:"Працяг",column_add:"",link:"Сувязь",confirm_link_deleting:"будзе выдалена",link_start:"(пачатак)",link_end:"(канец)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Хвiлiна",hours:"Гадзiна",days:"Дзень",weeks:"Тыдзень",months:"Месяц",years:"Год",message_ok:"OK",message_cancel:"Адмяніць",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={date:{month_full:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],month_short:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],day_full:["الأحد","الأثنين","ألثلاثاء","الأربعاء","ألحميس","ألجمعة","السبت"],day_short:["احد","اثنين","ثلاثاء","اربعاء","خميس","جمعة","سبت"]},labels:{new_task:"مهمة جديد",icon_save:"اخزن",icon_cancel:"الغاء",icon_details:"تفاصيل",icon_edit:"تحرير",icon_delete:"حذف",confirm_closing:"التغييرات سوف تضيع, هل انت متأكد؟",confirm_deleting:"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟",section_description:"الوصف",section_time:"الفترة الزمنية",section_type:"Type",column_wbs:"WBS",column_text:"Task name",column_start_date:"Start time",column_duration:"Duration",column_add:"",link:"Link",confirm_link_deleting:"will be deleted",link_start:" (start)",link_end:" (end)",type_task:"Task",type_project:"Project",type_milestone:"Milestone",minutes:"Minutes",hours:"Hours",days:"Days",weeks:"Week",months:"Months",years:"Years",message_ok:"OK",message_cancel:"الغاء",section_constraint:"Constraint",constraint_type:"Constraint type",constraint_date:"Constraint date",asap:"As Soon As Possible",alap:"As Late As Possible",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than",mso:"Must Start On",mfo:"Must Finish On",resources_filter_placeholder:"type to filter",resources_filter_label:"hide empty",empty_state_text_link:"Click here",empty_state_text_description:"to create your first task"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(177),r=n(176),a=n(175),o=n(174),s=n(173),l=n(172),c=n(171),u=n(170),d=n(169),h=n(168),f=n(167),_=n(166),g=n(165),p=n(164),v=n(163),m=n(162),y=n(161),k=n(160),b=n(159),x=n(158),w=n(157),S=n(156),T=n(155),$=n(154),C=n(153),E=n(152),A=n(151),D=n(150),M=n(149),I=n(148),P=n(147),N=n(146),O=n(145);e.default=function(){return new w.default({en:d.default,ar:i.default,be:r.default,ca:a.default,cn:o.default,cs:s.default,da:l.default,de:c.default,el:u.default,es:h.default,fa:f.default,fi:_.default,fr:g.default,he:p.default,hr:v.default,hu:m.default,id:y.default,it:k.default,jp:b.default,kr:x.default,nb:S.default,nl:T.default,no:$.default,pl:C.default,pt:E.default,ro:A.default,ru:D.default,si:M.default,sk:I.default,sv:P.default,tr:N.default,ua:O.default})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){}},function(t,e){t.exports=function(t){t.destructor=function(){for(var t in this.clearAll(),this.callEvent("onDestroy",[]),this.$root&&delete this.$root.gantt,this._eventRemoveAll&&this._eventRemoveAll(),this.$layout&&this.$layout.destructor(),this.resetLightbox&&this.resetLightbox(),this._dp&&this._dp.destructor&&this._dp.destructor(),this.$services.destructor(),this.detachAllEvents(),this)0===t.indexOf("$")&&delete this[t];this.$destroyed=!0}}},function(t,e){t.exports=function(t){return function(e,n){e||t.config.show_errors&&!1!==t.callEvent("onError",[n])&&(t.message?t.message({type:"error",text:n,expire:-1}):console.log(n))}}},function(t,e){function n(t,e){var n,r=t.config.container_resize_timeout||20,a=i(t);if("timeout"==t.config.container_resize_method)c();else try{t.event(e,"resize",function(){if(t.$scrollbarRepaint)t.$scrollbarRepaint=null;else{var e=i(t);if(a.x==e.x&&a.y==e.y)return;a=e,o()}})}catch(t){c()}function o(){clearTimeout(n),n=setTimeout(function(){t.$destroyed||t.render()},r)}var s=t.$root.offsetHeight,l=t.$root.offsetWidth;function c(){t.$root.offsetHeight==s&&t.$root.offsetWidth==l||o(),s=t.$root.offsetHeight,l=t.$root.offsetWidth,setTimeout(c,r)}}function i(t){return{x:t.$root.offsetWidth,y:t.$root.offsetHeight}}t.exports=function(t){"static"==window.getComputedStyle(t.$root).getPropertyValue("position")&&(t.$root.style.position="relative");var e=document.createElement("iframe");e.className="gantt_container_resize_watcher",e.tabIndex=-1,t.config.wai_aria_attributes&&(e.setAttribute("role","none"),e.setAttribute("aria-hidden",!0)),(!!window.Sfdc||!!window.$A||window.Aura)&&(t.config.container_resize_method="timeout"),t.$root.appendChild(e),e.contentWindow?n(t,e.contentWindow):(t.$root.removeChild(e),n(t,window))}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(1),a=n(2),o=n(15),s=n(182);t.exports=function(t){var e=n(46);t.assert=n(181)(t);var l="Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).This error means that either invalid object is passed into `gantt.init` or that the element with the specified ID doesn't exist on the page when `gantt.init` is called.";function c(e){if(!e||"string"==typeof e&&document.getElementById(e))return!0;if(function(t){try{t.cloneNode(!1)}catch(t){return!1}return!0}(e))return!0;throw t.assert(!1,l),new Error(l)}t.init=function(e,n,i){t.env.isNode?e=null:c(e),n&&i&&(this.config.start_date=this._min_date=new Date(n),this.config.end_date=this._max_date=new Date(i)),this.date.init(),this.init=function(e){t.env.isNode?e=null:c(e),this.$container&&this.$container.parentNode&&(this.$container.parentNode.removeChild(this.$container),this.$container=null),this.$layout&&this.$layout.clear(),this._reinit(e)},this._reinit(e)},t._quickRefresh=function(t){for(var e=this._getDatastores.call(this),n=0;n<e.length;n++)e[n]._quick_refresh=!0;t();for(n=0;n<e.length;n++)e[n]._quick_refresh=!1};var u=function(){this._clearTaskLayers&&this._clearTaskLayers(),this._clearLinkLayers&&this._clearLinkLayers(),this.$layout&&(this.$layout.destructor(),this.$layout=null,this.$ui.reset())}.bind(t),d=function(){o(t)||(this.$root.innerHTML="",this.$root.gantt=this,e(this),this.config.layout.id="main",this.$layout=this.$ui.createView("layout",this.$root,this.config.layout),this.$layout.attachEvent("onBeforeResize",function(){for(var e=t.$services.getService("datastores"),n=0;n<e.length;n++)t.getDatastore(e[n]).filter(),t.$data.tasksStore._skipTaskRecalculation?"lightbox"!=t.$data.tasksStore._skipTaskRecalculation&&(t.$data.tasksStore._skipTaskRecalculation=!1):t.getDatastore(e[n]).callEvent("onBeforeRefreshAll",[])}),this.$layout.attachEvent("onResize",function(){t._quickRefresh(function(){t.refreshData()})}),this.callEvent("onGanttLayoutReady",[]),this.$layout.render(),this.$container=this.$layout.$container.firstChild,s(this))}.bind(t);t.resetLayout=function(){u(),d(),this.render()},t._reinit=function(t){this.callEvent("onBeforeGanttReady",[]),this._update_flags(),this.$services.getService("templateLoader").initTemplates(this),u(),this.$root=null,t&&(this.$root=r.toNode(t),d(),this.$mouseEvents.reset(this.$root)),this.callEvent("onTemplatesReady",[]),this.callEvent("onGanttReady",[]),this.render()},t.$click={buttons:{edit:function(e){t.isReadonly(t.getTask(e))||t.showLightbox(e)},delete:function(e){var n=t.getTask(e);if(!t.isReadonly(n)){var i=t.locale.labels.confirm_deleting,r=t.locale.labels.confirm_deleting_title;t._simple_confirm(i,r,function(){t.isTaskExists(e)?(n.$new?(t.$data.tasksStore._skipTaskRecalculation="lightbox",t.silent(function(){t.deleteTask(e,!0)}),t.$data.tasksStore._skipTaskRecalculation=!1,t.refreshData()):(t.$data.tasksStore._skipTaskRecalculation=!0,t.deleteTask(e)),t.hideLightbox()):t.hideLightbox()})}}}},t.render=function(){var n;if(this.callEvent("onBeforeGanttRender",[]),!o(t)){!this.config.sort&&this._sort&&(this._sort=void 0),this.$root&&(this.config.rtl?(this.$root.classList.add("gantt_rtl"),this.$root.firstChild.classList.add("gantt_rtl")):(this.$root.classList.remove("gantt_rtl"),this.$root.firstChild.classList.remove("gantt_rtl")));var i=this.getScrollState(),r=i?i.x:0;if(this._getHorizontalScrollbar())r=this._getHorizontalScrollbar().$config.codeScrollLeft||r||0;n=null,r&&(n=t.dateFromPos(r+this.config.task_scroll_offset))}if(e(this),o(t))t.refreshData();else{this.$layout.$config.autosize=this.config.autosize;var a=this.config.preserve_scroll;if(this.config.preserve_scroll=!1,this.$layout.resize(),this.config.preserve_scroll=a,this.config.preserve_scroll&&i){if(r||i.y){var s=t.getScrollState();if(+n!=+t.dateFromPos(s.x)||s.y!=i.y){r=null;var l=null;if(n)r=Math.max(t.posFromDate(n)-t.config.task_scroll_offset,0);i.y&&(l=i.y),t.scrollTo(r,l)}}var c=t.$ui.getView("grid");if(c){var u=c.$config.scrollY,d=t.$ui.getView(u);if(d)t.utils.dom.isChildOf(d.$view,t.$container)||c.scrollTo(void 0,0)}}}this.callEvent("onGanttRender",[])},t.setSizes=t.render,t.getTaskRowNode=function(t){for(var e=this.$grid_data.childNodes,n=this.config.task_attribute,i=0;i<e.length;i++){if(e[i].getAttribute)if(e[i].getAttribute(n)==t)return e[i]}return null},t.changeLightboxType=function(e){if(this.getLightboxType()==e)return!0;t._silent_redraw_lightbox(e)},t._get_link_type=function(e,n){var i=null;return e&&n?i=t.config.links.start_to_start:!e&&n?i=t.config.links.finish_to_start:e||n?e&&!n&&(i=t.config.links.start_to_finish):i=t.config.links.finish_to_finish,i},t.isLinkAllowed=function(t,e,n,r){var a=null;if(!(a="object"==i(t)?t:{source:t,target:e,type:this._get_link_type(n,r)}))return!1;if(!(a.source&&a.target&&a.type))return!1;if(a.source==a.target)return!1;var o=!0;return this.checkEvent("onLinkValidation")&&(o=this.callEvent("onLinkValidation",[a])),o},t._correct_dst_change=function(e,n,i,r){var o=a.getSecondsInUnit(r)*i;if(o>3600&&o<86400){var s=e.getTimezoneOffset()-n;s&&(e=t.date.add(e,s,"minute"))}return e},t.isSplitTask=function(e){return t.assert(e&&e instanceof Object,"Invalid argument <b>task</b>="+e+" of gantt.isSplitTask. Task object was expected"),this.$data.tasksStore._isSplitItem(e)},t._is_icon_open_click=function(t){if(!t)return!1;var e=t.target||t.srcElement;if(!e||!e.className)return!1;var n=r.getClassName(e);return-1!==n.indexOf("gantt_tree_icon")&&(-1!==n.indexOf("gantt_close")||-1!==n.indexOf("gantt_open"))}}},function(t,e){t.exports=function(t){function e(){return t._cached_functions.update_if_changed(t),t._cached_functions.active||t._cached_functions.activate(),!0}t._cached_functions={cache:{},mode:!1,critical_path_mode:!1,wrap_methods:function(t,e){if(e._prefetch_originals)for(var n in e._prefetch_originals)e[n]=e._prefetch_originals[n];e._prefetch_originals={};for(n=0;n<t.length;n++)this.prefetch(t[n],e)},prefetch:function(t,e){var n=e[t];if(n){var i=this;e._prefetch_originals[t]=n,e[t]=function(){for(var e=new Array(arguments.length),r=0,a=arguments.length;r<a;r++)e[r]=arguments[r];if(i.active){var o=i.get_arguments_hash(Array.prototype.slice.call(e));i.cache[t]||(i.cache[t]={});var s=i.cache[t];if(i.has_cached_value(s,o))return i.get_cached_value(s,o);var l=n.apply(this,e);return i.cache_value(s,o,l),l}return n.apply(this,e)}}return n},cache_value:function(t,e,n){this.is_date(n)&&(n=new Date(n)),t[e]=n},has_cached_value:function(t,e){return t.hasOwnProperty(e)},get_cached_value:function(t,e){var n=t[e];return this.is_date(n)&&(n=new Date(n)),n},is_date:function(t){return t&&t.getUTCDate},get_arguments_hash:function(t){for(var e=[],n=0;n<t.length;n++)e.push(this.stringify_argument(t[n]));return"("+e.join(";")+")"},stringify_argument:function(t){return(t.id?t.id:this.is_date(t)?t.valueOf():t)+""},activate:function(){this.clear(),this.active=!0},deactivate:function(){this.clear(),this.active=!1},clear:function(){this.cache={}},setup:function(t){var e=[],n=["_isProjectEnd","_getProjectEnd","_getSlack"];"auto"==this.mode?t.config.highlight_critical_path&&(e=n):!0===this.mode&&(e=n),this.wrap_methods(e,t)},update_if_changed:function(t){(this.critical_path_mode!=t.config.highlight_critical_path||this.mode!==t.config.optimize_render)&&(this.critical_path_mode=t.config.highlight_critical_path,this.mode=t.config.optimize_render,this.setup(t))}},t.attachEvent("onBeforeGanttRender",e),t.attachEvent("onBeforeDataRender",e),t.attachEvent("onBeforeSmartRender",function(){e()}),t.attachEvent("onBeforeParse",e),t.attachEvent("onDataRender",function(){t._cached_functions.deactivate()});var n=null;t.attachEvent("onSmartRender",function(){n&&clearTimeout(n),n=setTimeout(function(){t._cached_functions.deactivate()},1e3)}),t.attachEvent("onBeforeGanttReady",function(){return t._cached_functions.update_if_changed(t),!0})}},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){t.getTaskType=function(e){var i=e;for(var r in e&&"object"==n(e)&&(i=e.type),this.config.types)if(this.config.types[r]==i)return i;return t.config.types.task}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){}},function(t,e,n){var i=n(2);t.exports=function(t){t.isUnscheduledTask=function(e){return t.assert(e&&e instanceof Object,"Invalid argument <b>task</b>="+e+" of gantt.isUnscheduledTask. Task object was expected"),!!e.unscheduled||!e.start_date},t._isAllowedUnscheduledTask=function(e){return!(!e.unscheduled||!t.config.show_unscheduled)},t._isTaskInTimelineLimits=function(t){var e=t.start_date?t.start_date.valueOf():null,n=t.end_date?t.end_date.valueOf():null;return!!(e&&n&&e<=this._max_date.valueOf()&&n>=this._min_date.valueOf())},t.isTaskVisible=function(t){if(!this.isTaskExists(t))return!1;var e=this.getTask(t);return!(!this._isAllowedUnscheduledTask(e)&&!this._isTaskInTimelineLimits(e))&&!!(this.getGlobalTaskIndex(t)>=0)},t._getProjectEnd=function(){if(t.config.project_end)return t.config.project_end;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.end_date>+e.end_date?1:-1})).length?e[e.length-1].end_date:null},t._getProjectStart=function(){if(t.config.project_start)return t.config.project_start;if(t.config.start_date)return t.config.start_date;if(t.getState().min_date)return t.getState().min_date;var e=t.getTaskByTime();return(e=e.sort(function(t,e){return+t.start_date>+e.start_date?1:-1})).length?e[0].start_date:null};var e=function(e,n){var i=!!(n&&n!=t.config.root_id&&t.isTaskExists(n))&&t.getTask(n),r=null;if(i)r=t.config.schedule_from_end?t.calculateEndDate({start_date:i.end_date,duration:-t.config.duration_step,task:e}):i.start_date;else if(t.config.schedule_from_end)r=t.calculateEndDate({start_date:t._getProjectEnd(),duration:-t.config.duration_step,task:e});else{var a=t.getTaskByIndex(0),o=t.config.start_date||t.getState().min_date;r=a?a.start_date?a.start_date:a.end_date?t.calculateEndDate({start_date:a.end_date,duration:-t.config.duration_step,task:e}):o:o}return t.assert(r,"Invalid dates"),new Date(r)};t._set_default_task_timing=function(n){n.start_date=n.start_date||e(n,t.getParent(n)),n.duration=n.duration||t.config.duration_step,n.end_date=n.end_date||t.calculateEndDate(n)},t.createTask=function(n,i,r){(n=n||{},t.defined(n.id)||(n.id=t.uid()),n.start_date||(n.start_date=e(n,i)),void 0===n.text&&(n.text=t.locale.labels.new_task),void 0===n.duration&&(n.duration=1),this.isTaskExists(i))&&(this.setParent(n,i,!0),this.getTask(i).$open=!0);if(!this.callEvent("onTaskCreated",[n]))return null;if(this.config.details_on_create){if(t.isTaskExists(n.id))t.getTask(n.id).$index!=n.$index&&(n.start_date&&"string"==typeof n.start_date&&(n.start_date=this.date.parseDate(n.start_date,"parse_date")),n.end_date&&"string"==typeof n.end_date&&(n.end_date=this.date.parseDate(n.end_date,"parse_date")),this.$data.tasksStore.updateItem(n.id,n));else n.$new=!0,this.silent(function(){t.$data.tasksStore.addItem(n,r)});this.selectTask(n.id),this.refreshData(),this.showLightbox(n.id)}else this.addTask(n,i,r)&&(this.showTask(n.id),this.selectTask(n.id));return n.id},t._update_flags=function(e,n){var i=t.$data.tasksStore;void 0===e?(this._lightbox_id=null,i.silent(function(){i.unselect()}),this.getSelectedTasks&&this._multiselect.reset(),this._tasks_dnd&&this._tasks_dnd.drag&&(this._tasks_dnd.drag.id=null)):(this._lightbox_id==e&&(this._lightbox_id=n),i.getSelectedId()==e&&i.silent(function(){i.unselect(e),i.select(n)}),this._tasks_dnd&&this._tasks_dnd.drag&&this._tasks_dnd.drag.id==e&&(this._tasks_dnd.drag.id=n))};var n=function(e,n){var i=t.getTaskType(e.type),r={type:i,$no_start:!1,$no_end:!1};return n||i!=e.$rendered_type?(i==t.config.types.project?r.$no_end=r.$no_start=!0:i!=t.config.types.milestone&&(r.$no_end=!(e.end_date||e.duration),r.$no_start=!e.start_date,t._isAllowedUnscheduledTask(e)&&(r.$no_end=r.$no_start=!1)),r):(r.$no_start=e.$no_start,r.$no_end=e.$no_end,r)};function r(e){e.$effective_calendar=t.getTaskCalendar(e).id,e.start_date=t.getClosestWorkTime({dir:"future",date:e.start_date,unit:t.config.duration_unit,task:e}),e.end_date=t.calculateEndDate(e)}function a(e){var n=null,i=null,r=void 0!==e?e:t.config.root_id,a=[];return t.eachTask(function(e){t.getTaskType(e.type)==t.config.types.project||t.isUnscheduledTask(e)||(e.rollup&&a.push(e.id),e.start_date&&!e.$no_start&&(!n||n>e.start_date.valueOf())&&(n=e.start_date.valueOf()),e.end_date&&!e.$no_end&&(!i||i<e.end_date.valueOf())&&(i=e.end_date.valueOf()))},r),{start_date:n?new Date(n):null,end_date:i?new Date(i):null,rollup:a}}t._init_task_timing=function(t){var e=n(t,!0),i=t.$rendered_type!=e.type,a=e.type;i&&(t.$no_start=e.$no_start,t.$no_end=e.$no_end,t.$rendered_type=e.type),i&&a!=this.config.types.milestone&&a==this.config.types.project&&(this._set_default_task_timing(t),t.$calculate_duration=!1),a==this.config.types.milestone&&(t.end_date=t.start_date),t.start_date&&t.end_date&&!1!==t.$calculate_duration&&(t.duration=this.calculateDuration(t)),t.$calculate_duration||(t.$calculate_duration=!0),t.end_date||(t.end_date=t.start_date),t.duration=t.duration||0,0===this.config.min_duration&&0===t.duration&&(t.$no_end=!1);var o=this.getTaskCalendar(t);t.$effective_calendar&&t.$effective_calendar!==o.id&&(r(t),this.config.inherit_calendar&&this.isSummaryTask(t)&&this.eachTask(function(t){r(t)},t.id)),t.$effective_calendar=o.id},t.isSummaryTask=function(e){t.assert(e&&e instanceof Object,"Invalid argument <b>task</b>="+e+" of gantt.isSummaryTask. Task object was expected");var i=n(e);return!(!i.$no_end&&!i.$no_start)},t.resetProjectDates=function(t){var i=n(t);if(i.$no_end||i.$no_start){var r=a(t.id);(function(t,n,i,r){n.$no_start&&(t.start_date=i?new Date(i):e(t,this.getParent(t)));n.$no_end&&(t.end_date=r?new Date(r):this.calculateEndDate({start_date:t.start_date,duration:this.config.duration_step,task:t}));(n.$no_start||n.$no_end)&&this._init_task_timing(t)}).call(this,t,i,r.start_date,r.end_date),t.$rollup=r.rollup}},t.getSubtaskDuration=function(e){var n=0,i=void 0!==e?e:t.config.root_id;return this.eachTask(function(e){this.getTaskType(e.type)==t.config.types.project||this.isUnscheduledTask(e)||(n+=e.duration)},i),n},t.getSubtaskDates=function(t){var e=a(t);return{start_date:e.start_date,end_date:e.end_date}},t._update_parents=function(e,i,r){if(e){var a=this.getTask(e);a.rollup&&(r=!0);var o=this.getParent(a),s=n(a),l=!0;if(r||a.start_date&&a.end_date&&(s.$no_start||s.$no_end)){var c=a.start_date.valueOf(),u=a.end_date.valueOf();t.resetProjectDates(a),r||c!=a.start_date.valueOf()||u!=a.end_date.valueOf()||(l=!1),l&&!i&&this.refreshTask(a.id,!0)}l&&o&&this.isTaskExists(o)&&this._update_parents(o,i,r)}},t.roundDate=function(e){var n=t.getScale();i.isDate(e)&&(e={date:e,unit:n?n.unit:t.config.duration_unit,step:n?n.step:t.config.duration_step});var r,a,o,s=e.date,l=e.step,c=e.unit;if(!n)return s;if(c==n.unit&&l==n.step&&+s>=+n.min_date&&+s<=+n.max_date)o=Math.floor(t.columnIndexByDate(s)),n.trace_x[o]||(o-=1,n.rtl&&(o=0)),a=new Date(n.trace_x[o]),r=t.date.add(a,l,c);else{for(o=Math.floor(t.columnIndexByDate(s)),r=t.date[c+"_start"](new Date(n.min_date)),n.trace_x[o]&&(r=t.date[c+"_start"](n.trace_x[o]));+r<+s;){var u=(r=t.date[c+"_start"](t.date.add(r,l,c))).getTimezoneOffset();r=t._correct_dst_change(r,u,r,c),t.date[c+"_start"]&&(r=t.date[c+"_start"](r))}a=t.date.add(r,-1*l,c)}return e.dir&&"future"==e.dir?r:e.dir&&"past"==e.dir?a:Math.abs(s-a)<Math.abs(r-s)?a:r},t.correctTaskWorkTime=function(e){t.config.work_time&&t.config.correct_work_time&&(this.isWorkTime(e.start_date,void 0,e)?this.isWorkTime(new Date(+e.end_date-1),void 0,e)||(e.end_date=this.calculateEndDate(e)):(e.start_date=this.getClosestWorkTime({date:e.start_date,dir:"future",task:e}),e.end_date=this.calculateEndDate(e)))},t.attachEvent("onBeforeTaskUpdate",function(e,n){return t._init_task_timing(n),!0}),t.attachEvent("onBeforeTaskAdd",function(e,n){return t._init_task_timing(n),!0}),t.attachEvent("onAfterTaskMove",function(e,n,i){return t._init_task_timing(t.getTask(e)),!0})}},function(t,e,n){var i=n(0);t.exports={create:function(t,e){return{getWorkHours:function(t){return e.getWorkHours(t)},setWorkTime:function(t){return e.setWorkTime(t)},unsetWorkTime:function(t){e.unsetWorkTime(t)},isWorkTime:function(t,n,i){return e.isWorkTime(t,n,i)},getClosestWorkTime:function(t){return e.getClosestWorkTime(t)},calculateDuration:function(t,n,i){return e.calculateDuration(t,n,i)},_hasDuration:function(t,n,i){return e.hasDuration(t,n,i)},calculateEndDate:function(t,n,i,r){return e.calculateEndDate(t,n,i,r)},mergeCalendars:i.bind(t.mergeCalendars,t),createCalendar:i.bind(t.createCalendar,t),addCalendar:i.bind(t.addCalendar,t),getCalendar:i.bind(t.getCalendar,t),getCalendars:i.bind(t.getCalendars,t),getResourceCalendar:i.bind(t.getResourceCalendar,t),getTaskCalendar:i.bind(t.getTaskCalendar,t),deleteCalendar:i.bind(t.deleteCalendar,t)}}}},function(t,e){function n(t,e){this.argumentsHelper=e,this.$gantt=t}n.prototype={getWorkHours:function(){return[0,24]},setWorkTime:function(){return!0},unsetWorkTime:function(){return!0},isWorkTime:function(){return!0},getClosestWorkTime:function(t){return this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments).date},calculateDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.end_date,i=t.unit,r=t.step;return this._calculateDuration(e,n,i,r)},_calculateDuration:function(t,e,n,i){var r=this.$gantt.date,a={week:6048e5,day:864e5,hour:36e5,minute:6e4},o=0;if(a[n])o=Math.round((e-t)/(i*a[n]));else{for(var s=new Date(t),l=new Date(e);s.valueOf()<l.valueOf();)o+=1,s=r.add(s,i,n);s.valueOf()!=e.valueOf()&&(o+=(l-s)/(r.add(s,i,n)-s))}return Math.round(o)},hasDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.end_date;return!!t.unit&&(e=new Date(e),n=new Date(n),e.valueOf()<n.valueOf())},hasWorkTime:function(){return!0},equals:function(t){return t instanceof n},calculateEndDate:function(){var t=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.duration,i=t.unit,r=t.step;return this.$gantt.date.add(e,r*n,i)}},t.exports=n},function(t,e,n){var i=n(42),r=n(189);function a(t){this.$gantt=t.$gantt,this.argumentsHelper=i(this.$gantt),this.calendarManager=t,this.$disabledCalendar=new r(this.$gantt,this.argumentsHelper)}a.prototype={_getCalendar:function(t){var e;if(this.$gantt.config.work_time){var n=this.calendarManager;t.task?e=n.getTaskCalendar(t.task):t.id?e=n.getTaskCalendar(t):t.calendar&&(e=t.calendar),e||(e=n.getTaskCalendar())}else e=this.$disabledCalendar;return e},getWorkHours:function(t){return t=this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper,arguments),this._getCalendar(t).getWorkHours(t.date)},setWorkTime:function(t,e){return t=this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper,arguments),e||(e=this.calendarManager.getCalendar()),e.setWorkTime(t)},unsetWorkTime:function(t,e){return t=this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper,arguments),e||(e=this.calendarManager.getCalendar()),e.unsetWorkTime(t)},isWorkTime:function(t,e,n,i){var r=this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(r).isWorkTime(r)},getClosestWorkTime:function(t){return t=this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments),this._getCalendar(t).getClosestWorkTime(t)},calculateDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(t).calculateDuration(t)},hasDuration:function(){var t=this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(t).hasDuration(t)},calculateEndDate:function(t){t=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments);return this._getCalendar(t).calculateEndDate(t)}},t.exports=a},function(t,e){t.exports=function(){var t={};return{getCalendarIdFromMultipleResources:function(e,n){var i=function(t){return t.map(function(t){return t&&t.resource_id?t.resource_id:t}).sort().join("-")}(e);if(e.length){if(1===e.length)return n.getResourceCalendar(i).id;if(t[i])return t[i].id;var r=function(t,e){return e.mergeCalendars(t.map(function(t){var n=t&&t.resource_id?t.resource_id:t;return e.getResourceCalendar(n)}))}(e,n);return t[i]=r,n.addCalendar(r)}return null}}}},function(t,e){function n(t){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports={isLegacyResourceCalendarFormat:function(t){if(!t)return!1;for(var e in t)if(t[e]&&"object"===n(t[e]))return!0;return!1},getResourceProperty:function(t){var e=t.resource_calendars,n=t.resource_property;if(this.isLegacyResourceCalendarFormat(e))for(var i in t){n=i;break}return n},getCalendarIdFromLegacyConfig:function(t,e){if(e)for(var n in e){var i=e[n];if(t[n]){var r=i[t[n]];if(r)return r}}return null}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.clear()}return t.prototype._getCacheObject=function(t,e,n){var i=this._cache;i[e]||(i[e]=[]);var r=i[e];r||(r=i[e]={});var a=r[n];a||(a=r[n]={});var o=t.getFullYear(),s=a[o];return s||(s=a[o]={durations:{},endDates:{}}),s},t.prototype._endDateCacheKey=function(t,e){return String(t)+"-"+String(e)},t.prototype._durationCacheKey=function(t,e){return String(t)+"-"+String(e)},t.prototype.getEndDate=function(t,e,n,i,r){var a,o=this._getCacheObject(t,n,i),s=t.valueOf(),l=this._endDateCacheKey(s,e);if(void 0===o.endDates[l]){var c=r(),u=c.valueOf();o.endDates[l]=u,o.durations[this._durationCacheKey(s,u)]=e,a=c}else a=new Date(o.endDates[l]);return a},t.prototype.getDuration=function(t,e,n,i,r){var a,o=this._getCacheObject(t,n,i),s=t.valueOf(),l=e.valueOf(),c=this._durationCacheKey(s,l);if(void 0===o.durations[c]){var u=r();o.durations[c]=u.valueOf(),a=u}else a=o.durations[c];return a},t.prototype.clear=function(){this._cache={}},t}();e.DateDurationCache=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t){var e=this;this.getMinutesPerWeek=function(t){var n=t.valueOf();if(e._weekCache.has(n))return e._weekCache.get(n);for(var i=e._calendar,r=e._calendar.$gantt,a=0,o=r.date.week_start(new Date(t)),s=0;s<7;s++)a+=60*i.getHoursPerDay(o),o=r.date.add(o,1,"day");return e._weekCache.set(n,a),a},this.getMinutesPerMonth=function(t){var n=t.valueOf();if(e._monthCache.has(n))return e._monthCache.get(n);for(var i=e._calendar,r=e._calendar.$gantt,a=0,o=r.date.week_start(new Date(t)),s=r.date.add(o,1,"month").valueOf();o.valueOf()<s;)a+=60*i.getHoursPerDay(o),o=r.date.add(o,1,"day");return e._monthCache.set(n,a),a},this.clear=function(){e._weekCache=new Map,e._monthCache=new Map},this.clear(),this._calendar=t}}();e.LargerUnitsCache=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.clear()}return t.prototype.getItem=function(t,e,n){var i=this._cache;if(i&&i[t]){var r=i[t];if(void 0===r)return-1;var a=r[n.getFullYear()];if(a&&void 0!==a[e])return a[e]}return-1},t.prototype.setItem=function(t,e,n,i){if(t&&e){var r=this._cache;if(r){r[t]||(r[t]=[]);var a=r[t],o=i.getFullYear(),s=a[o];s||(s=a[o]={}),s[e]=n}}},t.prototype.clear=function(){this._cache={}},t}();e.WorkUnitsObjectCache=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.clear()}return t.prototype.getItem=function(t,e,n){if(this._cache.has(t)){var i=this._cache.get(t)[n.getFullYear()];if(i&&i.has(e))return i.get(e)}return-1},t.prototype.setItem=function(t,e,n,i){if(t&&e){var r,a=this._cache,o=i.getFullYear();a.has(t)?r=a.get(t):(r=[],a.set(t,r));var s=r[o];s||(s=r[o]=new Map),s.set(e,n)}},t.prototype.clear=function(){this._cache=new Map},t}();e.WorkUnitsMapCache=i},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(41).createCacheObject,a=n(41).LargerUnitsCache,o=n(0),s=n(193).DateDurationCache;function l(t,e){this.argumentsHelper=e,this.$gantt=t,this._workingUnitsCache=r(),this._largeUnitsCache=new a(this),this._dateDurationCache=new s,this._worktime=null,this._cached_timestamps={},this._cached_timestamps_count=0}l.prototype={units:["year","month","week","day","hour","minute"],_clearCaches:function(){this._workingUnitsCache.clear(),this._largeUnitsCache.clear(),this._dateDurationCache.clear()},_getUnitOrder:function(t){for(var e=0,n=this.units.length;e<n;e++)if(this.units[e]==t)return e},_resetTimestampCache:function(){this._cached_timestamps={},this._cached_timestamps_count=0},_timestamp:function(t){this._cached_timestamps_count>1e6&&this._resetTimestampCache();var e=null;if(t.day||0===t.day)e=t.day;else if(t.date){var n=String(t.date.valueOf());this._cached_timestamps[n]?e=this._cached_timestamps[n]:(e=Date.UTC(t.date.getFullYear(),t.date.getMonth(),t.date.getDate()),this._cached_timestamps[n]=e,this._cached_timestamps_count++)}return e},_checkIfWorkingUnit:function(t,e){if(!this["_is_work_"+e]){var n=this.$gantt.date["".concat(e,"_start")](new Date(t)),i=this.$gantt.date.add(n,1,e);return this.hasDuration(n,i)}return this["_is_work_"+e](t)},_is_work_day:function(t){var e=this._getWorkHours(t);return!!Array.isArray(e)&&e.length>0},_is_work_hour:function(t){for(var e=this._getWorkHours(t),n=t.getHours(),i=0;i<e.length;i++)if(n>=e[i].startHour&&n<e[i].endHour)return!0;return!1},_getTimeOfDayStamp:function(t,e){var n=t.getHours();return t.getHours()||t.getMinutes()||!e||(n=24),60*n*60+60*t.getMinutes()},_is_work_minute:function(t){for(var e=this._getWorkHours(t),n=this._getTimeOfDayStamp(t),i=0;i<e.length;i++)if(n>=e[i].start&&n<e[i].end)return!0;return!1},_nextDate:function(t,e,n){return this.$gantt.date.add(t,n,e)},_getWorkUnitsBetweenGeneric:function(t,e,n,i){var r=this.$gantt.date,a=new Date(t),o=new Date(e);i=i||1;var s,l,c=0,u=null,d=!1;(s=r[n+"_start"](new Date(a))).valueOf()!=a.valueOf()&&(d=!0);var h=!1;(l=r[n+"_start"](new Date(e))).valueOf()!=e.valueOf()&&(h=!0);for(var f=!1;a.valueOf()<o.valueOf();){if(f=(u=this._nextDate(a,n,i)).valueOf()>o.valueOf(),this._isWorkTime(a,n))(d||h&&f)&&(s=r[n+"_start"](new Date(a)),l=r.add(s,i,n)),d?(d=!1,u=this._nextDate(s,n,i),c+=(l.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):h&&f?(h=!1,c+=(o.valueOf()-a.valueOf())/(l.valueOf()-s.valueOf())):c++;else{var _=this._getUnitOrder(n),g=this.units[_-1];g&&!this._isWorkTime(a,g)&&(u=this._getClosestWorkTimeFuture(a,g))}a=u}return c},_getMinutesPerHour:function(t){var e=this._getTimeOfDayStamp(t),n=this._getTimeOfDayStamp(this._nextDate(t,"hour",1));0===n&&(n=86400);for(var i=this._getWorkHours(t),r=0;r<i.length;r++){var a=i[r];if(e>=a.start&&n<=a.end)return 60;if(e<a.end&&n>a.start)return(Math.min(n,a.end)-Math.max(e,a.start))/60}return 0},_getMinutesPerDay:function(t){var e=0;return this._getWorkHours(t).forEach(function(t){e+=t.durationMinutes}),e},getHoursPerDay:function(t){var e=0;return this._getWorkHours(t).forEach(function(t){e+=t.durationHours}),e},_getWorkUnitsForRange:function(t,e,n,i){var r,a=0,s=new Date(t),l=new Date(e);for(r="minute"==n?o.bind(this._getMinutesPerDay,this):o.bind(this.getHoursPerDay,this);s.valueOf()<l.valueOf();)if(l-s>27648e5&&0===s.getDate()){var c=this._largeUnitsCache.getMinutesPerMonth(s);"hour"==n&&(c/=60),a+=c,s=this.$gantt.date.add(s,1,"month")}else{if(l-s>13824e5){var u=this.$gantt.date.week_start(new Date(s));if(s.valueOf()===u.valueOf()){c=this._largeUnitsCache.getMinutesPerWeek(s);"hour"==n&&(c/=60),a+=c,s=this.$gantt.date.add(s,7,"day");continue}}a+=r(s),s=this._nextDate(s,"day",1)}return a/i},_getMinutesBetweenSingleDay:function(t,e){for(var n=this._getIntervalTimestamp(t,e),i=this._getWorkHours(t),r=0,a=0;a<i.length;a++){var o=i[a];if(n.end>=o.start&&n.start<=o.end){var s=Math.max(o.start,n.start),l=Math.min(o.end,n.end);r+=(l-s)/60,n.start=l}}return Math.floor(r)},_getMinutesBetween:function(t,e,n,i){var r=new Date(t),a=new Date(e);i=i||1;var o=new Date(r),s=this.$gantt.date.add(this.$gantt.date.day_start(new Date(r)),1,"day");if(a.valueOf()<=s.valueOf())return this._getMinutesBetweenSingleDay(t,e);var l=this.$gantt.date.day_start(new Date(a)),c=a,u=this._getMinutesBetweenSingleDay(o,s),d=this._getMinutesBetweenSingleDay(l,c);return u+this._getWorkUnitsForRange(s,l,n,i)+d},_getHoursBetween:function(t,e,n,i){var r=new Date(t),a=new Date(e);i=i||1;var o=new Date(r),s=this.$gantt.date.add(this.$gantt.date.day_start(new Date(r)),1,"day");if(a.valueOf()<=s.valueOf())return Math.round(this._getMinutesBetweenSingleDay(t,e)/60);var l=this.$gantt.date.day_start(new Date(a)),c=a,u=this._getMinutesBetweenSingleDay(o,s,n,i)/60,d=this._getMinutesBetweenSingleDay(l,c,n,i)/60,h=u+this._getWorkUnitsForRange(s,l,n,i)+d;return Math.round(h)},getConfig:function(){return this._worktime},_setConfig:function(t){this._worktime=t,this._parseSettings(),this._clearCaches()},_parseSettings:function(){var t=this.getConfig();for(var e in t.parsed={dates:{},hours:null,haveCustomWeeks:!1,customWeeks:{},customWeeksRangeStart:null,customWeeksRangeEnd:null,customWeeksBoundaries:[]},t.parsed.hours=this._parseHours(t.hours),t.dates)t.parsed.dates[e]=this._parseHours(t.dates[e]);if(t.customWeeks){var n=null,i=null;for(var e in t.customWeeks){var r=t.customWeeks[e];if(r.from&&r.to){var a=r.from,o=r.to;(!n||n>a.valueOf())&&(n=a.valueOf()),(!i||i<o.valueOf())&&(i=o.valueOf()),t.parsed.customWeeksBoundaries.push({from:a.valueOf(),fromReadable:new Date(a),to:o.valueOf(),toReadable:new Date(o),name:e}),t.parsed.haveCustomWeeks=!0;var s=t.parsed.customWeeks[e]={from:r.from,to:r.to,hours:this._parseHours(r.hours),dates:{}};for(var l in r.dates)s.dates[l]=this._parseHours(r.dates[l])}}t.parsed.customWeeksRangeStart=n,t.parsed.customWeeksRangeEnd=i}},_tryChangeCalendarSettings:function(t){var e=JSON.stringify(this.getConfig());return t(),!!this.hasWorkTime()||(this._setConfig(JSON.parse(e)),this._clearCaches(),!1)},_arraysEqual:function(t,e){if(t===e)return!0;if(!t||!e)return!1;if(t.length!=e.length)return!1;for(var n=0;n<t.length;++n)if(t[n]!==e[n])return!1;return!0},_compareSettings:function(t,e){if(!this._arraysEqual(t.hours,e.hours))return!1;var n=Object.keys(t.dates),i=Object.keys(e.dates);if(n.sort(),i.sort(),!this._arraysEqual(n,i))return!1;for(var r=0;r<n.length;r++){var a=n[r],o=t.dates[a],s=t.dates[a];if(o!==s&&!(Array.isArray(o)&&Array.isArray(s)&&this._arraysEqual(o,s)))return!1}return!0},equals:function(t){if(!(t instanceof l))return!1;var e=this.getConfig(),n=t.getConfig();if(!this._compareSettings(e,n))return!1;if(e.parsed.haveCustomWeeks&&n.parsed.haveCustomWeeks){if(e.parsed.customWeeksBoundaries.length!=n.parsed.customWeeksBoundaries.length)return!1;for(var i in e.parsed.customWeeks){var r=e.parsed.customWeeks[i],a=n.parsed.customWeeks[i];if(!a)return!1;if(!this._compareSettings(r,a))return!1}}else if(e.parse.haveCustomWeeks!==n.parsed.haveCustomWeeks)return!1;return!0},getWorkHours:function(){var t=this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper,arguments);return this._getWorkHours(t.date,!1)},_getWorkHours:function(t,e){var n=this.getConfig();if(!1!==e&&(n=n.parsed),!t)return n.hours;var i=this._timestamp({date:t});if(n.haveCustomWeeks&&n.customWeeksRangeStart<=i&&n.customWeeksRangeEnd>i)for(var r=0;r<n.customWeeksBoundaries.length;r++)if(n.customWeeksBoundaries[r].from<=i&&n.customWeeksBoundaries[r].to>i){n=n.customWeeks[n.customWeeksBoundaries[r].name];break}var a=!0;return void 0!==n.dates[i]?a=n.dates[i]:void 0!==n.dates[t.getDay()]&&(a=n.dates[t.getDay()]),!0===a?n.hours:a||[]},_getIntervalTimestamp:function(t,e){var n={start:0,end:0};n.start=60*t.getHours()*60+60*t.getMinutes()+t.getSeconds();var i=e.getHours();return!i&&!e.getMinutes()&&!e.getSeconds()&&t.valueOf()<e.valueOf()&&(i=24),n.end=60*i*60+60*e.getMinutes()+e.getSeconds(),n},_parseHours:function(t){if(Array.isArray(t)){var e=[];t.forEach(function(t){"number"==typeof t?e.push(60*t*60):"string"==typeof t&&t.split("-").map(function(t){return t.trim()}).forEach(function(t){var n=t.split(":").map(function(t){return t.trim()}),i=parseInt(60*n[0]*60);n[1]&&(i+=parseInt(60*n[1])),n[2]&&(i+=parseInt(n[2])),e.push(i)})});for(var n=[],i=0;i<e.length;i+=2){var r=e[i],a=e[i+1],o=a-r;n.push({start:r,end:a,startHour:Math.floor(r/3600),startMinute:Math.floor(r/60),endHour:Math.ceil(a/3600),endMinute:Math.ceil(a/60),durationSeconds:o,durationMinutes:o/60,durationHours:o/3600})}return n}return t},setWorkTime:function(t){return this._tryChangeCalendarSettings(o.bind(function(){var e=void 0===t.hours||t.hours,n=this._timestamp(t),r=this.getConfig();if(null!==n?r.dates[n]=e:t.customWeeks||(r.hours=e),t.customWeeks)if(r.customWeeks||(r.customWeeks={}),"string"==typeof t.customWeeks)null!==n?r.customWeeks[t.customWeeks].dates[n]=e:t.customWeeks||(r.customWeeks[t.customWeeks].hours=e);else if("object"===i(t.customWeeks)&&"function Object() { [native code] }"===Function.prototype.toString.call(t.customWeeks.constructor))for(var a in t.customWeeks)r.customWeeks[a]=t.customWeeks[a];this._parseSettings(),this._clearCaches()},this))},unsetWorkTime:function(t){return this._tryChangeCalendarSettings(o.bind(function(){if(t){var e=this._timestamp(t);null!==e&&delete this.getConfig().dates[e]}else this.reset_calendar();this._parseSettings(),this._clearCaches()},this))},_isWorkTime:function(t,e){var n=-1,i=null;return i=String(t.valueOf()),-1==(n=this._workingUnitsCache.getItem(e,i,t))&&(n=this._checkIfWorkingUnit(t,e),this._workingUnitsCache.setItem(e,i,n,t)),n},isWorkTime:function(){var t=this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper,arguments);return this._isWorkTime(t.date,t.unit)},calculateDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments);if(!t.unit)return!1;var e=this;return this._dateDurationCache.getDuration(t.start_date,t.end_date,t.unit,t.step,function(){return e._calculateDuration(t.start_date,t.end_date,t.unit,t.step)})},_calculateDuration:function(t,e,n,i){var r=0,a=1;if(t.valueOf()>e.valueOf()){var o=e;e=t,t=o,a=-1}return r="hour"==n&&1==i?this._getHoursBetween(t,e,n,i):"minute"==n&&1==i?this._getMinutesBetween(t,e,n,i):this._getWorkUnitsBetweenGeneric(t,e,n,i),a*Math.round(r)},hasDuration:function(){var t=this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.end_date,i=t.unit,r=t.step;if(!i)return!1;var a=new Date(e),o=new Date(n);for(r=r||1;a.valueOf()<o.valueOf();){if(this._isWorkTime(a,i))return!0;a=this._nextDate(a,i,r)}return!1},calculateEndDate:function(){var t=this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper,arguments),e=t.start_date,n=t.duration,i=t.unit,r=t.step;if(!i)return!1;var a=t.duration>=0?1:-1;n=Math.abs(1*n);var o=this;return this._dateDurationCache.getEndDate(e,n,i,r*a,function(){return o._calculateEndDate(e,n,i,r*a)})},_calculateEndDate:function(t,e,n,i){return!!n&&(1==i&&"minute"==n?this._calculateMinuteEndDate(t,e,i):-1==i&&"minute"==n?this._subtractMinuteDate(t,e,i):1==i&&"hour"==n?this._calculateHourEndDate(t,e,i):this._addInterval(t,e,n,i,null).end)},_addInterval:function(t,e,n,i,r){for(var a=0,o=t,s=!1;a<e&&(!r||!r(o));){var l=this._nextDate(o,n,i);"day"==n&&(s=s||!o.getHours()&&l.getHours())&&(l.setHours(0),l.getHours()||(s=!1));var c=new Date(l.valueOf()+1);i>0&&(c=new Date(l.valueOf()-1)),this._isWorkTime(c,n)&&!s&&a++,o=l}return{end:o,start:t,added:a}},_addHoursUntilDayEnd:function(t,e){for(var n=this.$gantt.date.add(this.$gantt.date.day_start(new Date(t)),1,"day"),i=0,r=e,a=this._getIntervalTimestamp(t,n),o=this._getWorkHours(t),s=0;s<o.length&&i<e;s++){var l=o[s];if(a.end>=l.start&&a.start<=l.end){var c=Math.max(l.start,a.start),u=Math.min(l.end,a.end),d=(u-c)/3600;d>r&&(d=r,u=c+60*r*60);var h=Math.round((u-c)/3600);i+=h,r-=h,a.start=u}}var f=n;return i===e&&(f=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,a.start)),{added:i,end:f}},_calculateHourEndDate:function(t,e,n){var i=new Date(t),r=0;n=n||1,e=Math.abs(1*e);var a=this._addHoursUntilDayEnd(i,e);if(r=a.added,i=a.end,c=e-r){for(var o=i;r<e;){var s=this._nextDate(o,"day",n);s.setHours(0),s.setMinutes(0),s.setSeconds(0);var l=0;if(r+(l=n>0?this.getHoursPerDay(new Date(s.valueOf()-1)):this.getHoursPerDay(new Date(s.valueOf()+1)))>=e)break;r+=l,o=s}i=o}if(r<e){var c=e-r;i=(a=this._addHoursUntilDayEnd(i,c)).end}return i},_addMinutesUntilHourEnd:function(t,e){if(0===t.getMinutes())return{added:0,end:new Date(t)};for(var n=this.$gantt.date.add(this.$gantt.date.hour_start(new Date(t)),1,"hour"),i=0,r=e,a=this._getIntervalTimestamp(t,n),o=this._getWorkHours(t),s=0;s<o.length&&i<e;s++){var l=o[s];if(a.end>=l.start&&a.start<=l.end){var c=Math.max(l.start,a.start),u=Math.min(l.end,a.end),d=(u-c)/60;d>r&&(d=r,u=c+60*r);var h=Math.round((u-c)/60);r-=h,i+=h,a.start=u}}var f=n;return i===e&&(f=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,a.start)),{added:i,end:f}},_subtractMinutesUntilHourStart:function(t,e){for(var n=this.$gantt.date.hour_start(new Date(t)),i=0,r=e,a=60*n.getHours()*60+60*n.getMinutes()+n.getSeconds(),o=60*t.getHours()*60+60*t.getMinutes()+t.getSeconds(),s=this._getWorkHours(t),l=s.length-1;l>=0&&i<e;l--){var c=s[l];if(o>c.start&&a<=c.end){var u=Math.min(o,c.end),d=Math.max(a,c.start),h=(u-d)/60;h>r&&(h=r,d=u-60*r);var f=Math.abs(Math.round((u-d)/60));r-=f,i+=f,o=d}}var _=n;return i===e&&(_=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,o)),{added:i,end:_}},_subtractMinuteDate:function(t,e,n){var i=new Date(t),r=0;n=n||-1,e=Math.abs(1*e),e=Math.round(e);var a=this._isMinutePrecision(i),o=this._subtractMinutesUntilHourStart(i,e);r+=o.added,i=o.end;for(var s=0,l=[],c=0;r<e;){var u=this.$gantt.date.day_start(new Date(i)),d=!1;i.valueOf()===u.valueOf()&&(u=this.$gantt.date.add(u,-1,"day"),d=!0);var h=new Date(u.getFullYear(),u.getMonth(),u.getDate(),23,59,59,999).valueOf();h!==s&&(l=this._getWorkHours(u),c=this._getMinutesPerDay(u),s=h);var f=e-r,_=this._getTimeOfDayStamp(i,d);if(l.length&&c)if(l[l.length-1].end<=_&&f>c)r+=c,i=this.$gantt.date.add(i,-1,"day");else{for(var g=!1,p=null,v=null,m=l.length-1;m>=0;m--)if(l[m].start<_-1&&l[m].end>=_-1){g=!0,p=l[m],v=l[m-1];break}if(g)if(_===p.end&&f>=p.durationMinutes)r+=p.durationMinutes,i=this.$gantt.date.add(i,-p.durationMinutes,"minute");else if(!a&&f<=_/60-p.startMinute)r+=f,i=this.$gantt.date.add(i,-f,"minute");else if(a)f<=_/60-p.startMinute?(r+=f,i=this.$gantt.date.add(i,-f,"minute")):(r+=_/60-p.startMinute,i=v?new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,v.end):this.$gantt.date.day_start(i));else{var y=this._getMinutesPerHour(i);y<=f?(r+=y,i=this._nextDate(i,"hour",n)):(r+=(o=this._subtractMinutesUntilHourStart(i,f)).added,i=o.end)}else if(0===i.getHours()&&0===i.getMinutes()&&0===i.getSeconds()){if((k=this._getClosestWorkTimePast(i,"hour")).valueOf()===i.valueOf()){var k=this.$gantt.date.add(i,-1,"day"),b=this._getWorkHours(k);if(b.length){var x=b[b.length-1];k.setSeconds(x.durationSeconds)}}i=k}else i=this._getClosestWorkTimePast(new Date(i-1),"hour")}else i=this.$gantt.date.add(i,-1,"day")}if(r<e){var w=e-r;r+=(o=this._subtractMinutesUntilHourStart(i,w)).added,i=o.end}return i},_calculateMinuteEndDate:function(t,e,n){var i=new Date(t),r=0;n=n||1,e=Math.abs(1*e),e=Math.round(e);var a=this._addMinutesUntilHourEnd(i,e);r+=a.added,i=a.end;for(var o=0,s=[],l=0,c=this._isMinutePrecision(i);r<e;){var u=this.$gantt.date.day_start(new Date(i)).valueOf();u!==o&&(s=this._getWorkHours(i),l=this._getMinutesPerDay(i),o=u);var d=e-r,h=this._getTimeOfDayStamp(i);if(s.length&&l)if(s[0].start>=h&&d>=l){if(r+=l,d==l){i=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,s[s.length-1].end);break}i=this.$gantt.date.add(i,1,"day"),i=this.$gantt.date.day_start(i)}else{for(var f=!1,_=null,g=0;g<s.length;g++)if(s[g].start<=h&&s[g].end>h){f=!0,_=s[g];break}if(f)if(h===_.start&&d>=_.durationMinutes)r+=_.durationMinutes,i=this.$gantt.date.add(i,_.durationMinutes,"minute");else if(d<=_.endMinute-h/60)r+=d,i=this.$gantt.date.add(i,d,"minute");else{var p=this._getMinutesPerHour(i);p<=d?(r+=p,i=c?this.$gantt.date.add(i,p,"minute"):this._nextDate(i,"hour",n)):(r+=(a=this._addMinutesUntilHourEnd(i,d)).added,i=a.end)}else i=this._getClosestWorkTimeFuture(i,"hour")}else i=this.$gantt.date.add(this.$gantt.date.day_start(i),1,"day")}if(r<e){var v=e-r;r+=(a=this._addMinutesUntilHourEnd(i,v)).added,i=a.end}return i},getClosestWorkTime:function(){var t=this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper,arguments);return this._getClosestWorkTime(t.date,t.unit,t.dir)},_getClosestWorkTime:function(t,e,n){var i=new Date(t);if(this._isWorkTime(i,e))return i;if(i=this.$gantt.date[e+"_start"](i),"any"!=n&&n)i="past"==n?this._getClosestWorkTimePast(i,e):this._getClosestWorkTimeFuture(i,e);else{var r=this._getClosestWorkTimeFuture(i,e),a=this._getClosestWorkTimePast(i,e);i=Math.abs(r-t)<=Math.abs(t-a)?r:a}return i},_getClosestWorkTimeFuture:function(t,e){return this._getClosestWorkTimeGeneric(t,e,1)},_getClosestWorkTimePast:function(t,e){var n=this._getClosestWorkTimeGeneric(t,e,-1);return this.$gantt.date.add(n,1,e)},_findClosestTimeInDay:function(t,e,n){var i=new Date(t),r=null,a=!1;this._getWorkHours(i).length||(i=this._getClosestWorkTime(i,"day",e<0?"past":"future"),e<0&&(i=new Date(i.valueOf()-1),a=!0),n=this._getWorkHours(i));var o=this._getTimeOfDayStamp(i);if(a&&(o=this._getTimeOfDayStamp(new Date(i.valueOf()+1),a)),e>0){for(var s=0;s<n.length;s++)if(n[s].start>=o){r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,n[s].start);break}}else for(s=n.length-1;s>=0;s--){if(n[s].end<=o){r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,n[s].end);break}if(n[s].end>o&&n[s].start<=o){r=new Date(i.getFullYear(),i.getMonth(),i.getDate(),0,0,o);break}}return r},_getClosestWorkMinute:function(t,e,n){var i=new Date(t),r=this._getWorkHours(i),a=this._findClosestTimeInDay(i,n,r);return a||(i=this.calculateEndDate(i,n,"day"),n>0?i=this.$gantt.date.day_start(i):(i=this.$gantt.date.day_start(i),i=this.$gantt.date.add(i,1,"day"),i=new Date(i.valueOf()-1)),r=this._getWorkHours(i),a=this._findClosestTimeInDay(i,n,r)),n<0&&(a=this.$gantt.date.add(a,-1,e)),a},_getClosestWorkTimeGeneric:function(t,e,n){if("hour"===e||"minute"===e)return this._getClosestWorkMinute(t,e,n);for(var i=this._getUnitOrder(e),r=this.units[i-1],a=t,o=0;!this._isWorkTime(a,e)&&(!r||this._isWorkTime(a,r)||(a=n>0?this._getClosestWorkTimeFuture(a,r):this._getClosestWorkTimePast(a,r),!this._isWorkTime(a,e)));){if(++o>3e3)return this.$gantt.assert(!1,"Invalid working time check"),!1;var s=a.getTimezoneOffset();a=this.$gantt.date.add(a,n,e),a=this.$gantt._correct_dst_change(a,s,n,e),this.$gantt.date[e+"_start"]&&(a=this.$gantt.date[e+"_start"](a))}return a},hasWorkTime:function(){var t=this.getConfig(),e=t.dates,n=[];for(var i in t.dates)Number(i)>6&&n.push(Number(i));var r=this._checkWorkHours(t.hours),a=!1;return[0,1,2,3,4,5,6].forEach(function(t){if(!a){var n=e[t];!0===n?a=r:Array.isArray(n)&&(a=this._checkWorkHours(n))}}.bind(this)),a},_checkWorkHours:function(t){if(0===t.length)return!1;for(var e=!1,n=0;n<t.length;n+=2)t[n]!==t[n+1]&&(e=!0);return e},_isMinutePrecision:function(t){var e=!1;return this._getWorkHours(t).forEach(function(t){(t.startMinute%60||t.endMinute%60)&&(e=!0)}),e}},t.exports=l},function(t,e,n){var i=n(0);function r(){}r.prototype={_getIntervals:function(t){for(var e=[],n=0;n<t.length;n+=2)e.push({start:t[n],end:t[n+1]});return e},_toHoursArray:function(t){var e=[];function n(t){var e=Math.floor(t/3600),n=t-60*e*60;return e+":"+function(t){var e=String(t);return e.length<2&&(e="0"+e),e}(Math.floor(n/60))}for(var i=0;i<t.length;i++)e.push(n(t[i].start)+"-"+n(t[i].end));return e},_intersectHourRanges:function(t,e){var n=[],i=t.length>e.length?t:e,r=t===i?e:t;i=i.slice(),r=r.slice();n=[];for(var a=0;a<i.length;a++)for(var o=i[a],s=0;s<r.length;s++){var l=r[s];l.start<o.end&&l.end>o.start&&(n.push({start:Math.max(o.start,l.start),end:Math.min(o.end,l.end)}),o.end>l.end&&(r.splice(s,1),s--,a--))}return n},_mergeAdjacentIntervals:function(t){var e=t.slice();e.sort(function(t,e){return t.start-e.start});for(var n=e[0],i=1;i<e.length;i++){var r=e[i];r.start<=n.end?(r.end>n.end&&(n.end=r.end),e.splice(i,1),i--):n=r}return e},_mergeHoursConfig:function(t,e){return this._mergeAdjacentIntervals(this._intersectHourRanges(t,e))},merge:function(t,e){var n=i.copy(t.getConfig().parsed),r=i.copy(e.getConfig().parsed),a={hours:this._toHoursArray(this._mergeHoursConfig(n.hours,r.hours)),dates:{},customWeeks:{}};for(var o in n.dates){var s=n.dates[o],l=r.dates[o];if(s&&l)if(Array.isArray(s)||Array.isArray(l)){var c=Array.isArray(s)?s:n.hours,u=Array.isArray(l)?l:r.hours;a.dates[o]=this._toHoursArray(this._mergeHoursConfig(c,u))}else a.dates[o]=!0;else a.dates[o]=!1}if(n.customWeeks)for(var o in n.customWeeks)a.customWeeks[o]=n.customWeeks[o];if(r.customWeeks)for(var o in r.customWeeks)a.customWeeks[o]=r.customWeeks[o];return a}},t.exports=r},function(t,e,n){var i=n(0),r=n(42),a=n(198),o=n(197),s=n(192),l=n(191)();function c(t){this.$gantt=t,this._calendars={},this._legacyConfig=void 0,this.$gantt.attachEvent("onGanttReady",function(){this.$gantt.config.resource_calendars&&(this._isLegacyConfig=s.isLegacyResourceCalendarFormat(this.$gantt.config.resource_calendars))}.bind(this)),this.$gantt.attachEvent("onBeforeGanttReady",function(){this.createDefaultCalendars()}.bind(this)),this.$gantt.attachEvent("onBeforeGanttRender",function(){this.createDefaultCalendars()}.bind(this))}c.prototype={_calendars:{},_convertWorkTimeSettings:function(t){var e=t.days;if(e&&!t.dates){t.dates=t.dates||{};for(var n=0;n<e.length;n++)t.dates[n]=e[n],e[n]instanceof Array||(t.dates[n]=!!e[n])}return delete t.days,t},mergeCalendars:function(){var t=[],e=arguments;if(Array.isArray(e[0]))t=e[0].slice();else for(var n=0;n<arguments.length;n++)t.push(arguments[n]);var i,r=new a;return t.forEach(function(t){i=i?this._createCalendarFromConfig(r.merge(i,t)):t}.bind(this)),this.createCalendar(i)},_createCalendarFromConfig:function(t){var e=new o(this.$gantt,r(this.$gantt));e.id=String(i.uid());var n=this._convertWorkTimeSettings(t);if(n.customWeeks)for(var a in n.customWeeks)n.customWeeks[a]=this._convertWorkTimeSettings(n.customWeeks[a]);return e._setConfig(n),e},createCalendar:function(t){var e;t||(t={}),e=t.getConfig?i.copy(t.getConfig()):t.worktime?i.copy(t.worktime):i.copy(t);var n=i.copy(this.defaults.fulltime.worktime);return i.mixin(e,n),this._createCalendarFromConfig(e)},getCalendar:function(t){t=t||"global";var e=this._calendars[t];return e||(this.createDefaultCalendars(),e=this._calendars[t]),e},getCalendars:function(){var t=[];for(var e in this._calendars)t.push(this.getCalendar(e));return t},_getOwnCalendar:function(t){var e=this.$gantt.config;if(t[e.calendar_property])return this.getCalendar(t[e.calendar_property]);if(e.resource_calendars){var n;if(n=!1===this._legacyConfig?e.resource_property:s.getResourceProperty(e),Array.isArray(t[n]))e.dynamic_resource_calendars&&(i=l.getCalendarIdFromMultipleResources(t[n],this));else if(void 0===this._legacyConfig&&(this._legacyConfig=s.isLegacyResourceCalendarFormat(e.resource_calendars)),this._legacyConfig)var i=s.getCalendarIdFromLegacyConfig(t,e.resource_calendars);else if(n&&t[n]&&e.resource_calendars[t[n]])var r=this.getResourceCalendar(t[n]);if(i&&(r=this.getCalendar(i)),r)return r}return null},getResourceCalendar:function(t){if(null===t||void 0===t)return this.getCalendar();var e=null;e="number"==typeof t||"string"==typeof t?t:t.id||t.key;var n=this.$gantt.config,i=n.resource_calendars,r=null;if(i){if(void 0===this._legacyConfig&&(this._legacyConfig=s.isLegacyResourceCalendarFormat(n.resource_calendars)),this._legacyConfig){for(var a in i)if(i[a][e]){r=i[a][e];break}}else r=i[e];if(r)return this.getCalendar(r)}return this.getCalendar()},getTaskCalendar:function(t){var e,n=this.$gantt;if(null===t||void 0===t)return this.getCalendar();if(!(e="number"!=typeof t&&"string"!=typeof t||!n.isTaskExists(t)?t:n.getTask(t)))return this.getCalendar();var i=this._getOwnCalendar(e),r=!!n.getState().group_mode;if(!i&&n.config.inherit_calendar&&n.isTaskExists(e.parent)){for(var a=e;n.isTaskExists(a.parent)&&(a=n.getTask(a.parent),!n.isSummaryTask(a)||!(i=this._getOwnCalendar(a))););r&&!i&&t.$effective_calendar&&(i=this.getCalendar(t.$effective_calendar))}return i||this.getCalendar()},addCalendar:function(t){if(!this.isCalendar(t)){var e=t.id;(t=this.createCalendar(t)).id=e}if(t._tryChangeCalendarSettings(function(){})){var n=this.$gantt.config;return t.id=t.id||i.uid(),this._calendars[t.id]=t,n.worktimes||(n.worktimes={}),n.worktimes[t.id]=t.getConfig(),t.id}return this.$gantt.callEvent("onCalendarError",[{message:"Invalid calendar settings, no worktime available"},t]),null},deleteCalendar:function(t){var e=this.$gantt.config;return!!t&&(!!this._calendars[t]&&(delete this._calendars[t],e.worktimes&&e.worktimes[t]&&delete e.worktimes[t],!0))},restoreConfigCalendars:function(t){for(var e in t)if(!this._calendars[e]){var n=t[e],i=this.createCalendar(n);i.id=e,this.addCalendar(i)}},defaults:{global:{id:"global",worktime:{hours:[8,12,13,17],days:[0,1,1,1,1,1,0]}},fulltime:{id:"fulltime",worktime:{hours:[0,24],days:[1,1,1,1,1,1,1]}}},createDefaultCalendars:function(){var t=this.$gantt.config;this.restoreConfigCalendars(this.defaults),this.restoreConfigCalendars(t.worktimes)},isCalendar:function(t){return[t.isWorkTime,t.setWorkTime,t.getWorkHours,t.unsetWorkTime,t.getClosestWorkTime,t.calculateDuration,t.hasDuration,t.calculateEndDate].every(function(t){return t instanceof Function})}},t.exports=c},function(t,e,n){var i=n(199),r=n(190),a=n(188),o=n(0);t.exports=function(t){var e=new i(t),n=new r(e),s=a.create(e,n);o.mixin(t,s)}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(2);t.exports=function(t){function e(e){throw t.assert(!1,"Can't parse data: incorrect value of gantt.parse or gantt.load method. Actual argument value: "+JSON.stringify(e)),new Error("Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: "+JSON.stringify(e))}t.load=function(e,n,i){this._load_url=e,this.assert(arguments.length,"Invalid load arguments");var r="json",a=null;return arguments.length>=3?(r=n,a=i):"string"==typeof arguments[1]?r=arguments[1]:"function"==typeof arguments[1]&&(a=arguments[1]),this._load_type=r,this.callEvent("onLoadStart",[e,r]),this.ajax.get(e,t.bind(function(t){this.on_load(t,r),this.callEvent("onLoadEnd",[e,r]),"function"==typeof a&&a.call(this)},this))},t.parse=function(t,e){this.on_load({xmlDoc:{responseText:t}},e)},t.serialize=function(t){return this[t=t||"json"].serialize()},t.on_load=function(e,n){if(e.xmlDoc&&404===e.xmlDoc.status)this.assert(!1,"Failed to load the data from <a href='"+e.xmlDoc.responseURL+"' target='_blank'>"+e.xmlDoc.responseURL+"</a>, server returns 404");else if(!t.$destroyed){this.callEvent("onBeforeParse",[]),n||(n="json"),this.assert(this[n],"Invalid data type:'"+n+"'");var i=e.xmlDoc.responseText,r=this[n].parse(i,e);this._process_loading(r)}},t._process_loading=function(e){e.collections&&this._load_collections(e.collections),e.resources&&this.$data.resourcesStore&&this.$data.resourcesStore.parse(e.resources);var n=e.data||e.tasks;e.assignments&&function(e,n){var i={};n.forEach(function(t){i[t.task_id]||(i[t.task_id]=[]),i[t.task_id].push(t)}),e.forEach(function(e){e[t.config.resource_property]=i[e.id]||[]})}(n,e.assignments),this.$data.tasksStore.parse(n);var i=e.links||(e.collections?e.collections.links:[]);this.$data.linksStore.parse(i),this.callEvent("onParse",[]),this.render()},t._load_collections=function(t){var e=!1;for(var n in t)if(t.hasOwnProperty(n)){e=!0;var i=t[n];this.serverList[n]=this.serverList[n]||[];var r=this.serverList[n];if(!r)continue;r.splice(0,r.length);for(var a=0;a<i.length;a++){var o=i[a],s=this.copy(o);for(var l in s.key=s.value,o)if(o.hasOwnProperty(l)){if("value"==l||"label"==l)continue;s[l]=o[l]}r.push(s)}}e&&this.callEvent("onOptionsLoad",[])},t.attachEvent("onBeforeTaskDisplay",function(t,e){return!e.$ignore}),t.json={parse:function(n){if(n||e(n),"string"==typeof n)if(void 0!=("undefined"==typeof JSON?"undefined":i(JSON)))try{n=JSON.parse(n)}catch(t){e(n)}else t.assert(!1,"JSON is not supported");return n.data||n.tasks||e(n),n.dhx_security&&(t.security_key=n.dhx_security),n},serializeTask:function(t){return this._copyObject(t)},serializeLink:function(t){return this._copyLink(t)},_copyLink:function(t){var e={};for(var n in t)e[n]=t[n];return e},_copyObject:function(e){var n={};for(var i in e)"$"!=i.charAt(0)&&(n[i]=e[i],r.isDate(n[i])&&(n[i]=t.defined(t.templates.xml_format)?t.templates.xml_format(n[i]):t.templates.format_date(n[i])));return n},serialize:function(){var e=[],n=[];t.eachTask(function(n){t.resetProjectDates(n),e.push(this.serializeTask(n))},t.config.root_id,this);for(var i=t.getLinks(),r=0;r<i.length;r++)n.push(this.serializeLink(i[r]));return{data:e,links:n}}},t.xml={_xmlNodeToJSON:function(t,e){for(var n={},i=0;i<t.attributes.length;i++)n[t.attributes[i].name]=t.attributes[i].value;if(!e){for(i=0;i<t.childNodes.length;i++){var r=t.childNodes[i];1==r.nodeType&&(n[r.tagName]=r.firstChild?r.firstChild.nodeValue:"")}n.text||(n.text=t.firstChild?t.firstChild.nodeValue:"")}return n},_getCollections:function(e){for(var n={},i=t.ajax.xpath("//coll_options",e),r=0;r<i.length;r++)for(var a=n[i[r].getAttribute("for")]=[],o=t.ajax.xpath(".//item",i[r]),s=0;s<o.length;s++){for(var l=o[s].attributes,c={key:o[s].getAttribute("value"),label:o[s].getAttribute("label")},u=0;u<l.length;u++){var d=l[u];"value"!=d.nodeName&&"label"!=d.nodeName&&(c[d.nodeName]=d.nodeValue)}a.push(c)}return n},_getXML:function(e,n,i){i=i||"data",n.getXMLTopNode||(n=t.ajax.parse(n));var r=t.ajax.xmltop(i,n.xmlDoc);r&&r.tagName==i||function(e){throw t.assert(!1,"Can't parse data: incorrect value of gantt.parse or gantt.load method. Actual argument value: "+JSON.stringify(e)),new Error("Invalid argument for gantt.parse or gantt.load. An XML of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#xmldhtmlxgantt20 is expected. Actual argument value: "+JSON.stringify(e))}(e);var a=r.getAttribute("dhx_security");return a&&(t.security_key=a),r},parse:function(e,n){n=this._getXML(e,n);for(var i={},r=i.data=[],a=t.ajax.xpath("//task",n),o=0;o<a.length;o++)r[o]=this._xmlNodeToJSON(a[o]);return i.collections=this._getCollections(n),i},_copyLink:function(t){return"<item id='"+t.id+"' source='"+t.source+"' target='"+t.target+"' type='"+t.type+"' />"},_copyObject:function(t){return"<task id='"+t.id+"' parent='"+(t.parent||"")+"' start_date='"+t.start_date+"' duration='"+t.duration+"' open='"+!!t.open+"' progress='"+t.progress+"' end_date='"+t.end_date+"'><![CDATA["+t.text+"]]></task>"},serialize:function(){for(var e=[],n=[],i=t.json.serialize(),r=0,a=i.data.length;r<a;r++)e.push(this._copyObject(i.data[r]));for(r=0,a=i.links.length;r<a;r++)n.push(this._copyLink(i.links[r]));return"<data>"+e.join("")+"<coll_options for='links'>"+n.join("")+"</coll_options></data>"}},t.oldxml={parse:function(e,n){n=t.xml._getXML(e,n,"projects");for(var i={collections:{links:[]}},r=i.data=[],a=t.ajax.xpath("//task",n),o=0;o<a.length;o++){r[o]=t.xml._xmlNodeToJSON(a[o]);var s=a[o].parentNode;"project"==s.tagName?r[o].parent="project-"+s.getAttribute("id"):r[o].parent=s.parentNode.getAttribute("id")}a=t.ajax.xpath("//project",n);for(o=0;o<a.length;o++){(l=t.xml._xmlNodeToJSON(a[o],!0)).id="project-"+l.id,r.push(l)}for(o=0;o<r.length;o++){var l;(l=r[o]).start_date=l.startdate||l.est,l.end_date=l.enddate,l.text=l.name,l.duration=l.duration/8,l.open=1,l.duration||l.end_date||(l.duration=1),l.predecessortasks&&i.collections.links.push({target:l.id,source:l.predecessortasks,type:t.config.links.finish_to_start})}return i},serialize:function(){t.message("Serialization to 'old XML' is not implemented")}},t.serverList=function(t,e){return e?this.serverList[t]=e.slice(0):this.serverList[t]||(this.serverList[t]=[]),this.serverList[t]}}},function(t,e){t.exports=function(t){t.isReadonly=function(e){return"number"!=typeof e&&"string"!=typeof e||!t.isTaskExists(e)||(e=t.getTask(e)),(!e||!e[this.config.editable_property])&&(e&&e[this.config.readonly_property]||this.config.readonly)}}},function(t,e){t.exports=function(t){t.getGridColumn=function(e){for(var n=t.config.columns,i=0;i<n.length;i++)if(n[i].name==e)return n[i];return null},t.getGridColumns=function(){return t.config.columns.slice()}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){this._scrollOrder=0;var e=t.gantt,n=t.grid,i=t.dnd,r=t.getCurrentX;this.$gantt=e,this.$grid=n,this._dnd=i,this.getCurrentX=r,this._scrollView=this.$gantt.$ui.getView(this.$grid.$config.scrollX),this.attachEvents()}return t.prototype.attachEvents=function(){var t=this;this.isScrollable()&&(this._dnd.attachEvent("onDragMove",function(e,n){var i=t.$grid.$grid.getBoundingClientRect(),r=i.right,a=i.left,o=t.getCurrentX(n.clientX);return o>=r-20&&(t.autoscrollRight(),t.autoscrollStart()),o<=a+20&&(t.autoscrollLeft(),t.autoscrollStart()),o<r-20&&o>a+20&&t.autoscrollStop(),!0}),this._dnd.attachEvent("onDragEnd",function(){t.autoscrollStop()}))},t.prototype.autoscrollStart=function(){var t=this;if(0!==this._scrollOrder){var e=10*this._scrollOrder,n=this._scrollView.getScrollState();this._scrollView.scrollTo(n.position+e),setTimeout(function(){t.autoscrollStart()},50)}},t.prototype.autoscrollRight=function(){this._scrollOrder=1},t.prototype.autoscrollLeft=function(){this._scrollOrder=-1},t.prototype.autoscrollStop=function(){this._scrollOrder=0},t.prototype.getCorrection=function(){return this.isScrollable()?this._scrollView.getScrollState().position:0},t.prototype.isScrollable=function(){return!!this.$grid.$config.scrollable},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),r=n(204),a=function(){function t(t,e){var n=this;this._targetMarker=null,this.calculateCurrentPosition=function(t){var e=n.$grid.$grid.getBoundingClientRect(),i=e.right,r=e.left,a=t;return a>i&&(a=i),a<r&&(a=r),a},this.$gantt=t,this.$grid=e}return t.prototype.init=function(){var t=this.$gantt.$services.getService("dnd");this._dnd=new t(this.$grid.$grid_scale,{updates_per_second:60}),this._scrollableGrid=new r.default({gantt:this.$gantt,grid:this.$grid,dnd:this._dnd,getCurrentX:this.calculateCurrentPosition}),this.attachEvents()},t.prototype.attachEvents=function(){var t=this;this._dnd.attachEvent("onBeforeDragStart",function(e,n){if(t._draggedCell=t.$gantt.utils.dom.closest(n.target,".gantt_grid_head_cell"),t._draggedCell){var i,r,a=t.$grid.$getConfig().columns,o=t._draggedCell.getAttribute("data-column-id");return a.map(function(t,e){t.name===o&&(i=t,r=e)}),!1===t.$grid.callEvent("onBeforeColumnDragStart",[{draggedColumn:i,draggedIndex:r}])?!1:!(!t._draggedCell||!i)&&(t._gridConfig=t.$grid.$getConfig(),t._originAutoscroll=t.$gantt.config.autoscroll,t.$gantt.config.autoscroll=!1,!0)}}),this._dnd.attachEvent("onAfterDragStart",function(e,n){t._draggedCell&&(t._dnd.config.column=t._draggedCell.getAttribute("data-column-id"),t._dnd.config.marker.innerHTML=t._draggedCell.outerHTML,t._dnd.config.marker.classList.add("gantt_column_drag_marker"),t._dnd.config.marker.style.height=t._gridConfig.scale_height+"px",t._dnd.config.marker.style.lineHeight=t._gridConfig.scale_height+"px",t._draggedCell.classList.add("gantt_grid_head_cell_dragged"))}),this._dnd.attachEvent("onDragMove",function(e,n){if(t._draggedCell){t._dragX=n.clientX;var i=t.calculateCurrentPosition(n.clientX),r=t.findColumnsIndexes(),a=r.targetIndex,o=r.draggedIndex,s=t.$grid.$getConfig().columns,l=s[o],c=s[a];return!1===t.$grid.callEvent("onColumnDragMove",[{draggedColumn:l,targetColumn:c,draggedIndex:o,targetIndex:a}])?(t.cleanTargetMarker(),!1):(t.setMarkerPosition(i),t.drawTargetMarker(r),!0)}}),this._dnd.attachEvent("onDragEnd",function(){t._draggedCell&&(t.$gantt.config.autoscroll=t._originAutoscroll,t._draggedCell.classList.remove("gantt_grid_head_cell_dragged"),t.cleanTargetMarker(),t.reorderColumns())})},t.prototype.reorderColumns=function(){var t=this.findColumnsIndexes(),e=t.targetIndex,n=t.draggedIndex,i=this.$grid.$getConfig().columns,r=i[n],a=i[e];!1!==this.$grid.callEvent("onBeforeColumnReorder",[{draggedColumn:r,targetColumn:a,draggedIndex:n,targetIndex:e}])&&e!==n&&(i.splice(n,1),i.splice(e,0,r),this.$gantt.render(),this.$grid.callEvent("onAfterColumnReorder",[{draggedColumn:r,targetColumn:a,draggedIndex:n,targetIndex:e}]))},t.prototype.findColumnsIndexes=function(){var t,e,n,i,r,a=this._dnd.config.column,o=this.$grid.$getConfig().columns,s={startX:0,endX:0},l=0,c=o.length-1,u=function(t,e){return t<=e},d=function(t){return++t};this.$gantt.config.rtl&&(l=o.length-1,c=0,u=function(t,e){return t>=e},d=function(t){return--t});for(var h=this._dragX-this.$grid.$grid.getBoundingClientRect().left+this._scrollableGrid.getCorrection(),f=l;u(f,c)&&(void 0===t||void 0===e);f=d(f))o[f].hide||(s.startX=s.endX,s.endX+=o[f].width,h>=s.startX&&(h<=s.endX||!u(d(f),c))&&(t=f,n=s.startX,i=s.endX,r=(h-s.startX)/(s.endX-s.startX)),a===o[f].name&&(e=f));return{targetIndex:t,draggedIndex:e,xBefore:n,xAfter:i,columnRelativePos:r}},t.prototype.setMarkerPosition=function(t,e){void 0===e&&(e=10);var n=this._dnd.config.marker,i=this._dnd._obj.getBoundingClientRect();n.style.top=i.y+e+"px",n.style.left=t+"px"},t.prototype.drawTargetMarker=function(t){var e,n=t.targetIndex,r=t.draggedIndex,a=t.xBefore,o=t.xAfter,s=t.columnRelativePos;this._targetMarker||(this._targetMarker=document.createElement("div"),i.addClassName(this._targetMarker,"gantt_grid_target_marker"),this._targetMarker.style.display="none",this._targetMarker.style.height=this._gridConfig.scale_height+"px"),this._targetMarker.parentNode||this.$grid.$grid_scale.appendChild(this._targetMarker),e=n>r?o:n<r?a:s>.5?o:a,this._targetMarker.style.left=e+"px",this._targetMarker.style.display="block"},t.prototype.cleanTargetMarker=function(){this._targetMarker&&this._targetMarker.parentNode&&this.$grid.$grid_scale.removeChild(this._targetMarker),this._targetMarker=null},t}();e.ColumnsGridDnd=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(205);e.default=i.ColumnsGridDnd},function(t,e,n){var i=n(1);t.exports=function(t,e){var n={row_before_start:t.bind(function(t,n,r){var a=e.$getConfig(),o=e.$config.rowStore;if(!i.locateAttribute(r,a.task_grid_row_resizer_attribute))return!1;var s=this.locate(r,a.task_grid_row_resizer_attribute),l=o.getItem(s);return!1!==e.callEvent("onBeforeRowResize",[l])&&void 0},t),row_after_start:t.bind(function(t,n,i){var r=e.$getConfig(),a=this.locate(i,r.task_grid_row_resizer_attribute);t.config.marker.innerHTML="",t.config.marker.className+=" gantt_row_grid_resize_area",t.config.marker.style.width=e.$grid.offsetWidth+"px",t.config.drag_id=a},t),row_drag_move:t.bind(function(t,n,r){var a=e.$config.rowStore,o=e.$getConfig(),s=t.config,l=s.drag_id,c=e.getItemHeight(l),u=e.getItemTop(l)-n.scrollTop,d=i.getNodePosition(e.$grid_data),h=parseInt(s.marker.style.top,10),f=u+d.y,_=0,g=o.min_task_grid_row_height;return(_=h-f)<g&&(_=g),s.marker.style.left=d.x+"px",s.marker.style.top=f-1+"px",s.marker.style.height=Math.abs(_)+1+"px",s.marker_height=_,e.callEvent("onRowResize",[l,a.getItem(l),_+c]),!0},t),row_drag_end:t.bind(function(n,i,r){var a=e.$config.rowStore,o=n.config,s=o.drag_id,l=a.getItem(s),c=e.getItemHeight(s),u=o.marker_height;!1!==e.callEvent("onBeforeRowResizeEnd",[s,l,u])&&l.row_height!=u&&(l.row_height=u,t.updateTask(s),e.callEvent("onAfterRowResize",[s,l,c,u]),this.render())},t)};return{init:function(){var i=t.$services.getService("dnd"),r=e.$getConfig(),a=new i(e.$grid_data,{updates_per_second:60});t.defined(r.dnd_sensitivity)&&(a.config.sensitivity=r.dnd_sensitivity),a.attachEvent("onBeforeDragStart",function(t,e){return n.row_before_start(a,t,e)}),a.attachEvent("onAfterDragStart",function(t,e){return n.row_after_start(a,t,e)}),a.attachEvent("onDragMove",function(t,e){return n.row_drag_move(a,t,e)}),a.attachEvent("onDragEnd",function(t,e){return n.row_drag_end(a,t,e)})}}}},function(t,e){t.exports=function(t){var e=-1,n=-1;return{resetCache:function(){e=-1,n=-1},_getRowHeight:function(){return-1===e&&(e=t.$getConfig().row_height),e},_refreshState:function(){this.resetCache(),n=!0;var e=t.$config.rowStore;if(e)for(var i=this._getRowHeight(),r=0;r<e.fullOrder.length;r++){var a=e.getItem(e.fullOrder[r]);if(a&&a.row_height&&a.row_height!==i){n=!1;break}}},canUseSimpleCalculation:function(){return-1===n&&this._refreshState(),n},getRowTop:function(e){return t.$config.rowStore?e*this._getRowHeight():0},getItemHeight:function(t){return this._getRowHeight()},getTotalHeight:function(){return t.$config.rowStore?t.$config.rowStore.countVisible()*this._getRowHeight():0},getItemIndexByTopPosition:function(e){return t.$config.rowStore?Math.floor(e/this._getRowHeight()):0}}}},function(t,e){t.exports=function(t,e){return{init:function(){},doOnRender:function(){}}}},function(t,e,n){var i=n(32);t.exports=function(t){n(203)(t),i.prototype.getGridColumns=function(){for(var t=this.$getConfig().columns,e=[],n=0;n<t.length;n++)t[n].hide||e.push(t[n]);return e}}},function(t,e,n){t.exports=function(t){var e=n(47),i={};t.attachEvent("onClearAll",function(){i={}});var r=e.prototype.hasChild;t.$data.tasksStore.hasChild=function(e){return t.config.branch_loading?!!r.call(this,e)||!!this.exists(e)&&this.getItem(e)[t.config.branch_loading_property]:r.call(this,e)},t.attachEvent("onTaskOpened",function(e){if(t.config.branch_loading&&t._load_url&&function(e){return!(!t.config.branch_loading||!t._load_url||i[e]||t.getChildren(e).length||!t.hasChild(e))}(e)){var n=t._load_url,r=(n=n.replace(/(\?|&)?parent_id=.+&?/,"")).indexOf("?")>=0?"&":"?",a=t.getScrollState().y||0,o={taskId:e,url:n+r+"parent_id="+encodeURIComponent(e)};if(!1===t.callEvent("onBeforeBranchLoading",[o]))return;t.load(o.url,this._load_type,function(){a&&t.scrollTo(null,a),t.callEvent("onAfterBranchLoading",[o])}),i[e]=!0}})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){t.ext=t.ext||{},t.config.show_empty_state=!1,t.ext.emptyStateElement=t.ext.emptyStateElement||{isEnabled:function(){return!0===t.config.show_empty_state},isGanttEmpty:function(){return!t.getTaskByTime().length},renderContent:function(e){var n="<div class='gantt_empty_state'><div class='gantt_empty_state_image'></div><div class='gantt_empty_state_text'>\n <div class='gantt_empty_state_text_link' data-empty-state-create-task>"+t.locale.labels.empty_state_text_link+"</div>\n <div class='gantt_empty_state_text_description'>"+t.locale.labels.empty_state_text_description+"</div>\n </div></div>";e.innerHTML=n},clickEvents:[],attachAddTaskEvent:function(){var e=t.attachEvent("onEmptyClick",function(e){t.utils.dom.closest(e.target,"[data-empty-state-create-task]")&&t.createTask({id:t.uid(),text:"New Task"})});this.clickEvents.push(e)},detachAddTaskEvents:function(){this.clickEvents.forEach(function(e){t.detachEvent(e)}),this.clickEvents=[]},getContainer:function(){if(t.$container){var e=t.utils.dom;if(t.$container.contains(t.$grid_data))return e.closest(t.$grid_data,".gantt_layout_content");if(t.$container.contains(t.$task_data))return e.closest(t.$task_data,".gantt_layout_content")}return null},getNode:function(){var t=this.getContainer();return t?t.querySelector(".gantt_empty_state_wrapper"):null},show:function(){var e=this.getContainer();if(!e&&this.isGanttEmpty())return null;var n=document.createElement("div");n.className="gantt_empty_state_wrapper",n.style.marginTop=t.config.scale_height-e.offsetHeight+"px";var i=t.$container.querySelectorAll(".gantt_empty_state_wrapper");Array.prototype.forEach.call(i,function(t){t.parentNode.removeChild(t)}),this.detachAddTaskEvents(),this.attachAddTaskEvent(),e.appendChild(n),this.renderContent(n)},hide:function(){var t=this.getNode();if(!t)return!1;t.parentNode.removeChild(t)},init:function(){}},t.attachEvent("onDataRender",function(){var e=t.ext.emptyStateElement;e.isEnabled()&&e.isGanttEmpty()?e.show():e.hide()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){var e=this;this.format=function(t){return e._getWBSCode(t.source)},this.canParse=function(t){return e._linkReg.test(t)},this.parse=function(t){if(!e.canParse(t))return null;var n=e._linkReg.exec(t)[0].trim();return{id:void 0,source:e._findSource(n)||null,target:null,type:e._gantt.config.links.finish_to_start,lag:0}},this._getWBSCode=function(t){var n=e._gantt.getTask(t);return e._gantt.getWBSCode(n)},this._findSource=function(t){var n=new RegExp("^[0-9.]+","i");if(n.exec(t)){var i=n.exec(t)[0],r=e._gantt.getTaskByWBSCode(i);if(r)return r.id}return null},this._linkReg=/^[0-9\.]+/,this._gantt=t}return t.create=function(e,n){return void 0===e&&(e=null),new t(n)},t}();e.default=i},function(t,e,n){var i=n(44).default,r=n(213).default;t.exports=function(t){t.ext.formatters={durationFormatter:function(e){return e||(e={}),e.store||(e.store=t.config.duration_unit),e.enter||(e.enter=t.config.duration_unit),i.create(e,t)},linkFormatter:function(e){return r.create(e,t)}}}},function(t,e){t.exports=function(t){function e(e){return function(){return!t.config.auto_types||t.getTaskType(t.config.types.project)!=t.config.types.project||e.apply(this,arguments)}}function n(e,n){var i=t.getTask(e),r=a(i);!1!==r&&t.getTaskType(i)!==r&&(n.$needsUpdate=!0,n[i.id]={task:i,type:r})}function i(e){if(!t.getState().group_mode){var i=function(e,i){return n(e,i=i||{}),t.eachParent(function(t){n(t.id,i)},e),i}(e);i.$needsUpdate&&t.batchUpdate(function(){!function(e){for(var n in e)if(e[n]&&e[n].task){var i=e[n].task;i.type=e[n].type,t.updateTask(i.id)}}(i)})}}var r;function a(e){var n=t.config.types,i=t.hasChild(e.id),r=t.getTaskType(e.type);return i&&r===n.task?n.project:!i&&r===n.project&&n.task}var o,s,l=!0;function c(e){e!=t.config.root_id&&t.isTaskExists(e)&&i(e)}t.attachEvent("onParse",e(function(){l=!1,t.getState().group_mode||(t.batchUpdate(function(){t.eachTask(function(e){var n=a(e);!1!==n&&function(e,n){t.getState().group_mode||(e.type=n,t.updateTask(e.id))}(e,n)})}),l=!0)})),t.attachEvent("onAfterTaskAdd",e(function(t){l&&i(t)})),t.attachEvent("onAfterTaskUpdate",e(function(t){l&&i(t)})),t.attachEvent("onBeforeTaskDelete",e(function(e,n){return r=t.getParent(e),!0})),t.attachEvent("onAfterTaskDelete",e(function(t,e){c(r)})),t.attachEvent("onRowDragStart",e(function(e,n,i){return o=t.getParent(e),!0})),t.attachEvent("onRowDragEnd",e(function(t,e){c(o),i(t)})),t.attachEvent("onBeforeTaskMove",e(function(e,n,i){return s=t.getParent(e),!0})),t.attachEvent("onAfterTaskMove",e(function(t,e,n){document.querySelector(".gantt_drag_marker")||(c(s),i(t))}))}},function(t,e){t.exports=function(t){function e(e){return function(){return!t.config.placeholder_task||e.apply(this,arguments)}}function n(){var e=t.getTaskBy("type",t.config.types.placeholder);if(!e.length||!t.isTaskExists(e[0].id)){var n={unscheduled:!0,type:t.config.types.placeholder,duration:0,text:t.locale.labels.new_task};if(!1===t.callEvent("onTaskCreated",[n]))return;t.addTask(n)}}function i(e){var n=t.getTask(e);n.type==t.config.types.placeholder&&(n.start_date&&n.end_date&&n.unscheduled&&(n.unscheduled=!1),t.batchUpdate(function(){var e=t.copy(n);t.silent(function(){t.deleteTask(n.id)}),delete e["!nativeeditor_status"],e.type=t.config.types.task,e.id=t.uid(),t.addTask(e)}))}t.config.types.placeholder="placeholder",t.attachEvent("onDataProcessorReady",e(function(n){n&&!n._silencedPlaceholder&&(n._silencedPlaceholder=!0,n.attachEvent("onBeforeUpdate",e(function(e,i,r){return r.type!=t.config.types.placeholder||(n.setUpdated(e,!1),!1)})))}));var r=!1;function a(e){if(t.config.types.placeholder&&t.isTaskExists(e)&&t.getTask(e).type==t.config.types.placeholder)return!0;return!1}function o(t){return!(!a(t.source)&&!a(t.target))}t.attachEvent("onGanttReady",function(){r||(r=!0,t.attachEvent("onAfterTaskUpdate",e(i)),t.attachEvent("onAfterTaskAdd",e(function(e,i){i.type!=t.config.types.placeholder&&(t.getTaskBy("type",t.config.types.placeholder).forEach(function(e){t.silent(function(){t.isTaskExists(e.id)&&t.deleteTask(e.id)})}),n())})),t.attachEvent("onParse",e(n)))}),t.attachEvent("onLinkValidation",function(t){return!o(t)}),t.attachEvent("onBeforeLinkAdd",function(t,e){return!o(e)}),t.attachEvent("onBeforeUndoStack",function(e){for(var n=0;n<e.commands.length;n++){var i=e.commands[n];"task"===i.entity&&i.value.type===t.config.types.placeholder&&(e.commands.splice(n,1),n--)}return!0})}},function(t,e){t.exports=function(t){var e="$resourceAssignments";t.config.resource_assignment_store="resourceAssignments",t.config.process_resource_assignments=!0;var n={auto:"auto",singleValue:"singleValue",valueArray:"valueArray",resourceValueArray:"resourceValueArray",assignmentsArray:"assignmentsArray"},i=n.auto,r={fixedDates:"fixedDates",fixedDuration:"fixedDuration",default:"default"};function a(e,n){e.start_date?e.start_date=t.date.parseDate(e.start_date,"parse_date"):e.start_date=null,e.end_date?e.end_date=t.date.parseDate(e.end_date,"parse_date"):e.end_date=null;var i=Number(e.delay),a=!1;if(isNaN(i)?(e.delay=0,a=!0):e.delay=i,t.defined(e.value)||(e.value=null),!e.task_id||!e.resource_id)return!1;if(e.mode=e.mode||r.default,e.mode===r.fixedDuration&&(isNaN(Number(e.duration))&&(n=n||t.getTask(e.task_id),e.duration=t.calculateDuration({start_date:e.start_date,end_date:e.end_date,id:n})),a&&(n=n||t.getTask(e.task_id),e.delay=t.calculateDuration({start_date:n.start_date,end_date:e.start_date,id:n}))),e.mode!==r.fixedDates&&(n||t.isTaskExists(e.task_id))){var o=s(e,n=n||t.getTask(e.task_id));e.start_date=o.start_date,e.end_date=o.end_date,e.duration=o.duration}}var o=t.createDatastore({name:t.config.resource_assignment_store,initItem:function(e){return e.id||(e.id=t.uid()),a(e),e}});function s(e,n){if(e.mode===r.fixedDates)return{start_date:e.start_date,end_date:e.end_date,duration:e.duration};var i,a,o=e.delay?t.calculateEndDate({start_date:n.start_date,duration:e.delay,task:n}):new Date(n.start_date);return e.mode===r.fixedDuration?(i=t.calculateEndDate({start_date:o,duration:e.duration,task:n}),a=e.duration):(i=new Date(n.end_date),a=n.duration-e.delay),{start_date:o,end_date:i,duration:a}}function l(e){var o=t.config.resource_property,s=e[o],l=[],c=i===n.auto;if(t.defined(s)&&s){Array.isArray(s)||(s=[s],c&&(i=n.singleValue,c=!1));var u={};s.forEach(function(o){o.resource_id||(o={resource_id:o},c&&(i=n.valueArray,c=!1)),c&&(o.id&&o.resource_id?(i=n.assignmentsArray,c=!1):(i=n.resourceValueArray,c=!1));var s,d=r.default;o.mode||(o.start_date&&o.end_date||o.start_date&&o.duration)&&(d=r.fixedDuration),s=o.id||!o.$id||u[o.$id]?o.id&&!u[o.id]?o.id:t.uid():o.$id,u[s]=!0;var h={id:s,start_date:o.start_date,duration:o.duration,end_date:o.end_date,delay:o.delay,task_id:e.id,resource_id:o.resource_id,value:o.value,mode:o.mode||d};h.start_date&&h.start_date.getMonth&&h.end_date&&h.end_date.getMonth&&"number"==typeof h.duration||a(h,e),l.push(h)})}return l}function c(e){if(t.isTaskExists(e)){var n=t.getTask(e);u(n,t.getTaskAssignments(n.id))}}function u(r,a){a.sort(function(t,e){return t.start_date&&e.start_date&&t.start_date.valueOf()!=e.start_date.valueOf()?t.start_date-e.start_date:0}),i==n.assignmentsArray?r[t.config.resource_property]=a:i==n.resourceValueArray&&(r[t.config.resource_property]=a.map(function(t){return{$id:t.id,start_date:t.start_date,duration:t.duration,end_date:t.end_date,delay:t.delay,resource_id:t.resource_id,value:t.value,mode:t.mode}})),r[e]=a}function d(e){var n=l(e),i=[];return n.forEach(function(e){e.id=e.id||t.uid(),i.push(e)}),n}function h(t,e){var a=function(t,e){var r={inBoth:[],inTaskNotInStore:[],inStoreNotInTask:[]};if(i==n.singleValue){var a=t[0],o=a?a.resource_id:null,s=!1;e.forEach(function(t){t.resource_id!=o?r.inStoreNotInTask.push(t):t.resource_id==o&&(r.inBoth.push({store:t,task:a}),s=!0)}),!s&&a&&r.inTaskNotInStore.push(a)}else if(i==n.valueArray){var l={},c={},u={};t.forEach(function(t){l[t.resource_id]=t}),e.forEach(function(t){c[t.resource_id]=t}),t.concat(e).forEach(function(t){if(!u[t.resource_id]){u[t.resource_id]=!0;var e=l[t.resource_id],n=c[t.resource_id];e&&n?r.inBoth.push({store:n,task:e}):e&&!n?r.inTaskNotInStore.push(e):!e&&n&&r.inStoreNotInTask.push(n)}})}else i!=n.assignmentsArray&&i!=n.resourceValueArray||(l={},c={},u={},t.forEach(function(t){l[t.id||t.$id]=t}),e.forEach(function(t){c[t.id]=t}),t.concat(e).forEach(function(t){var e=t.id||t.$id;if(!u[e]){u[e]=!0;var n=l[e],i=c[e];n&&i?r.inBoth.push({store:i,task:n}):n&&!i?r.inTaskNotInStore.push(n):!n&&i&&r.inStoreNotInTask.push(i)}}));return r}(l(t),e);a.inStoreNotInTask.forEach(function(t){o.removeItem(t.id)}),a.inTaskNotInStore.forEach(function(t){o.addItem(t)}),a.inBoth.forEach(function(e){if(function(t,e){var n={id:!0};for(var i in t)if(!n[i]&&String(t[i])!==String(e[i]))return!0;return!1}(e.task,e.store))!function(t,e){var n={id:!0};for(var i in t)n[i]||(e[i]=t[i])}(e.task,e.store),o.updateItem(e.store.id);else if(e.task.start_date&&e.task.end_date&&e.task.mode!==r.fixedDates){var n=s(e.store,t);e.store.start_date.valueOf()==n.start_date.valueOf()&&e.store.end_date.valueOf()==n.end_date.valueOf()||(e.store.start_date=n.start_date,e.store.end_date=n.end_date,e.store.duration=n.duration,o.updateItem(e.store.id))}}),c(t.id)}function f(t){var n=t[e]||o.find(function(e){return e.task_id==t.id});h(t,n)}t.$data.assignmentsStore=o,t.attachEvent("onGanttReady",function(){if(t.config.process_resource_assignments){t.attachEvent("onParse",function(){t.silent(function(){o.clearAll();var e=[];t.eachTask(function(n){if(n.type!==t.config.types.project){var i=d(n);u(n,i),i.forEach(function(t){e.push(t)})}}),o.parse(e)})});var e=!1,n=!1,i={},r=!1;t.attachEvent("onBeforeBatchUpdate",function(){e=!0}),t.attachEvent("onAfterBatchUpdate",function(){if(n){var r={};for(var a in i)r[a]=t.getTaskAssignments(i[a].id);for(var a in i)h(i[a],r[a])}n=!1,e=!1,i={}}),t.attachEvent("onTaskCreated",function(t){var e=d(t);return o.parse(e),u(t,e),!0}),t.attachEvent("onAfterTaskUpdate",function(t,r){e?(n=!0,i[t]=r):r.unscheduled||f(r)}),t.attachEvent("onAfterTaskAdd",function(t,r){e?(n=!0,i[t]=r):f(r)}),t.attachEvent("onRowDragEnd",function(e){f(t.getTask(e))}),t.$data.tasksStore.attachEvent("onAfterDeleteConfirmed",function(e,n){var i=[e];t.eachTask(function(t){i.push(t.id)},e),function(t){var e={};t.forEach(function(t){e[t]=!0}),o.find(function(t){return e[t.task_id]}).forEach(function(t){o.removeItem(t.id)})}(i)}),t.$data.tasksStore.attachEvent("onClearAll",function(){return a=null,s=null,l=null,o.clearAll(),!0}),t.attachEvent("onTaskIdChange",function(t,e){o.find(function(e){return e.task_id==t}).forEach(function(t){t.task_id=e,o.updateItem(t.id)}),c(e)}),t.attachEvent("onBeforeUndo",function(t){return r=!0,!0}),t.attachEvent("onAfterUndo",function(t){r=!0});var a=null,s=null,l=null;o.attachEvent("onStoreUpdated",function(){return!(!e||r)||(a=null,s=null,l=null,!0)}),t.getResourceAssignments=function(e,n){var i=t.defined(n)&&null!==n;return null===a&&(a={},s={},o.eachItem(function(t){a[t.resource_id]||(a[t.resource_id]=[]),a[t.resource_id].push(t);var e=t.resource_id+"-"+t.task_id;s[e]||(s[e]=[]),s[e].push(t)})),i?(s[e+"-"+n]||[]).slice():(a[e]||[]).slice()},t.getTaskAssignments=function(t){if(null===l){var e=[];l={},o.eachItem(function(n){l[n.task_id]||(l[n.task_id]=[]),l[n.task_id].push(n),n.task_id==t&&e.push(n)})}return(l[t]||[]).slice()},t.getTaskResources=function(e){var n=t.getDatastore("resource"),i={};t.getTaskAssignments(e).forEach(function(t){i[t.resource_id]||(i[t.resource_id]=t.resource_id)});var r=[];for(var a in i){var o=n.getItem(i[a]);o&&r.push(o)}return r},t.updateTaskAssignments=c}},{once:!0})}},function(t,e,n){var i=n(2);function r(t){var e={},n=!1;t.$data.tasksStore.attachEvent("onStoreUpdated",function(){e={},n=!1}),t.attachEvent("onBeforeGanttRender",function(){e={}});var r=String(Math.random());function a(t){return null===t?r+String(t):String(t)}function o(t,e,n){return Array.isArray(t)?t.map(function(t){return a(t)}).join("_")+"_".concat(e,"_").concat(n):a(t)+"_".concat(e,"_").concat(n)}function s(r,s,l){var c,u=o(s,r,JSON.stringify(l)),d={};return i.forEach(s,function(t){d[a(t)]=!0}),e[u]?c=e[u]:(c=e[u]=[],t.eachTask(function(s){if(l){if(!l[t.getTaskType(s)])return}else if(s.type==t.config.types.project)return;var u;r in s&&(u=i.isArray(s[r])?s[r]:[s[r]],i.forEach(u,function(t){var i=t&&t.resource_id?t.resource_id:t;if(d[a(i)])c.push(s);else if(!n){var l=o(t,r);e[l]||(e[l]=[]),e[l].push(s)}}))}),n=!0),c}function l(e,n,i){var r=t.config.resource_property,a=[];if(t.getDatastore("task").exists(n)){var o=t.getTask(n);a=o[r]||[]}Array.isArray(a)||(a=[a]);for(var s=0;s<a.length;s++)a[s].resource_id==e&&i.push({task_id:o.id,resource_id:a[s].resource_id,value:a[s].value})}return{getTaskBy:function(e,n,r){return"function"==typeof e?function(e){var n=[];return t.eachTask(function(t){e(t)&&n.push(t)}),n}(e):i.isArray(n)?s(e,n,r):s(e,[n],r)},getResourceAssignments:function(e,n){var i=[],r=t.config.resource_property;return void 0!==n?l(e,n,i):t.getTaskBy(r,e).forEach(function(t){l(e,t.id,i)}),i}}}t.exports=function(t){var e=r(t);t.ext.resources=function(t){var e={renderEditableLabel:function(e,n,i,r,a){var o=t.config.readonly?"":"contenteditable";if(e<i.end_date&&n>i.start_date){for(var s=0;s<a.length;s++){var l=a[s];return"<div "+o+" data-assignment-cell data-assignment-id='"+l.id+"' data-row-id='"+i.id+"' data-task='"+i.$task_id+"' data-start-date='"+t.templates.format_date(e)+"' data-end-date='"+t.templates.format_date(n)+"'>"+l.value+"</div>"}return"<div "+o+" data-assignment-cell data-empty data-row-id='"+i.id+"' data-resource-id='"+i.$resource_id+"' data-task='"+i.$task_id+"' data-start-date='"+t.templates.format_date(e)+"'' data-end-date='"+t.templates.format_date(n)+"'>-</div>"}return""},renderSummaryLabel:function(t,e,n,i,r){var a=r.reduce(function(t,e){return t+Number(e.value)},0);return a%1&&(a=Math.round(10*a)/10),a?"<div>"+a+"</div>":""},editableResourceCellTemplate:function(t,n,i,r,a){return"task"===i.$role?e.renderEditableLabel(t,n,i,r,a):e.renderSummaryLabel(t,n,i,r,a)},editableResourceCellClass:function(t,e,n,i,r){var a=[];a.push("resource_marker"),"task"===n.$role?a.push("task_cell"):a.push("resource_cell");var o=r.reduce(function(t,e){return t+Number(e.value)},0),s=Number(n.capacity);return isNaN(s)&&(s=8),o<=s?a.push("workday_ok"):a.push("workday_over"),a.join(" ")},getSummaryResourceAssignments:function(e){var n,i=t.getDatastore(t.config.resource_store),r=i.getItem(e);return"task"===r.$role?n=t.getResourceAssignments(r.$resource_id,r.$task_id):(n=t.getResourceAssignments(e),i.eachItem&&i.eachItem(function(e){"task"!==e.$role&&(n=n.concat(t.getResourceAssignments(e.id)))},e)),n},initEditableDiagram:function(){t.config.resource_render_empty_cells=!0,function(){var e=null;function n(){return e&&cancelAnimationFrame(e),e=requestAnimationFrame(function(){Array.prototype.slice.call(t.$container.querySelectorAll(".resourceTimeline_cell [data-assignment-cell]")).forEach(function(t){t.contentEditable=!0})}),!0}t.attachEvent("onGanttReady",function(){t.getDatastore(t.config.resource_assignment_store).attachEvent("onStoreUpdated",n),t.getDatastore(t.config.resource_store).attachEvent("onStoreUpdated",n)},{once:!0}),t.attachEvent("onGanttLayoutReady",function(){t.$layout.getCellsByType("viewCell").forEach(function(t){t.$config&&"resourceTimeline"===t.$config.view&&t.$content&&t.$content.attachEvent("onScroll",n)})})}(),t.attachEvent("onGanttReady",function(){var e=!1;t.event(t.$container,"keypress",function(t){var e=t.target.closest(".resourceTimeline_cell [data-assignment-cell]");e&&(13!==t.keyCode&&27!==t.keyCode||e.blur())}),t.event(t.$container,"focusout",function(n){if(!e){e=!0,setTimeout(function(){e=!1},300);var i=n.target.closest(".resourceTimeline_cell [data-assignment-cell]");if(i){var r=(i.innerText||"").trim();"-"==r&&(r="0");var a=Number(r),o=i.getAttribute("data-row-id"),s=i.getAttribute("data-assignment-id"),l=i.getAttribute("data-task"),c=i.getAttribute("data-resource-id"),u=t.templates.parse_date(i.getAttribute("data-start-date")),d=t.templates.parse_date(i.getAttribute("data-end-date")),h=t.getDatastore(t.config.resource_assignment_store);if(isNaN(a))t.getDatastore(t.config.resource_store).refresh(o);else{var f=t.getTask(l);if(t.plugins().undo&&t.ext.undo.saveState(l,"task"),s){if(a===(g=h.getItem(s)).value)return;if(g.start_date.valueOf()===u.valueOf()&&g.end_date.valueOf()===d.valueOf())g.value=a,a?h.updateItem(g.id):h.removeItem(g.id);else{if(g.end_date.valueOf()>d.valueOf()){var _=t.copy(g);_.id=t.uid(),_.start_date=d,_.duration=t.calculateDuration({start_date:_.start_date,end_date:_.end_date,task:f}),_.delay=t.calculateDuration({start_date:f.start_date,end_date:_.start_date,task:f}),_.mode=g.mode||"default",0!==_.duration&&h.addItem(_)}g.start_date.valueOf()<u.valueOf()?(g.end_date=u,g.duration=t.calculateDuration({start_date:g.start_date,end_date:g.end_date,task:f}),g.mode="fixedDuration",0===g.duration?h.removeItem(g.id):h.updateItem(g.id)):h.removeItem(g.id),a&&h.addItem({task_id:g.task_id,resource_id:g.resource_id,value:a,start_date:u,end_date:d,duration:t.calculateDuration({start_date:u,end_date:d,task:f}),delay:t.calculateDuration({start_date:f.start_date,end_date:u,task:f}),mode:"fixedDuration"})}t.updateTaskAssignments(f.id),t.updateTask(f.id)}else if(a){var g={task_id:l,resource_id:c,value:a,start_date:u,end_date:d,duration:t.calculateDuration({start_date:u,end_date:d,task:f}),delay:t.calculateDuration({start_date:f.start_date,end_date:u,task:f}),mode:"fixedDuration"};h.addItem(g),t.updateTaskAssignments(f.id),t.updateTask(f.id)}}}}})},{once:!0})}};return e}(t),t.config.resources={dataprocessor_assignments:!1,dataprocessor_resources:!1,editable_resource_diagram:!1,resource_store:{type:"treeDataStore",fetchTasks:!1,initItem:function(e){return e.parent=e.parent||t.config.root_id,e[t.config.resource_property]=e.parent,e.open=!0,e}},lightbox_resources:function(e){var n=[],i=t.getDatastore(t.config.resource_store);return e.forEach(function(e){if(!i.hasChild(e.id)){var r=t.copy(e);r.key=e.id,r.label=e.text,n.push(r)}}),n}},t.attachEvent("onBeforeGanttReady",function(){if(!t.getDatastore(t.config.resource_store)){var e=t.config.resources?t.config.resources.resource_store:void 0,n=e?e.fetchTasks:void 0;t.config.resources&&t.config.resources.editable_resource_diagram&&(n=!0);var i=function(e){return e.parent=e.parent||t.config.root_id,e[t.config.resource_property]=e.parent,e.open=!0,e};e&&e.initItem&&(i=e.initItem);var r=e&&e.type?e.type:"treeDatastore";t.$resourcesStore=t.createDatastore({name:t.config.resource_store,type:r,fetchTasks:void 0!==n&&n,initItem:i}),t.$data.resourcesStore=t.$resourcesStore,t.$resourcesStore.attachEvent("onParse",function(){var e=function(e){var n=[];return e.forEach(function(e){if(!t.$resourcesStore.hasChild(e.id)){var i=t.copy(e);i.key=e.id,i.label=e.text,n.push(i)}}),n};t.config.resources&&t.config.resources.lightbox_resources&&(e=t.config.resources.lightbox_resources);var n=e(t.$resourcesStore.getItems());t.updateCollection("resourceOptions",n)})}}),t.getTaskBy=e.getTaskBy,t.getResourceAssignments=e.getResourceAssignments,t.config.resource_property="owner_id",t.config.resource_store="resource",t.config.resource_render_empty_cells=!1,t.templates.histogram_cell_class=function(t,e,n,i,r){},t.templates.histogram_cell_label=function(t,e,n,i,r){return i.length+"/3"},t.templates.histogram_cell_allocated=function(t,e,n,i,r){return i.length/3},t.templates.histogram_cell_capacity=function(t,e,n,i,r){return 0};var n=function(t,e,n,i,r){return i.length<=1?"gantt_resource_marker_ok":"gantt_resource_marker_overtime"},i=function(t,e,n,i,r){return 8*i.length};t.templates.resource_cell_value=i,t.templates.resource_cell_class=n,t.attachEvent("onBeforeGanttReady",function(){t.config.resources&&t.config.resources.editable_resource_diagram&&(t.config.resource_render_empty_cells=!0,t.templates.resource_cell_value===i&&(t.templates.resource_cell_value=t.ext.resources.editableResourceCellTemplate),t.templates.resource_cell_class===n&&(t.templates.resource_cell_class=t.ext.resources.editableResourceCellClass),t.ext.resources.initEditableDiagram(t))})}},function(t,e){t.exports=function(t){var e=function(t){return{_needRecalc:!0,reset:function(){this._needRecalc=!0},_isRecalcNeeded:function(){return!this._isGroupSort()&&this._needRecalc},_isGroupSort:function(){return!!t.getState().group_mode},_getWBSCode:function(t){return t?(this._isRecalcNeeded()&&this._calcWBS(),t.$virtual?"":this._isGroupSort()?t.$wbs||"":(t.$wbs||(this.reset(),this._calcWBS()),t.$wbs)):""},_setWBSCode:function(t,e){t.$wbs=e},getWBSCode:function(t){return this._getWBSCode(t)},getByWBSCode:function(e){for(var n=e.split("."),i=t.config.root_id,r=0;r<n.length;r++){var a=t.getChildren(i),o=1*n[r]-1;if(!t.isTaskExists(a[o]))return null;i=a[o]}return t.isTaskExists(i)?t.getTask(i):null},_calcWBS:function(){if(this._isRecalcNeeded()){var e=!0;t.eachTask(function(n){if(e)return e=!1,void this._setWBSCode(n,"1");var i=t.getPrevSibling(n.id);if(null!==i){var r=t.getTask(i).$wbs;r&&((r=r.split("."))[r.length-1]++,this._setWBSCode(n,r.join(".")))}else{var a=t.getParent(n.id);this._setWBSCode(n,t.getTask(a).$wbs+".1")}},t.config.root_id,this),this._needRecalc=!1}}}}(t);function n(){return e.reset(),!0}t.getWBSCode=function(t){return e.getWBSCode(t)},t.getTaskByWBSCode=function(t){return e.getByWBSCode(t)},t.attachEvent("onAfterTaskMove",n),t.attachEvent("onBeforeParse",n),t.attachEvent("onAfterTaskDelete",n),t.attachEvent("onAfterTaskAdd",n),t.attachEvent("onAfterSort",n)}},function(t,e,n){var i=n(21);function r(t){var e={},n=!1;function r(t,n){n="function"==typeof n?n:function(){},e[t]||(e[t]=this[t],this[t]=n)}function a(t){e[t]&&(this[t]=e[t],e[t]=null)}function o(){for(var t in e)a.call(this,t)}function s(t){try{t()}catch(t){i.console.error(t)}}return t.$services.getService("state").registerProvider("batchUpdate",function(){return{batch_update:n}},!1),function(t,e){if(n)s(t);else{var i,a=this._dp&&"off"!=this._dp.updateMode;a&&(i=this._dp.updateMode,this._dp.setUpdateMode("off"));var l={},c={render:!0,refreshData:!0,refreshTask:!0,refreshLink:!0,resetProjectDates:function(t){l[t.id]=t}};for(var u in function(t){for(var e in t)r.call(this,e,t[e])}.call(this,c),n=!0,this.callEvent("onBeforeBatchUpdate",[]),s(t),this.callEvent("onAfterBatchUpdate",[]),o.call(this),l)this.resetProjectDates(l[u]);n=!1,e||this.render(),a&&(this._dp.setUpdateMode(i),this._dp.setGanttMode("task"),this._dp.sendData(),this._dp.setGanttMode("link"),this._dp.sendData())}}}t.exports=function(t){t.batchUpdate=r(t)}},function(t,e,n){t.exports=function(t){t.ext||(t.ext={});for(var e=[n(220),n(219),n(218),n(217),n(216),n(215),n(214),n(212).default],i=0;i<e.length;i++)e[i]&&e[i](t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),r=function(){function t(){var t=this;this.clear=function(){t._storage={}},this.storeItem=function(e){t._storage[e.id]=i.copy(e)},this.getStoredItem=function(e){return t._storage[e]||null},this._storage={}}return t.create=function(){return new t},t}();e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){t.getUserData=function(t,e,n){return this.userdata||(this.userdata={}),this.userdata[n]=this.userdata[n]||{},this.userdata[n][t]&&this.userdata[n][t][e]?this.userdata[n][t][e]:""},t.setUserData=function(t,e,n,i){this.userdata||(this.userdata={}),this.userdata[i]=this.userdata[i]||{},this.userdata[i][t]=this.userdata[i][t]||{},this.userdata[i][t][e]=n},t._change_id=function(t,e){switch(this._dp._ganttMode){case"task":this.changeTaskId(t,e);break;case"link":this.changeLinkId(t,e);break;case"assignment":this.$data.assignmentsStore.changeId(t,e);break;case"resource":this.$data.resourcesStore.changeId(t,e);break;default:throw new Error("Invalid mode of the dataProcessor after database id is received: "+this._dp._ganttMode+", new id: "+e)}},t._row_style=function(e,n){"task"===this._dp._ganttMode&&t.isTaskExists(e)&&(t.getTask(e).$dataprocessor_class=n,t.refreshTask(e))},t._delete_task=function(t,e){},t._sendTaskOrder=function(t,e){e.$drop_target&&(this._dp.setGanttMode("task"),this.getTask(t).target=e.$drop_target,this._dp.setUpdated(t,!0,"order"),delete this.getTask(t).$drop_target)},t.setDp=function(){this._dp=e},t.setDp()}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),r=function(){function t(t,e){this.$gantt=t,this.$dp=e,this._dataProcessorHandlers=[]}return t.prototype.attach=function(){var t=this,e=this.$dp,i=this.$gantt,r=n(45),a={},o=function(n){return t.clientSideDelete(n,e,i)};this._dataProcessorHandlers.push(i.attachEvent("onAfterTaskAdd",function(t,n){i.isTaskExists(t)&&(e.setGanttMode("tasks"),e.setUpdated(t,!0,"inserted"))})),this._dataProcessorHandlers.push(i.attachEvent("onAfterTaskUpdate",function(t,n){i.isTaskExists(t)&&(e.setGanttMode("tasks"),e.setUpdated(t,!0),i._sendTaskOrder&&i._sendTaskOrder(t,n))})),this._dataProcessorHandlers.push(i.attachEvent("onBeforeTaskDelete",function(t,n){return i.config.cascade_delete&&(a[t]={tasks:r.getSubtreeTasks(i,t),links:r.getSubtreeLinks(i,t)}),!e.deleteAfterConfirmation||(e.setGanttMode("tasks"),e.setUpdated(t,!0,"deleted"),!1)})),this._dataProcessorHandlers.push(i.attachEvent("onAfterTaskDelete",function(t,n){e.setGanttMode("tasks");var r=!o(t),s=i.config.cascade_delete&&a[t];if(r||s){if(s){var l=e.updateMode;e.setUpdateMode("off");var c=a[t];for(var u in c.tasks)o(u)||(e.storeItem(c.tasks[u]),e.setUpdated(u,!0,"deleted"));for(var u in e.setGanttMode("links"),c.links)o(u)||(e.storeItem(c.links[u]),e.setUpdated(u,!0,"deleted"));a[t]=null,"off"!==l&&e.sendAllData(),e.setGanttMode("tasks"),e.setUpdateMode(l)}r&&(e.storeItem(n),e.deleteAfterConfirmation||e.setUpdated(t,!0,"deleted")),"off"===e.updateMode||e._tSend||e.sendAllData()}})),this._dataProcessorHandlers.push(i.attachEvent("onAfterLinkUpdate",function(t,n){i.isLinkExists(t)&&(e.setGanttMode("links"),e.setUpdated(t,!0))})),this._dataProcessorHandlers.push(i.attachEvent("onAfterLinkAdd",function(t,n){i.isLinkExists(t)&&(e.setGanttMode("links"),e.setUpdated(t,!0,"inserted"))})),this._dataProcessorHandlers.push(i.attachEvent("onAfterLinkDelete",function(t,n){e.setGanttMode("links"),!o(t)&&(e.storeItem(n),e.setUpdated(t,!0,"deleted"))})),this._dataProcessorHandlers.push(i.attachEvent("onRowDragEnd",function(t,e){i._sendTaskOrder(t,i.getTask(t))}));var s=null,l=null;this._dataProcessorHandlers.push(i.attachEvent("onTaskIdChange",function(t,n){if(e._waitMode){var r=i.getChildren(n);if(r.length){s=s||{};for(var a=0;a<r.length;a++){var o=this.getTask(r[a]);s[o.id]=o}}var c=function(t){var e=[];return t.$source&&(e=e.concat(t.$source)),t.$target&&(e=e.concat(t.$target)),e}(this.getTask(n));if(c.length){l=l||{};for(a=0;a<c.length;a++){var u=this.getLink(c[a]);l[u.id]=u}}}})),e.attachEvent("onAfterUpdateFinish",function(){(s||l)&&(i.batchUpdate(function(){for(var t in s)i.updateTask(s[t].id);for(var t in l)i.updateLink(l[t].id);s=null,l=null}),s?i._dp.setGanttMode("tasks"):i._dp.setGanttMode("links"))}),e.attachEvent("onBeforeDataSending",function(){if("CUSTOM"===this._tMode)return!0;var t=this._serverProcessor;if("REST-JSON"===this._tMode||"REST"===this._tMode){var e=this._ganttMode;t=t.substring(0,t.indexOf("?")>-1?t.indexOf("?"):t.length),this.serverProcessor=t+("/"===t.slice(-1)?"":"/")+e}else{var n=this._ganttMode+"s";this.serverProcessor=t+i.ajax.urlSeparator(t)+"gantt_mode="+n}return!0}),e.attachEvent("insertCallback",function(t,e,n,r){var a=t.data||i.xml._xmlNodeToJSON(t.firstChild),o={add:i.addTask,isExist:i.isTaskExists};"links"===r&&(o.add=i.addLink,o.isExist=i.isLinkExists),o.isExist.call(i,e)||(a.id=e,o.add.call(i,a))}),e.attachEvent("updateCallback",function(t,e){var n=t.data||i.xml._xmlNodeToJSON(t.firstChild);if(i.isTaskExists(e)){var r=i.getTask(e);for(var a in n){var o=n[a];switch(a){case"id":continue;case"start_date":case"end_date":o=i.defined(i.templates.xml_date)?i.templates.xml_date(o):i.templates.parse_date(o);break;case"duration":r.end_date=i.calculateEndDate({start_date:r.start_date,duration:o,task:r})}r[a]=o}i.updateTask(e),i.refreshData()}}),e.attachEvent("deleteCallback",function(t,e,n,r){var a={delete:i.deleteTask,isExist:i.isTaskExists};"links"===r?(a.delete=i.deleteLink,a.isExist=i.isLinkExists):"assignment"===r&&(a.delete=function(t){i.$data.assignmentsStore.remove(t)},a.isExist=function(t){return i.$data.assignmentsStore.exists(t)}),a.isExist.call(i,e)&&a.delete.call(i,e)}),this.handleResourceCRUD(e,i),this.handleResourceAssignmentCRUD(e,i)},t.prototype.clientSideDelete=function(t,e,n){var i=e.updatedRows.slice(),r=!1;"true_deleted"===n.getUserData(t,"!nativeeditor_status",e._ganttMode)&&(r=!0,e.setUpdated(t,!1));for(var a=0;a<i.length&&!e._in_progress[t];a++)i[a]===t&&("inserted"===n.getUserData(t,"!nativeeditor_status",e._ganttMode)&&(r=!0),e.setUpdated(t,!1));return r},t.prototype.handleResourceAssignmentCRUD=function(t,e){var n=this;if(e.config.resources&&!0===e.config.resources.dataprocessor_assignments){var i=e.getDatastore(e.config.resource_assignment_store),r={},a={};e.attachEvent("onBeforeTaskAdd",function(t,e){return r[t]=!0,!0}),e.attachEvent("onTaskIdChange",function(t,e){delete r[t]}),i.attachEvent("onAfterAdd",function(t,e){r[e.task_id]?function(t){a[t.id]=t,r[t.task_id]=!0}(e):o(e)}),i.attachEvent("onAfterUpdate",function(e,n){i.exists(e)&&(a[e]?o(n):(t.setGanttMode("assignment"),t.setUpdated(e,!0)))}),i.attachEvent("onAfterDelete",function(i,r){t.setGanttMode("assignment"),!n.clientSideDelete(i,t,e)&&(t.storeItem(r),t.setUpdated(i,!0,"deleted"))})}function o(e){var n=e.id;i.exists(n)&&(t.setGanttMode("assignment"),t.setUpdated(n,!0,"inserted")),delete a[n]}},t.prototype.handleResourceCRUD=function(t,e){var n=this;if(e.config.resources&&!0===e.config.resources.dataprocessor_resources){var i=e.getDatastore(e.config.resource_store);i.attachEvent("onAfterAdd",function(e,n){!function(e){var n=e.id;i.exists(n)&&(t.setGanttMode("resource"),t.setUpdated(n,!0,"inserted"))}(n)}),i.attachEvent("onAfterUpdate",function(e,n){i.exists(e)&&(t.setGanttMode("resource"),t.setUpdated(e,!0))}),i.attachEvent("onAfterDelete",function(i,r){t.setGanttMode("resource"),!n.clientSideDelete(i,t,e)&&(t.storeItem(r),t.setUpdated(i,!0,"deleted"))})}},t.prototype.detach=function(){var t=this;i.forEach(this._dataProcessorHandlers,function(e){t.$gantt.detachEvent(e)}),this._dataProcessorHandlers=[]},t}();e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),r=n(2),a=n(0),o=n(224),s=n(223),l=n(222);e.createDataProcessor=function(t){var e,n;t instanceof Function?e=t:t.hasOwnProperty("router")?e=t.router:(t.hasOwnProperty("assignment")||t.hasOwnProperty("link")||t.hasOwnProperty("task"))&&(e=t),n=e?"CUSTOM":t.mode||"REST-JSON";var i=new c(t.url);return i.init(this),i.setTransactionMode({mode:n,router:e},t.batchUpdate),t.deleteAfterConfirmation&&(i.deleteAfterConfirmation=t.deleteAfterConfirmation),i};var c=function(){function t(t){this.serverProcessor=t,this.action_param="!nativeeditor_status",this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._headers=null,this._payload=null,this._postDelim="_",this._routerParametersFormat="parameters",this._waitMode=0,this._in_progress={},this._storage=l.default.create(),this._invalid={},this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),i(this)}return t.prototype.setTransactionMode=function(t,e){"object"==typeof t?(this._tMode=t.mode||this._tMode,a.defined(t.headers)&&(this._headers=t.headers),a.defined(t.payload)&&(this._payload=t.payload),this._tSend=!!e):(this._tMode=t,this._tSend=e),"REST"===this._tMode&&(this._tSend=!1),"JSON"===this._tMode||"REST-JSON"===this._tMode?(this._tSend=!1,this._serializeAsJson=!0,this._headers=this._headers||{},this._headers["Content-Type"]="application/json"):this._headers&&!this._headers["Content-Type"]&&(this._headers["Content-Type"]="application/x-www-form-urlencoded"),"CUSTOM"===this._tMode&&(this._tSend=!1,this._router=t.router)},t.prototype.escape=function(t){return this._utf?encodeURIComponent(t):escape(t)},t.prototype.enableUTFencoding=function(t){this._utf=!!t},t.prototype.getSyncState=function(){return!this.updatedRows.length},t.prototype.setUpdateMode=function(t,e){this.autoUpdate="cell"===t,this.updateMode=t,this.dnd=e},t.prototype.ignore=function(t,e){this._silent_mode=!0,t.call(e||window),this._silent_mode=!1},t.prototype.setUpdated=function(t,e,n){if(!this._silent_mode){var i=this.findRow(t);n=n||"updated";var r=this.$gantt.getUserData(t,this.action_param,this._ganttMode);r&&"updated"===n&&(n=r),e?(this.set_invalid(t,!1),this.updatedRows[i]=t,this.$gantt.setUserData(t,this.action_param,n,this._ganttMode),this._in_progress[t]&&(this._in_progress[t]="wait")):this.is_invalid(t)||(this.updatedRows.splice(i,1),this.$gantt.setUserData(t,this.action_param,"",this._ganttMode)),this.markRow(t,e,n),e&&this.autoUpdate&&this.sendData(t)}},t.prototype.markRow=function(t,e,n){var i="",r=this.is_invalid(t);if(r&&(i=this.styles[r],e=!0),this.callEvent("onRowMark",[t,e,n,r])&&(i=this.styles[e?n:"clear"]+" "+i,this.$gantt[this._methods[0]](t,i),r&&r.details)){i+=this.styles[r+"_cell"];for(var a=0;a<r.details.length;a++)r.details[a]&&this.$gantt[this._methods[1]](t,a,i)}},t.prototype.getActionByState=function(t){return"inserted"===t?"create":"updated"===t?"update":"deleted"===t?"delete":"update"},t.prototype.getState=function(t){return this.$gantt.getUserData(t,this.action_param,this._ganttMode)},t.prototype.is_invalid=function(t){return this._invalid[t]},t.prototype.set_invalid=function(t,e,n){n&&(e={value:e,details:n,toString:function(){return this.value.toString()}}),this._invalid[t]=e},t.prototype.checkBeforeUpdate=function(t){return!0},t.prototype.sendData=function(t){var e=this;if(this.$gantt.editStop&&this.$gantt.editStop(),void 0===t||this._tSend){var n=[];if(this.modes){["task","link","assignment"].forEach(function(t){e.modes[t]&&e.modes[t].updatedRows.length&&n.push(t)})}if(n.length){for(var i=0;i<n.length;i++)this.setGanttMode(n[i]),this.sendAllData();return}return this.sendAllData()}return!this._in_progress[t]&&(this.messages=[],!(!this.checkBeforeUpdate(t)&&this.callEvent("onValidationError",[t,this.messages]))&&void this._beforeSendData(this._getRowData(t),t))},t.prototype.serialize=function(t,e){if(this._serializeAsJson)return this._serializeAsJSON(t);if("string"==typeof t)return t;if(void 0!==e)return this.serialize_one(t,"");var n=[],i=[];for(var r in t)t.hasOwnProperty(r)&&(n.push(this.serialize_one(t[r],r+this._postDelim)),i.push(r));return n.push("ids="+this.escape(i.join(","))),this.$gantt.security_key&&n.push("dhx_security="+this.$gantt.security_key),n.join("&")},t.prototype.serialize_one=function(t,e){if("string"==typeof t)return t;var n=[],i="";for(var r in t)if(t.hasOwnProperty(r)){if(("id"===r||r==this.action_param)&&"REST"===this._tMode)continue;i="string"==typeof t[r]||"number"==typeof t[r]?t[r]:JSON.stringify(t[r]),n.push(this.escape((e||"")+r)+"="+this.escape(i))}return n.join("&")},t.prototype.sendAllData=function(){if(this.updatedRows.length){this.messages=[];var t=!0;if(this._forEachUpdatedRow(function(e){t=t&&this.checkBeforeUpdate(e)}),!t&&!this.callEvent("onValidationError",["",this.messages]))return!1;this._tSend?this._sendData(this._getAllData()):this._forEachUpdatedRow(function(t){if(!this._in_progress[t]){if(this.is_invalid(t))return;this._beforeSendData(this._getRowData(t),t)}})}},t.prototype.findRow=function(t){var e=0;for(e=0;e<this.updatedRows.length&&t!=this.updatedRows[e];e++);return e},t.prototype.defineAction=function(t,e){this._uActions||(this._uActions={}),this._uActions[t]=e},t.prototype.afterUpdateCallback=function(t,e,n,i,r){var a=this;if(this.$gantt){this.setGanttMode(r);var o=t,s="error"!==n&&"invalid"!==n;if(s||this.set_invalid(t,n),this._uActions&&this._uActions[n]&&!this._uActions[n](i))return delete this._in_progress[o];"wait"!==this._in_progress[o]&&this.setUpdated(t,!1);var l=t;switch(n){case"inserted":case"insert":e!=t&&(this.setUpdated(t,!1),this.$gantt[this._methods[2]](t,e),t=e);break;case"delete":case"deleted":if(this.deleteAfterConfirmation&&"task"===this._ganttMode){if("task"===this._ganttMode&&this.$gantt.isTaskExists(t)){this.$gantt.setUserData(t,this.action_param,"true_deleted",this._ganttMode);var c=this.$gantt.getTask(t);this.$gantt.silent(function(){a.$gantt.deleteTask(t)}),this.$gantt.callEvent("onAfterTaskDelete",[t,c]),this.$gantt.render(),delete this._in_progress[o]}return this.callEvent("onAfterUpdate",[t,n,e,i])}return this.$gantt.setUserData(t,this.action_param,"true_deleted",this._ganttMode),this.$gantt[this._methods[3]](t),delete this._in_progress[o],this.callEvent("onAfterUpdate",[t,n,e,i])}"wait"!==this._in_progress[o]?(s&&this.$gantt.setUserData(t,this.action_param,"",this._ganttMode),delete this._in_progress[o]):(delete this._in_progress[o],this.setUpdated(e,!0,this.$gantt.getUserData(t,this.action_param,this._ganttMode))),this.callEvent("onAfterUpdate",[l,n,e,i])}},t.prototype.afterUpdate=function(t,e,n){var i,r=this;i=3===arguments.length?arguments[1]:arguments[4];var a=this.getGanttMode(),o=i.filePath||i.url;a="REST"!==this._tMode&&"REST-JSON"!==this._tMode?-1!==o.indexOf("gantt_mode=links")?"link":-1!==o.indexOf("gantt_mode=assignments")?"assignment":"task":o.indexOf("/link")>=0?"link":o.indexOf("/assignment")>=0?"assignment":"task",this.setGanttMode(a);var s,l=this.$gantt.ajax;try{s=JSON.parse(e.xmlDoc.responseText)}catch(t){e.xmlDoc.responseText.length||(s={})}var c=function(e){var n=s.action||r.getState(e)||"updated",i=s.sid||e[0],o=s.tid||e[0];t.afterUpdateCallback(i,o,n,s,a)};if(s)return Array.isArray(n)&&n.length>1?n.forEach(function(t){return c(t)}):c(n),t.finalizeUpdate(),void this.setGanttMode(a);var u=l.xmltop("data",e.xmlDoc);if(!u)return this.cleanUpdate(n);var d=l.xpath("//data/action",u);if(!d.length)return this.cleanUpdate(n);for(var h=0;h<d.length;h++){var f=d[h],_=f.getAttribute("type"),g=f.getAttribute("sid"),p=f.getAttribute("tid");t.afterUpdateCallback(g,p,_,f,a)}t.finalizeUpdate()},t.prototype.cleanUpdate=function(t){if(t)for(var e=0;e<t.length;e++)delete this._in_progress[t[e]]},t.prototype.finalizeUpdate=function(){this._waitMode&&this._waitMode--,this.callEvent("onAfterUpdateFinish",[]),this.updatedRows.length||this.callEvent("onFullSync",[])},t.prototype.init=function(t){if(!this._initialized){this.$gantt=t,this.$gantt._dp_init&&this.$gantt._dp_init(this),this._setDefaultTransactionMode(),this.styles={updated:"gantt_updated",order:"gantt_updated",inserted:"gantt_inserted",deleted:"gantt_deleted",delete_confirmation:"gantt_deleted",invalid:"gantt_invalid",error:"gantt_error",clear:""},this._methods=["_row_style","setCellTextStyle","_change_id","_delete_task"],s.default(this.$gantt,this);var e=new o.default(this.$gantt,this);e.attach(),this.attachEvent("onDestroy",function(){delete this.setGanttMode,delete this._getRowData,delete this.$gantt._dp,delete this.$gantt._change_id,delete this.$gantt._row_style,delete this.$gantt._delete_task,delete this.$gantt._sendTaskOrder,delete this.$gantt,e.detach()}),this.$gantt.callEvent("onDataProcessorReady",[this]),this._initialized=!0}},t.prototype.setOnAfterUpdate=function(t){this.attachEvent("onAfterUpdate",t)},t.prototype.setOnBeforeUpdateHandler=function(t){this.attachEvent("onBeforeDataSending",t)},t.prototype.setAutoUpdate=function(t,e){var n=this;t=t||2e3,this._user=e||(new Date).valueOf(),this._needUpdate=!1,this._updateBusy=!1,this.attachEvent("onAfterUpdate",this.afterAutoUpdate),this.attachEvent("onFullSync",this.fullSync),setInterval(function(){n.loadUpdate()},t)},t.prototype.afterAutoUpdate=function(t,e,n,i){return"collision"!==e||(this._needUpdate=!0,!1)},t.prototype.fullSync=function(){return this._needUpdate&&(this._needUpdate=!1,this.loadUpdate()),!0},t.prototype.getUpdates=function(t,e){var n=this.$gantt.ajax;if(this._updateBusy)return!1;this._updateBusy=!0,n.get(t,e)},t.prototype.loadUpdate=function(){var t=this,e=this.$gantt.ajax,n=this.$gantt.getUserData(0,"version",this._ganttMode),i=this.serverProcessor+e.urlSeparator(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+n].join("&");i=i.replace("editing=true&",""),this.getUpdates(i,function(n){var i=e.xpath("//userdata",n);t.$gantt.setUserData(0,"version",t._getXmlNodeValue(i[0]),t._ganttMode);var r=e.xpath("//update",n);if(r.length){t._silent_mode=!0;for(var a=0;a<r.length;a++){var o=r[a].getAttribute("status"),s=r[a].getAttribute("id"),l=r[a].getAttribute("parent");switch(o){case"inserted":t.callEvent("insertCallback",[r[a],s,l]);break;case"updated":t.callEvent("updateCallback",[r[a],s,l]);break;case"deleted":t.callEvent("deleteCallback",[r[a],s,l])}}t._silent_mode=!1}t._updateBusy=!1})},t.prototype.destructor=function(){this.callEvent("onDestroy",[]),this.detachAllEvents(),this.updatedRows=[],this._in_progress={},this._invalid={},this._storage.clear(),this._storage=null,this._headers=null,this._payload=null,delete this._initialized},t.prototype.setGanttMode=function(t){"tasks"===t?t="task":"links"===t&&(t="link");var e=this.modes||{},n=this.getGanttMode();n&&(e[n]={_in_progress:this._in_progress,_invalid:this._invalid,_storage:this._storage,updatedRows:this.updatedRows});var i=e[t];i||(i=e[t]={_in_progress:{},_invalid:{},_storage:l.default.create(),updatedRows:[]}),this._in_progress=i._in_progress,this._invalid=i._invalid,this._storage=i._storage,this.updatedRows=i.updatedRows,this.modes=e,this._ganttMode=t},t.prototype.getGanttMode=function(){return this._ganttMode},t.prototype.storeItem=function(t){this._storage.storeItem(t)},t.prototype.url=function(t){this.serverProcessor=this._serverProcessor=t},t.prototype._beforeSendData=function(t,e){if(!this.callEvent("onBeforeUpdate",[e,this.getState(e),t]))return!1;this._sendData(t,e)},t.prototype._serializeAsJSON=function(t){if("string"==typeof t)return t;var e=a.copy(t);return"REST-JSON"===this._tMode&&(delete e.id,delete e[this.action_param]),JSON.stringify(e)},t.prototype._applyPayload=function(t){var e=this.$gantt.ajax;if(this._payload)for(var n in this._payload)t=t+e.urlSeparator(t)+this.escape(n)+"="+this.escape(this._payload[n]);return t},t.prototype._cleanupArgumentsBeforeSend=function(t){var e;if(void 0===t[this.action_param])for(var n in e={},t)e[n]=this._cleanupArgumentsBeforeSend(t[n]);else e=this._cleanupItemBeforeSend(t);return e},t.prototype._cleanupItemBeforeSend=function(t){var e=null;return t&&("deleted"===t[this.action_param]?((e={}).id=t.id,e[this.action_param]=t[this.action_param]):e=t),e},t.prototype._sendData=function(t,e){var n=this;if(t){if(!this.callEvent("onBeforeDataSending",e?[e,this.getState(e),t]:[null,null,t]))return!1;e&&(this._in_progress[e]=(new Date).valueOf());var i=this.$gantt.ajax;if("CUSTOM"!==this._tMode){var r;r={callback:function(i){var r=[];if(e)r.push(e);else if(t)for(var a in t)r.push(a);return n.afterUpdate(n,i,r)},headers:this._headers};var a,o="dhx_version="+this.$gantt.getUserData(0,"version",this._ganttMode),s=this.serverProcessor+(this._user?i.urlSeparator(this.serverProcessor)+["dhx_user="+this._user,o].join("&"):""),l=this._applyPayload(s);switch(this._tMode){case"GET":a=this._cleanupArgumentsBeforeSend(t),r.url=l+i.urlSeparator(l)+this.serialize(a,e),r.method="GET";break;case"POST":a=this._cleanupArgumentsBeforeSend(t),r.url=l,r.method="POST",r.data=this.serialize(a,e);break;case"JSON":a={};var c=this._cleanupItemBeforeSend(t);for(var u in c)u!==this.action_param&&"id"!==u&&"gr_id"!==u&&(a[u]=c[u]);r.url=l,r.method="POST",r.data=JSON.stringify({id:e,action:t[this.action_param],data:a});break;case"REST":case"REST-JSON":switch(l=s.replace(/(&|\?)editing=true/,""),a="",this.getState(e)){case"inserted":r.method="POST",r.data=this.serialize(t,e);break;case"deleted":r.method="DELETE",l=l+("/"===l.slice(-1)?"":"/")+e;break;default:r.method="PUT",r.data=this.serialize(t,e),l=l+("/"===l.slice(-1)?"":"/")+e}r.url=this._applyPayload(l)}return this._waitMode++,i.query(r)}var d=this.getState(e),h=this.getActionByState(d),f=this.getGanttMode(),_=function(t){var i=d||"updated",r=e,a=e;t&&(i=t.action||d,r=t.sid||r,a=t.id||t.tid||a),n.afterUpdateCallback(r,a,i,t,f)},g=void 0;if(this._router instanceof Function)if("object"===this._routerParametersFormat){var p={entity:f,action:h,data:t,id:e};g=this._router(p)}else g=this._router(f,h,t,e);else if(this._router[f]instanceof Function)g=this._router[f](h,t,e);else{var v="Incorrect configuration of gantt.createDataProcessor",m="\nYou need to either add missing properties to the dataProcessor router object or to use a router function.\nSee https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting and https://docs.dhtmlx.com/gantt/api__gantt_createdataprocessor.html for details.";if(!this._router[f])throw new Error(v+": router for the **"+f+"** entity is not defined. "+m);switch(d){case"inserted":if(!this._router[f].create)throw new Error(v+": **create** action for the **"+f+"** entity is not defined. "+m);g=this._router[f].create(t);break;case"deleted":if(!this._router[f].delete)throw new Error(v+": **delete** action for the **"+f+"** entity is not defined. "+m);g=this._router[f].delete(e);break;default:if(!this._router[f].update)throw new Error(v+': **update**" action for the **'+f+"** entity is not defined. "+m);g=this._router[f].update(t,e)}}if(g){if(!g.then&&void 0===g.id&&void 0===g.tid&&void 0===g.action)throw new Error("Incorrect router return value. A Promise or a response object is expected");g.then?g.then(_).catch(function(t){t&&t.action?_(t):_({action:"error",value:t})}):_(g)}else _(null)}},t.prototype._forEachUpdatedRow=function(t){for(var e=this.updatedRows.slice(),n=0;n<e.length;n++){var i=e[n];this.$gantt.getUserData(i,this.action_param,this._ganttMode)&&t.call(this,i)}},t.prototype._setDefaultTransactionMode=function(){this.serverProcessor&&(this.setTransactionMode("POST",!0),this.serverProcessor+=(-1!==this.serverProcessor.indexOf("?")?"&":"?")+"editing=true",this._serverProcessor=this.serverProcessor)},t.prototype._getXmlNodeValue=function(t){return t.firstChild?t.firstChild.nodeValue:""},t.prototype._getAllData=function(){var t={},e=!1;return this._forEachUpdatedRow(function(n){if(!this._in_progress[n]&&!this.is_invalid(n)){var i=this._getRowData(n);this.callEvent("onBeforeUpdate",[n,this.getState(n),i])&&(t[n]=i,e=!0,this._in_progress[n]=(new Date).valueOf())}}),e?t:null},t.prototype._prepareDate=function(t){return this.$gantt.defined(this.$gantt.templates.xml_format)?this.$gantt.templates.xml_format(t):this.$gantt.templates.format_date(t)},t.prototype._prepareArray=function(t,e){var n=this;return e.push(t),t.map(function(t){return r.isDate(t)?n._prepareDate(t):Array.isArray(t)&&!r.arrayIncludes(e,t)?n._prepareArray(t,e):t&&"object"==typeof t&&!r.arrayIncludes(e,t)?n._prepareObject(t,e):t})},t.prototype._prepareObject=function(t,e){var n={};for(var i in e.push(t),t)if("$"!==i.substr(0,1)){var a=t[i];r.isDate(a)?n[i]=this._prepareDate(a):null===a?n[i]="":Array.isArray(a)&&!r.arrayIncludes(e,a)?n[i]=this._prepareArray(a,e):a&&"object"==typeof a&&!r.arrayIncludes(e,a)?n[i]=this._prepareObject(a,e):n[i]=a}return n},t.prototype._prepareDataItem=function(t){var e=this._prepareObject(t,[]);return e[this.action_param]=this.$gantt.getUserData(t.id,this.action_param,this._ganttMode),e},t.prototype.getStoredItem=function(t){return this._storage.getStoredItem(t)},t.prototype._getRowData=function(t){var e,n=this.$gantt;return"task"===this.getGanttMode()?n.isTaskExists(t)&&(e=this.$gantt.getTask(t)):"assignment"===this.getGanttMode()?this.$gantt.$data.assignmentsStore.exists(t)&&(e=this.$gantt.$data.assignmentsStore.getItem(t)):n.isLinkExists(t)&&(e=this.$gantt.getLink(t)),e||(e=this.getStoredItem(t)),e||(e={id:t}),this._prepareDataItem(e)},t}();e.DataProcessor=c},function(t,e,n){var i=n(225);t.exports={DEPRECATED_api:function(t){return new i.DataProcessor(t)},createDataProcessor:i.createDataProcessor,getDataProcessorModes:i.getAvailableModes}},function(t,e,n){var i=n(15);t.exports={bindDataStore:function(t,e){var n=e.getDatastore(t),r=function(t,e){var i=e.getLayers(),r=n.getItem(t);if(r&&n.isVisible(t))for(var a=0;a<i.length;a++)i[a].render_item(r)},a=function(t){for(var e=t.getLayers(),i=0;i<e.length;i++)e[i].clear();for(var r=null,a={},o=0;o<e.length;o++){var s=e[o],l=void 0;if(s.get_visible_range){var c=s.get_visible_range(n);if(void 0!==c.start&&void 0!==c.end){var u=c.start+" - "+c.end;a[u]?l=a[u]:(l=n.getIndexRange(c.start,c.end),a[u]=l)}else{if(void 0===c.ids)throw new Error("Invalid range returned from 'getVisibleRange' of the layer");l=c.ids.map(function(t){return n.getItem(t)})}}else r||(r=n.getVisibleItems()),l=r;s.prepare_data&&s.prepare_data(l),e[o].render_items(l)}},o=function(t){if(t.update_items){var e;if(t.get_visible_range){var i=t.get_visible_range(n);if(void 0!==i.start&&void 0!==i.end)e=n.getIndexRange(i.start,i.end);else{if(void 0===i.ids)throw new Error("Invalid range returned from 'getVisibleRange' of the layer");e=i.ids.map(function(t){return n.getItem(t)})}}else e=n.getVisibleItems();t.prepare_data&&t.prepare_data(e,t),t.update_items(e)}};function s(t){return!!t.$services.getService("state").getState("batchUpdate").batch_update}n.attachEvent("onStoreUpdated",function(n,r,a){if(i(e))return!0;var s=e.$services.getService("layers").getDataRender(t);s&&(s.onUpdateRequest=function(t){o(t)})}),n.attachEvent("onStoreUpdated",function(t,i,r){s(e)||(t&&"move"!=r&&"delete"!=r?(n.callEvent("onBeforeRefreshItem",[i.id]),n.callEvent("onAfterRefreshItem",[i.id])):(n.callEvent("onBeforeRefreshAll",[]),n.callEvent("onAfterRefreshAll",[])))}),n.attachEvent("onAfterRefreshAll",function(){if(i(e))return!0;var n=e.$services.getService("layers").getDataRender(t);n&&!s(e)&&a(n)}),n.attachEvent("onAfterRefreshItem",function(n){if(i(e))return!0;var a=e.$services.getService("layers").getDataRender(t);a&&r(n,a)}),n.attachEvent("onItemOpen",function(){if(i(e))return!0;e.render()}),n.attachEvent("onItemClose",function(){if(i(e))return!0;e.render()}),n.attachEvent("onIdChange",function(a,o){if(i(e))return!0;if(n.callEvent("onBeforeIdChange",[a,o]),!s(e)&&!n.isSilent()){var l=e.$services.getService("layers").getDataRender(t);l?(function(t,e,n,i){for(var r=0;r<t.length;r++)t[r].change_id(e,n)}(l.getLayers(),a,o,n.getItem(o)),r(o,l)):e.render()}})}}},function(t,e){t.exports=function(t){var e=null,n=t._removeItemInner;function i(t){e=null,this.callEvent("onAfterUnselect",[t])}return t._removeItemInner=function(t){return e==t&&i.call(this,t),e&&this.eachItem&&this.eachItem(function(t){t.id==e&&i.call(this,t.id)},t),n.apply(this,arguments)},t.attachEvent("onIdChange",function(e,n){t.getSelectedId()==e&&t.silent(function(){t.unselect(e),t.select(n)})}),{select:function(t){if(t){if(e==t)return e;if(!this._skip_refresh&&!this.callEvent("onBeforeSelect",[t]))return!1;this.unselect(),e=t,this._skip_refresh||(this.refresh(t),this.callEvent("onAfterSelect",[t]))}return e},getSelectedId:function(){return e},isSelected:function(t){return t==e},unselect:function(t){(t=t||e)&&(e=null,this._skip_refresh||(this.refresh(t),i.call(this,t)))}}}},function(t,e,n){var i=n(0);t.exports=function(){return{getLinkCount:function(){return this.$data.linksStore.count()},getLink:function(t){return this.$data.linksStore.getItem(t)},getLinks:function(){return this.$data.linksStore.getItems()},isLinkExists:function(t){return this.$data.linksStore.exists(t)},addLink:function(t){var e=this.$data.linksStore.addItem(t);return this.$data.linksStore.isSilent()&&this.$data.linksStore.fullOrder.push(e),e},updateLink:function(t,e){i.defined(e)||(e=this.getLink(t)),this.$data.linksStore.updateItem(t,e)},deleteLink:function(t){return this.$data.linksStore.removeItem(t)},changeLinkId:function(t,e){return this.$data.linksStore.changeId(t,e)}}}},function(t,e,n){var i=n(0),r=n(2).replaceValidZeroId;t.exports=function(){return{getTask:function(t){t=r(t,this.config.root_id),this.assert(t,"Invalid argument for gantt.getTask");var e=this.$data.tasksStore.getItem(t);return this.assert(e,"Task not found id="+t),e},getTaskByTime:function(t,e){var n=this.$data.tasksStore.getItems(),i=[];if(t||e){t=+t||-1/0,e=+e||1/0;for(var r=0;r<n.length;r++){var a=n[r];+a.start_date<e&&+a.end_date>t&&i.push(a)}}else i=n;return i},isTaskExists:function(t){return!(!this.$data||!this.$data.tasksStore)&&this.$data.tasksStore.exists(t)},updateTask:function(t,e){i.defined(e)||(e=this.getTask(t)),this.$data.tasksStore.updateItem(t,e),this.isTaskExists(t)&&this.refreshTask(t)},addTask:function(t,e,n){return i.defined(t.id)||(t.id=i.uid()),this.isTaskExists(t.id)&&this.getTask(t.id).$index!=t.$index?(t.start_date&&"string"==typeof t.start_date&&(t.start_date=this.date.parseDate(t.start_date,"parse_date")),t.end_date&&"string"==typeof t.end_date&&(t.end_date=this.date.parseDate(t.end_date,"parse_date")),this.$data.tasksStore.updateItem(t.id,t)):(i.defined(e)||(e=this.getParent(t)||0),this.isTaskExists(e)||(e=this.config.root_id),this.setParent(t,e),this.$data.tasksStore.addItem(t,n,e))},deleteTask:function(t){return t=r(t,this.config.root_id),this.$data.tasksStore.removeItem(t)},getTaskCount:function(){return this.$data.tasksStore.count()},getVisibleTaskCount:function(){return this.$data.tasksStore.countVisible()},getTaskIndex:function(t){return this.$data.tasksStore.getBranchIndex(t)},getGlobalTaskIndex:function(t){return t=r(t,this.config.root_id),this.assert(t,"Invalid argument"),this.$data.tasksStore.getIndexById(t)},eachTask:function(t,e,n){return this.$data.tasksStore.eachItem(i.bind(t,n||this),e)},eachParent:function(t,e,n){return this.$data.tasksStore.eachParent(i.bind(t,n||this),e)},changeTaskId:function(t,e){this.$data.tasksStore.changeId(t,e);var n=this.$data.tasksStore.getItem(e),i=[];n.$source&&(i=i.concat(n.$source)),n.$target&&(i=i.concat(n.$target));for(var r=0;r<i.length;r++){var a=this.getLink(i[r]);a.source==t&&(a.source=e),a.target==t&&(a.target=e)}},calculateTaskLevel:function(t){return this.$data.tasksStore.calculateItemLevel(t)},getNext:function(t){return this.$data.tasksStore.getNext(t)},getPrev:function(t){return this.$data.tasksStore.getPrev(t)},getParent:function(t){return this.$data.tasksStore.getParent(t)},setParent:function(t,e,n){return this.$data.tasksStore.setParent(t,e,n)},getSiblings:function(t){return this.$data.tasksStore.getSiblings(t).slice()},getNextSibling:function(t){return this.$data.tasksStore.getNextSibling(t)},getPrevSibling:function(t){return this.$data.tasksStore.getPrevSibling(t)},getTaskByIndex:function(t){var e=this.$data.tasksStore.getIdByIndex(t);return this.isTaskExists(e)?this.getTask(e):null},getChildren:function(t){return this.hasChild(t)?this.$data.tasksStore.getChildren(t).slice():[]},hasChild:function(t){return this.$data.tasksStore.hasChild(t)},open:function(t){this.$data.tasksStore.open(t)},close:function(t){this.$data.tasksStore.close(t)},moveTask:function(t,e,n){return n=r(n,this.config.root_id),this.$data.tasksStore.move.apply(this.$data.tasksStore,arguments)},sort:function(t,e,n,i){var r=!i;this.$data.tasksStore.sort(t,e,n),this.callEvent("onAfterSort",[t,e,n]),r&&this.render()}}}},function(t,e,n){var i=n(0),r=n(230),a=n(229),o=n(49),s=n(47),l=n(228),c=n(227),u=n(15),d=n(2).replaceValidZeroId;function h(){for(var t=this.$services.getService("datastores"),e=[],n=0;n<t.length;n++){var i=this.getDatastore(t[n]);i.$destroyed||e.push(i)}return e}o.default&&(o=o.default);var f=function(){return{createDatastore:function(t){var e="treedatastore"==(t.type||"").toLowerCase()?s:o;if(t){var n=this;t.openInitially=function(){return n.config.open_tree_initially},t.copyOnParse=function(){return n.config.deepcopy_on_parse}}var i=new e(t);if(this.mixin(i,l(i)),t.name){var r="datastore:"+t.name;i.attachEvent("onDestroy",function(){this.$services.dropService(r);for(var e=this.$services.getService("datastores"),n=0;n<e.length;n++)if(e[n]===t.name){e.splice(n,1);break}}.bind(this)),this.$services.dropService(r),this.$services.setService(r,function(){return i});var a=this.$services.getService("datastores");a?a.indexOf(t.name)<0&&a.push(t.name):(a=[],this.$services.setService("datastores",function(){return a}),a.push(t.name)),c.bindDataStore(t.name,this)}return i},getDatastore:function(t){return this.$services.getService("datastore:"+t)},_getDatastores:h,refreshData:function(){var t;u(this)||(t=this.getScrollState()),this.callEvent("onBeforeDataRender",[]);for(var e=h.call(this),n=0;n<e.length;n++)e[n].refresh();this.config.preserve_scroll&&!u(this)&&(t.x||t.y)&&this.scrollTo(t.x,t.y),this.callEvent("onDataRender",[])},isChildOf:function(t,e){return this.$data.tasksStore.isChildOf(t,e)},refreshTask:function(t,e){var n=this.getTask(t),i=this;function r(){if(void 0===e||e){for(var t=0;t<n.$source.length;t++)i.refreshLink(n.$source[t]);for(t=0;t<n.$target.length;t++)i.refreshLink(n.$target[t])}}if(n&&this.isTaskVisible(t))this.$data.tasksStore.refresh(t,!!this.getState("tasksDnd").drag_id||!1===e),r();else if(this.isTaskExists(t)&&this.isTaskExists(this.getParent(t))&&!this._bulk_dnd){this.refreshTask(this.getParent(t));var a=!1;this.eachParent(function(t){(a||this.isSplitTask(t))&&(a=!0)},t),a&&r()}},refreshLink:function(t){this.$data.linksStore.refresh(t,!!this.getState("tasksDnd").drag_id)},silent:function(t){var e=this;e.$data.tasksStore.silent(function(){e.$data.linksStore.silent(function(){t()})})},clearAll:function(){for(var t=h.call(this),e=0;e<t.length;e++)t[e].silent(function(){t[e].clearAll()});for(e=0;e<t.length;e++)t[e].clearAll();this._update_flags(),this.userdata={},this.callEvent("onClear",[]),this.render()},_clear_data:function(){this.$data.tasksStore.clearAll(),this.$data.linksStore.clearAll(),this._update_flags(),this.userdata={}},selectTask:function(t){var e=this.$data.tasksStore;if(!this.config.select_task)return!1;if(t=d(t,this.config.root_id)){var n=this.getSelectedId();e._skipResourceRepaint=!0,e.select(t),e._skipResourceRepaint=!1,n&&e.pull[n].$split_subtask&&n!=t&&this.refreshTask(n),e.pull[t].$split_subtask&&n!=t&&this.refreshTask(t)}return e.getSelectedId()},unselectTask:function(t){var e=this.$data.tasksStore;e.unselect(t),t&&e.pull[t].$split_subtask&&this.refreshTask(t)},isSelectedTask:function(t){return this.$data.tasksStore.isSelected(t)},getSelectedId:function(){return this.$data.tasksStore.getSelectedId()}}};t.exports={create:function(){var t=i.mixin({},f());return i.mixin(t,r()),i.mixin(t,a()),t}}},function(t,e,n){var i=n(0),r=n(231),a=n(46),o=n(16);t.exports=function(t){var e=r.create();i.mixin(t,e);var s=t.createDatastore({name:"task",type:"treeDatastore",rootId:function(){return t.config.root_id},initItem:i.bind(function(e){this.defined(e.id)||(e.id=this.uid()),e.start_date&&(e.start_date=t.date.parseDate(e.start_date,"parse_date")),e.end_date&&(e.end_date=t.date.parseDate(e.end_date,"parse_date"));var n=null;(e.duration||0===e.duration)&&(e.duration=n=1*e.duration),n&&(e.start_date&&!e.end_date?e.end_date=this.calculateEndDate(e):!e.start_date&&e.end_date&&(e.start_date=this.calculateEndDate({start_date:e.end_date,duration:-e.duration,task:e}))),e.progress=Number(e.progress)||0,this._isAllowedUnscheduledTask(e)&&this._set_default_task_timing(e),this._init_task_timing(e),e.start_date&&e.end_date&&this.correctTaskWorkTime(e),e.$source=[],e.$target=[];var r=this.$data.tasksStore.getItem(e.id);return r&&!i.defined(e.open)&&(e.$open=r.$open),void 0===e.parent&&(e.parent=this.config.root_id),e},t),getConfig:function(){return t.config}}),l=t.createDatastore({name:"link",initItem:i.bind(function(t){return this.defined(t.id)||(t.id=this.uid()),t},t)});function c(e){var n=t.isTaskVisible(e);if(!n&&t.isTaskExists(e)){var i=t.getParent(e);t.isTaskExists(i)&&t.isTaskVisible(i)&&(i=t.getTask(i),t.isSplitTask(i)&&(n=!0))}return n}function u(e){if(t.isTaskExists(e.source)){var n=t.getTask(e.source);n.$source=n.$source||[],n.$source.push(e.id)}if(t.isTaskExists(e.target)){var i=t.getTask(e.target);i.$target=i.$target||[],i.$target.push(e.id)}}function d(e){if(t.isTaskExists(e.source))for(var n=t.getTask(e.source),i=0;i<n.$source.length;i++)if(n.$source[i]==e.id){n.$source.splice(i,1);break}if(t.isTaskExists(e.target)){var r=t.getTask(e.target);for(i=0;i<r.$target.length;i++)if(r.$target[i]==e.id){r.$target.splice(i,1);break}}}function h(){for(var e=null,n=t.$data.tasksStore.getItems(),i=0,r=n.length;i<r;i++)(e=n[i]).$source=[],e.$target=[];var a=t.$data.linksStore.getItems();for(i=0,r=a.length;i<r;i++)u(a[i])}function f(t){var e=t.source,n=t.target;for(var i in t.events)!function(t,i){e.attachEvent(t,function(){return n.callEvent(i,Array.prototype.slice.call(arguments))},i)}(i,t.events[i])}t.attachEvent("onDestroy",function(){s.destructor(),l.destructor()}),t.attachEvent("onLinkValidation",function(e){if(t.isLinkExists(e.id)||"predecessor_generated"===e.id)return!0;for(var n=t.getTask(e.source).$source,i=0;i<n.length;i++){var r=t.getLink(n[i]),a=e.source==r.source,o=e.target==r.target,s=e.type==r.type;if(a&&o&&s)return!1}return!0}),s.attachEvent("onBeforeRefreshAll",function(){if(!s._skipTaskRecalculation)for(var e=s.getVisibleItems(),n=0;n<e.length;n++){var i=e[n];i.$index=n,i.$local_index=t.getTaskIndex(i.id),t.resetProjectDates(i)}}),s.attachEvent("onFilterItem",function(e,n){if(t.config.show_tasks_outside_timescale)return!0;var i=null,r=null;if(t.config.start_date&&t.config.end_date){if(t._isAllowedUnscheduledTask(n))return!0;if(i=t.config.start_date.valueOf(),r=t.config.end_date.valueOf(),+n.start_date>r||+n.end_date<+i)return!1}return!0}),s.attachEvent("onIdChange",function(e,n){t._update_flags(e,n);var i=t.getTask(n);s.isSilent()||(i.$split_subtask||i.rollup)&&t.eachParent(function(e){t.refreshTask(e.id)},n)}),s.attachEvent("onAfterUpdate",function(e){if(t._update_parents(e),t.getState("batchUpdate").batch_update)return!0;var n=s.getItem(e);n.$source||(n.$source=[]);for(var i=0;i<n.$source.length;i++)l.refresh(n.$source[i]);for(n.$target||(n.$target=[]),i=0;i<n.$target.length;i++)l.refresh(n.$target[i])}),s.attachEvent("onBeforeItemMove",function(e,n,i){return!o(e,t,s)||(console.log("The placeholder task cannot be moved to another position."),!1)}),s.attachEvent("onAfterItemMove",function(e,n,i){var r=t.getTask(e);null!==this.getNextSibling(e)?r.$drop_target=this.getNextSibling(e):null!==this.getPrevSibling(e)?r.$drop_target="next:"+this.getPrevSibling(e):r.$drop_target="next:null"}),s.attachEvent("onStoreUpdated",function(e,n,i){if("delete"==i&&t._update_flags(e,null),!t.$services.getService("state").getState("batchUpdate").batch_update){if(t.config.fit_tasks&&"paint"!==i){var r=t.getState();a(t);var o=t.getState();if(+r.min_date!=+o.min_date||+r.max_date!=+o.max_date)return t.render(),t.callEvent("onScaleAdjusted",[]),!0}"add"==i||"move"==i||"delete"==i?t.$layout&&("task"!=this.$config.name||"add"!=i&&"delete"!=i||"lightbox"!=this._skipTaskRecalculation&&(this._skipTaskRecalculation=!0),t.$layout.resize()):e||l.refresh()}}),l.attachEvent("onAfterAdd",function(t,e){u(e)}),l.attachEvent("onAfterUpdate",function(t,e){h()}),l.attachEvent("onAfterDelete",function(t,e){d(e)}),l.attachEvent("onBeforeIdChange",function(e,n){d(t.mixin({id:e},t.$data.linksStore.getItem(n))),u(t.$data.linksStore.getItem(n))}),l.attachEvent("onFilterItem",function(e,n){if(!t.config.show_links)return!1;var i=c(n.source),r=c(n.target);return!(!i||!r||t._isAllowedUnscheduledTask(t.getTask(n.source))||t._isAllowedUnscheduledTask(t.getTask(n.target)))&&t.callEvent("onBeforeLinkDisplay",[e,n])}),function(){var e=n(45),i={};t.attachEvent("onBeforeTaskDelete",function(n,r){return i[n]=e.getSubtreeLinks(t,n),!0}),t.attachEvent("onAfterTaskDelete",function(e,n){i[e]&&t.$data.linksStore.silent(function(){for(var n in i[e])t.isLinkExists(n)&&t.$data.linksStore.removeItem(n),d(i[e][n]);i[e]=null})})}(),t.attachEvent("onAfterLinkDelete",function(e,n){t.refreshTask(n.source),t.refreshTask(n.target)}),t.attachEvent("onParse",h),f({source:l,target:t,events:{onItemLoading:"onLinkLoading",onBeforeAdd:"onBeforeLinkAdd",onAfterAdd:"onAfterLinkAdd",onBeforeUpdate:"onBeforeLinkUpdate",onAfterUpdate:"onAfterLinkUpdate",onBeforeDelete:"onBeforeLinkDelete",onAfterDelete:"onAfterLinkDelete",onIdChange:"onLinkIdChange"}}),f({source:s,target:t,events:{onItemLoading:"onTaskLoading",onBeforeAdd:"onBeforeTaskAdd",onAfterAdd:"onAfterTaskAdd",onBeforeUpdate:"onBeforeTaskUpdate",onAfterUpdate:"onAfterTaskUpdate",onBeforeDelete:"onBeforeTaskDelete",onAfterDelete:"onAfterTaskDelete",onIdChange:"onTaskIdChange",onBeforeItemMove:"onBeforeTaskMove",onAfterItemMove:"onAfterTaskMove",onFilterItem:"onBeforeTaskDisplay",onItemOpen:"onTaskOpened",onItemClose:"onTaskClosed",onBeforeSelect:"onBeforeTaskSelected",onAfterSelect:"onTaskSelected",onAfterUnselect:"onTaskUnselected"}}),t.$data={tasksStore:s,linksStore:l}}},function(t,e,n){(function(n,i,r){var a,o,s;function l(t){"@babel/helpers - typeof";return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)} /* @preserve * The MIT License (MIT) * @@ -41,6 +41,6 @@ var i=n(291),r=n(290),a=n(67);function o(){return l.TYPED_ARRAY_SUPPORT?21474836 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * - */!function(n){"object"==l(e)&&void 0!==t?t.exports=n():(o=[],void 0===(s="function"==typeof(a=n)?a.apply(e,o):a)||(t.exports=s))}(function(){var t,e,a;return function t(e,n,i){function r(o,s){if(!n[o]){if(!e[o]){var l="function"==typeof _dereq_&&_dereq_;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};e[o][0].call(u.exports,function(t){var n=e[o][1][t];return r(n||t)},u,u.exports,t,e,n,i)}return n[o].exports}for(var a="function"==typeof _dereq_&&_dereq_,o=0;o<i.length;o++)r(i[o]);return r}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),i=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),i}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,e,i){"use strict";var r;try{throw new Error}catch(t){r=t}var a=t("./schedule"),o=t("./queue"),s=t("./util");function l(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new o(16),this._normalQueue=new o(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=a}function c(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function u(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function d(t){this._normalQueue._pushOne(t),this._queueTick()}function h(t){for(;t.length()>0;)f(t)}function f(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),i=t.shift();e.call(n,i)}}l.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(t,e){e?(n.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),n.exit(2)):this.throwLater(t)},l.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?c.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},l.prototype.invoke=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},l.prototype.settlePromises=function(t){this._trampolineEnabled?d.call(this,t):this._schedule(function(){t._settlePromises()})}):(l.prototype.invokeLater=c,l.prototype.invoke=u,l.prototype.settlePromises=d),l.prototype._drainQueues=function(){h(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,h(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},e.exports=l,e.exports.firstLineError=r},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,i){var r=!1,a=function(t,e){this._reject(e)},o=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(a,a,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},l=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(a){r||(r=!0,t.prototype._propagateFrom=i.propagateFromFunction(),t.prototype._boundValue=i.boundValueFunction());var c=n(a),u=new t(e);u._propagateFrom(this,1);var d=this._target();if(u._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:d,bindingPromise:c};d._then(e,o,void 0,u,h),c._then(s,l,void 0,u,h),u._setOnCancel(c)}else u._resolveCallback(d);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var i;"undefined"!=typeof Promise&&(i=Promise);var r=t("./promise")();r.noConflict=function(){try{Promise===r&&(Promise=i)}catch(t){}return r},e.exports=r},{"./promise":22}],5:[function(t,e,n){"use strict";var i=Object.create;if(i){var r=i(null),a=i(null);r[" size"]=a[" size"]=0}e.exports=function(e){var n=t("./util"),i=n.canEvaluate;n.isIdentifier;function r(t){return function(t,i){var r;if(null!=t&&(r=t[i]),"function"!=typeof r){var a="Object "+n.classString(t)+" has no method '"+n.toString(i)+"'";throw new e.TypeError(a)}return r}(t,this.pop()).apply(t,this)}function a(t){return t[this]}function o(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e;if("number"==typeof t)e=o;else if(i){var n=(void 0)(t);e=null!==n?n:a}else e=a;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,i,r){var a=t("./util"),o=a.tryCatch,s=a.errorObj,l=e._async;e.prototype.break=e.prototype.cancel=function(){if(!r.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(a.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var i=o(t).call(this._boundValue());i===s&&(this._attachExtraTrace(i.e),l.throwLater(i.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),l.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),i=t("./es5").keys,r=n.tryCatch,a=n.errorObj;return function(t,o,s){return function(l){var c=s._boundValue();t:for(var u=0;u<t.length;++u){var d=t[u];if(d===Error||null!=d&&d.prototype instanceof Error){if(l instanceof d)return r(o).call(c,l)}else if("function"==typeof d){var h=r(d).call(c,l);if(h===a)return h;if(h)return r(o).call(c,l)}else if(n.isObject(l)){for(var f=i(d),_=0;_<f.length;++_){var g=f[_];if(d[g]!=l[g])continue t}return r(o).call(c,l)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function i(){this._trace=new i.CapturedTrace(r())}function r(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},i.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},i.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},i.CapturedTrace=null,i.create=function(){if(e)return new i},i.deactivateLongStackTraces=function(){},i.activateLongStackTraces=function(){var n=t.prototype._pushContext,a=t.prototype._popContext,o=t._peekContext,s=t.prototype._peekContext,l=t.prototype._promiseCreated;i.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=a,t._peekContext=o,t.prototype._peekContext=s,t.prototype._promiseCreated=l,e=!1},e=!0,t.prototype._pushContext=i.prototype._pushContext,t.prototype._popContext=i.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},i}},{}],9:[function(t,e,i){"use strict";e.exports=function(e,i){var r,a,o,s=e._getDomain,c=e._async,u=t("./errors").Warning,d=t("./util"),h=t("./es5"),f=d.canAttachTrace,_=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,g=/\((?:timers\.js):\d+:\d+\)/,p=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,m=null,y=!1,k=!(0==d.env("BLUEBIRD_DEBUG")),b=!(0==d.env("BLUEBIRD_WARNINGS")||!k&&!d.env("BLUEBIRD_WARNINGS")),x=!(0==d.env("BLUEBIRD_LONG_STACK_TRACES")||!k&&!d.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=d.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!d.env("BLUEBIRD_W_FORGOTTEN_RETURN"));e.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},e.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},e.prototype._notifyUnhandledRejectionIsHandled=function(){q("rejectionHandled",r,void 0,this)},e.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},e.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q("unhandledRejection",a,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return z(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var e=s();a="function"==typeof t?null===e?t:d.domainBind(e,t):void 0},e.onUnhandledRejectionHandled=function(t){var e=s();r="function"==typeof t?null===e?t:d.domainBind(e,t):void 0};var S=function(){};e.longStackTraces=function(){if(c.haveItemsQueued()&&!tt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!tt.longStackTraces&&Y()){var t=e.prototype._captureStackTrace,n=e.prototype._attachExtraTrace,r=e.prototype._dereferenceTrace;tt.longStackTraces=!0,S=function(){if(c.haveItemsQueued()&&!tt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=n,e.prototype._dereferenceTrace=r,i.deactivateLongStackTraces(),c.enableTrampoline(),tt.longStackTraces=!1},e.prototype._captureStackTrace=H,e.prototype._attachExtraTrace=F,e.prototype._dereferenceTrace=B,i.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},e.hasLongStackTraces=function(){return tt.longStackTraces&&Y()};var T=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return d.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};h.defineProperty(n,"promise",{value:e.promise}),h.defineProperty(n,"reason",{value:e.reason});var i=new CustomEvent(t.toLowerCase(),n);return!d.global.dispatchEvent(i)}}if("function"==typeof Event){t=new Event("CustomEvent");return d.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,h.defineProperty(n,"promise",{value:e.promise}),h.defineProperty(n,"reason",{value:e.reason}),!d.global.dispatchEvent(n)}}return(t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),d.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!d.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),$=d.isNode?function(){return n.emit.apply(n,arguments)}:d.global?function(t){var e="on"+t.toLowerCase(),n=d.global[e];return!!n&&(n.apply(d.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function C(t,e){return{promise:e}}var E={promiseCreated:C,promiseFulfilled:C,promiseRejected:C,promiseResolved:C,promiseCancelled:C,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:C},A=function(t){var e=!1;try{e=$.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=T(t,E[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function D(){return!1}function M(t,e,n){var i=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+d.toString(t));i._attachCancellationCallback(t)})}catch(t){return t}}function I(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?d.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function P(){return this._onCancelField}function N(t){this._onCancelField=t}function O(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}e.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&S()),"warnings"in t){var n=t.warnings;tt.warnings=!!n,w=tt.warnings,d.isObject(n)&&"wForgottenReturn"in n&&(w=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!tt.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=O,e.prototype._propagateFrom=L,e.prototype._onCancel=P,e.prototype._setOnCancel=N,e.prototype._attachCancellationCallback=I,e.prototype._execute=M,R=L,tt.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!tt.monitoring?(tt.monitoring=!0,e.prototype._fireEvent=A):!t.monitoring&&tt.monitoring&&(tt.monitoring=!1,e.prototype._fireEvent=D)),e},e.prototype._fireEvent=D,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._dereferenceTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var R=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function j(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function H(){this._trace=new Q(this._peekContext())}function F(t,e){if(f(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var i=W(t);d.notEnumerableProp(t,"stack",i.message+"\n"+i.stack.join("\n")),d.notEnumerableProp(t,"__stackCleaned__",!0)}}}function B(){this._trace=void 0}function z(t,n,i){if(tt.warnings){var r,a=new u(t);if(n)i._attachExtraTrace(a);else if(tt.longStackTraces&&(r=e._peekContext()))r.attachExtraTrace(a);else{var o=W(a);a.stack=o.message+"\n"+o.stack.join("\n")}A("warning",a)||V(a,"",!0)}}function U(t){for(var e=[],n=0;n<t.length;++n){var i=t[n],r=" (No stack trace)"===i||v.test(i),a=r&&J(i);r&&!a&&(y&&" "!==i.charAt(0)&&(i=" "+i),e.push(i))}return e}function W(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var i=e[n];if(" (No stack trace)"===i||v.test(i))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:U(e)}}function V(t,e,n){if("undefined"!=typeof console){var i;if(d.isObject(t)){var r=t.stack;i=e+m(r,t)}else i=e+String(t);"function"==typeof o?o(i,n):"function"!=typeof console.log&&"object"!==l(console.log)||console.log(i)}}function q(t,e,n,i){var r=!1;try{"function"==typeof e&&(r=!0,"rejectionHandled"===t?e(i):e(n,i))}catch(t){c.throwLater(t)}"unhandledRejection"===t?A(t,n,i)||r||V(n,"Unhandled rejection "):A(t,i)}function G(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():d.toString(t);if(/\[object [a-zA-Z0-9$_]+\]/.test(e))try{e=JSON.stringify(t)}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){if(t.length<41)return t;return t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof Z}var J=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function K(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function Q(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Z(this,Q),e>32&&this.uncycle()}d.inherits(Q,Error),i.CapturedTrace=Q,Q.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},i=0,r=this;void 0!==r;++i)e.push(r),r=r._parent;for(i=(t=this._length=i)-1;i>=0;--i){var a=e[i].stack;void 0===n[a]&&(n[a]=i)}for(i=0;i<t;++i){var o=n[e[i].stack];if(void 0!==o&&o!==i){o>0&&(e[o-1]._parent=void 0,e[o-1]._length=1),e[i]._parent=void 0,e[i]._length=1;var s=i>0?e[i-1]:this;o<t-1?(s._parent=e[o+1],s._parent.uncycle(),s._length=s._parent._length+1):(s._parent=void 0,s._length=1);for(var l=s._length+1,c=i-2;c>=0;--c)e[c]._length=l,l++;return}}}},Q.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=W(t),n=e.message,i=[e.stack],r=this;void 0!==r;)i.push(U(r.stack.split("\n"))),r=r._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var i=t[n],r=e.length-1,a=e[r],o=-1,s=i.length-1;s>=0;--s)if(i[s]===a){o=s;break}for(s=o;s>=0;--s){var l=i[s];if(e[r]!==l)break;e.pop(),r--}e=i}}(i),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(i),d.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,i)),d.notEnumerableProp(t,"__stackCleaned__",!0)}};var Z=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():G(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,m=e;var n=Error.captureStackTrace;return J=function(t){return _.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var i,r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,m=e,y=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){i="stack"in t}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(m=function(t,e){return"string"==typeof t?t:"object"!==l(e)&&"function"!=typeof e||void 0===e.name||void 0===e.message?G(e):e.toString()},null):(v=t,m=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(o=function(t){console.warn(t)},d.isNode&&n.stderr.isTTY?o=function(t,e){var n=e?"[33m":"[31m";console.warn(n+t+"[0m\n")}:d.isNode||"string"!=typeof(new Error).stack||(o=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var tt={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return x&&e.longStackTraces(),{longStackTraces:function(){return tt.longStackTraces},warnings:function(){return tt.warnings},cancellation:function(){return tt.cancellation},monitoring:function(){return tt.monitoring},propagateFromFunction:function(){return R},boundValueFunction:function(){return j},checkForgottenReturns:function(t,e,n,i,r){if(void 0===t&&null!==e&&w){if(void 0!==r&&r._returnedNonUndefined())return;if(0==(65535&i._bitField))return;n&&(n+=" ");var a="",o="";if(e._trace){for(var s=e._trace.stack.split("\n"),l=U(s),c=l.length-1;c>=0;--c){var u=l[c];if(!g.test(u)){var d=u.match(p);d&&(a="at "+d[1]+":"+d[2]+":"+d[3]+" ");break}}if(l.length>0){var h=l[0];for(c=0;c<s.length;++c)if(s[c]===h){c>0&&(o="\n"+s[c-1]);break}}}var f="a promise was created in a "+n+"handler "+a+"but was not returned from it, see http://goo.gl/rRqMUw"+o;i._warn(f,!0,e)}},setBounds:function(t,e){if(Y()){for(var n,i,r=t.stack.split("\n"),a=e.stack.split("\n"),o=-1,s=-1,l=0;l<r.length;++l)if(c=K(r[l])){n=c.fileName,o=c.line;break}for(l=0;l<a.length;++l){var c;if(c=K(a[l])){i=c.fileName,s=c.line;break}}o<0||s<0||!n||!i||n!==i||o>=s||(J=function(t){if(_.test(t))return!0;var e=K(t);return!!(e&&e.fileName===n&&o<=e.line&&e.line<=s)})}},warn:z,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),z(n)},CapturedTrace:Q,fireDomEvent:T,fireGlobalEvent:$}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var i=arguments[1];i instanceof t&&i.suppressUnhandledRejections();return this.caught(n,function(){return i})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,i=t.all;function r(){return i(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(r,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,i){return n(t,i,e,0)._then(r,void 0,void 0,t,void 0)},t.mapSeries=function(t,i){return n(t,i,e,e)}}},{}],12:[function(t,e,n){"use strict";var i,r,a=t("./es5"),o=a.freeze,s=t("./util"),l=s.inherits,c=s.notEnumerableProp;function u(t,e){function n(i){if(!(this instanceof n))return new n(i);c(this,"message","string"==typeof i?i:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(n,Error),n}var d=u("Warning","warning"),h=u("CancellationError","cancellation error"),f=u("TimeoutError","timeout error"),_=u("AggregateError","aggregate error");try{i=TypeError,r=RangeError}catch(t){i=u("TypeError","type error"),r=u("RangeError","range error")}for(var g="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),p=0;p<g.length;++p)"function"==typeof Array.prototype[g[p]]&&(_.prototype[g[p]]=Array.prototype[g[p]]);a.defineProperty(_.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),_.prototype.isOperational=!0;var v=0;function m(t){if(!(this instanceof m))return new m(t);c(this,"name","OperationalError"),c(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(c(this,"message",t.message),c(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}_.prototype.toString=function(){var t=Array(4*v+1).join(" "),e="\n"+t+"AggregateError of:\n";v++,t=Array(4*v+1).join(" ");for(var n=0;n<this.length;++n){for(var i=this[n]===this?"[Circular AggregateError]":this[n]+"",r=i.split("\n"),a=0;a<r.length;++a)r[a]=t+r[a];e+=(i=r.join("\n"))+"\n"}return v--,e},l(m,Error);var y=Error.__BluebirdErrorTypes__;y||(y=o({CancellationError:h,TimeoutError:f,OperationalError:m,RejectionError:m,AggregateError:_}),a.defineProperty(Error,"__BluebirdErrorTypes__",{value:y,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:i,RangeError:r,CancellationError:y.CancellationError,OperationalError:y.OperationalError,TimeoutError:y.TimeoutError,AggregateError:y.AggregateError,Warning:d}},{"./es5":13,"./util":36}],13:[function(t,e,n){var i=function(){"use strict";return void 0===this}();if(i)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:i,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var r={}.hasOwnProperty,a={}.toString,o={}.constructor.prototype,s=function(t){var e=[];for(var n in t)r.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===a.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return o}},isES5:i,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,i){return n(this,t,i,e)},t.filter=function(t,i,r){return n(t,i,r,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=t("./util"),a=e.CancellationError,o=r.errorObj,s=t("./catch_filter")(i);function l(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function c(t){this.finallyHandler=t}function u(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function d(){return f.call(this,this.promise._target()._settledValue())}function h(t){if(!u(this,t))return o.e=t,o}function f(t){var r=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(r._boundValue()):s.call(r._boundValue(),t);if(l===i)return l;if(void 0!==l){r._setReturnedNonUndefined();var f=n(l,r);if(f instanceof e){if(null!=this.cancelPromise){if(f._isCancelled()){var _=new a("late cancellation observer");return r._attachExtraTrace(_),o.e=_,o}f.isPending()&&f._attachCancellationCallback(new c(this))}return f._then(d,h,void 0,this,void 0)}}}return r.isRejected()?(u(this),o.e=t,o):(u(this),t)}return l.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){u(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,i){return"function"!=typeof t?this.then():this._then(n,i,void 0,new l(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,f,f)},e.prototype.tap=function(t){return this._passThrough(t,1,f)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,f);var i,a=new Array(n-1),o=0;for(i=0;i<n-1;++i){var l=arguments[i];if(!r.isObject(l))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+r.classString(l)));a[o++]=l}a.length=o;var c=arguments[i];return this._passThrough(s(a,c,this),1,void 0,f)},l}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=t("./errors").TypeError,l=t("./util"),c=l.errorObj,u=l.tryCatch,d=[];function h(t,n,r,a){if(o.cancellation()){var s=new e(i),l=this._finallyPromise=new e(i);this._promise=s.lastly(function(){return l}),s._captureStackTrace(),s._setOnCancel(this)}else{(this._promise=new e(i))._captureStackTrace()}this._stack=a,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof r?[r].concat(d):d,this._yieldedPromise=null,this._cancellationPhase=!1}l.inherits(h,a),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,o.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t;if(void 0!==this._generator.return)this._promise._pushContext(),t=u(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var n=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=n,this._promise._attachExtraTrace(n),this._promise._pushContext(),t=u(this._generator.throw).call(this._generator,n),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=u(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=u(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===c)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var i=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(i);var a=r(i,this._promise);if(a instanceof e||null!==(a=function(t,n,i){for(var a=0;a<n.length;++a){i._pushContext();var o=u(n[a])(t);if(i._popContext(),o===c){i._pushContext();var s=e.reject(c.e);return i._popContext(),s}var l=r(o,i);if(l instanceof e)return l}return null}(a,this._yieldHandlers,this._promise))){var o=(a=a._target())._bitField;0==(50397184&o)?(this._yieldedPromise=a,a._proxy(this,null)):0!=(33554432&o)?e._async.invoke(this._promiseFulfilled,this,a._value()):0!=(16777216&o)?e._async.invoke(this._promiseRejected,this,a._reason()):this._promiseCancelled()}else this._promiseRejected(new s("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(i))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new s("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,i=h,r=(new Error).stack;return function(){var e=t.apply(this,arguments),a=new i(void 0,void 0,n,r),o=a.promise();return a._generator=e,a._promiseFulfilled(void 0),o}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new s("expecting a function but got "+l.classString(t));d.push(t)},e.spawn=function(t){if(o.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var i=new h(t,this),r=i.promise();return i._run(e.spawn),r}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj;e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=e._getDomain,c=t("./util"),u=c.tryCatch,d=c.errorObj,h=e._async;function f(t,e,n,i){this.constructor$(t),this._promise._captureStackTrace();var r=s();this._callback=null===r?e:c.domainBind(r,e),this._preservedValues=i===a?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],h.invoke(this._asyncInit,this,void 0)}function _(t,n,r,a){if("function"!=typeof n)return i("expecting a function but got "+c.classString(n));var o=0;if(void 0!==r){if("object"!==l(r)||null===r)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(r)));if("number"!=typeof r.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(r.concurrency)));o=r.concurrency}return new f(t,n,o="number"==typeof o&&isFinite(o)&&o>=1?o:0,a).promise()}c.inherits(f,n),f.prototype._asyncInit=function(){this._init$(void 0,-2)},f.prototype._init=function(){},f.prototype._promiseFulfilled=function(t,n){var i=this._values,a=this.length(),s=this._preservedValues,l=this._limit;if(n<0){if(i[n=-1*n-1]=t,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return i[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var c=this._promise,h=this._callback,f=c._boundValue();c._pushContext();var _=u(h).call(f,t,n,a),g=c._popContext();if(o.checkForgottenReturns(_,g,null!==s?"Promise.filter":"Promise.map",c),_===d)return this._reject(_.e),!0;var p=r(_,this._promise);if(p instanceof e){var v=(p=p._target())._bitField;if(0==(50397184&v))return l>=1&&this._inFlight++,i[n]=p,p._proxy(this,-1*(n+1)),!1;if(0==(33554432&v))return 0!=(16777216&v)?(this._reject(p._reason()),!0):(this._cancel(),!0);_=p._value()}i[n]=_}return++this._totalResolved>=a&&(null!==s?this._filter(i,s):this._resolve(i),!0)},f.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var i=t.pop();this._promiseFulfilled(n[i],i)}},f.prototype._filter=function(t,e){for(var n=e.length,i=new Array(n),r=0,a=0;a<n;++a)t[a]&&(i[r++]=e[a]);i.length=r,this._resolve(i)},f.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return _(this,t,e,null)},e.map=function(t,e,n,i){return _(t,e,n,i)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a){var o=t("./util"),s=o.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+o.classString(t));return function(){var i=new e(n);i._captureStackTrace(),i._pushContext();var r=s(t).apply(this,arguments),o=i._popContext();return a.checkForgottenReturns(r,o,"Promise.method",i),i._resolveFromSyncValue(r),i}},e.attempt=e.try=function(t){if("function"!=typeof t)return r("expecting a function but got "+o.classString(t));var i,l=new e(n);if(l._captureStackTrace(),l._pushContext(),arguments.length>1){a.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],u=arguments[2];i=o.isArray(c)?s(t).apply(u,c):s(t).call(u,c)}else i=s(t)();var d=l._popContext();return a.checkForgottenReturns(i,d,"Promise.try",l),l._resolveFromSyncValue(i),l},e.prototype._resolveFromSyncValue=function(t){t===o.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var i=t("./util"),r=i.maybeWrapAsError,a=t("./errors").OperationalError,o=t("./es5");var s=/^(?:name|message|stack|cause)$/;function l(t){var e;if(function(t){return t instanceof Error&&o.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=o.keys(t),r=0;r<n.length;++r){var l=n[r];s.test(l)||(e[l]=t[l])}return e}return i.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,i){if(null!==t){if(n){var a=l(r(n));t._attachExtraTrace(a),t._reject(a)}else if(e){var o=[].slice.call(arguments,1);t._fulfill(o)}else t._fulfill(i);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),i=e._async,r=n.tryCatch,a=n.errorObj;function o(t,e){if(!n.isArray(t))return s.call(this,t,e);var o=r(e).apply(this._boundValue(),[null].concat(t));o===a&&i.throwLater(o.e)}function s(t,e){var n=this._boundValue(),o=void 0===t?r(e).call(n,null):r(e).call(n,null,t);o===a&&i.throwLater(o.e)}function l(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var o=r(e).call(this._boundValue(),t);o===a&&i.throwLater(o.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=o),this._then(n,l,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,e,i){"use strict";e.exports=function(){var i=function(){return new _("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},r=function(){return new A.PromiseInspection(this._target())},a=function(t){return A.reject(new _(t))};function o(){}var s,l={},c=t("./util");s=c.isNode?function(){var t=n.domain;return void 0===t&&(t=null),t}:function(){return null},c.notEnumerableProp(A,"_getDomain",s);var u=t("./es5"),d=t("./async"),h=new d;u.defineProperty(A,"_async",{value:h});var f=t("./errors"),_=A.TypeError=f.TypeError;A.RangeError=f.RangeError;var g=A.CancellationError=f.CancellationError;A.TimeoutError=f.TimeoutError,A.OperationalError=f.OperationalError,A.RejectionError=f.OperationalError,A.AggregateError=f.AggregateError;var p=function(){},v={},m={},y=t("./thenables")(A,p),k=t("./promise_array")(A,p,y,a,o),b=t("./context")(A),x=b.create,w=t("./debuggability")(A,b),S=(w.CapturedTrace,t("./finally")(A,y,m)),T=t("./catch_filter")(m),$=t("./nodeback"),C=c.errorObj,E=c.tryCatch;function A(t){t!==p&&function(t,e){if(null==t||t.constructor!==A)throw new _("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new _("expecting a function but got "+c.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function D(t){this.promise._resolveCallback(t)}function M(t){this.promise._rejectCallback(t,!1)}function I(t){var e=new A(p);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return A.prototype.toString=function(){return"[object Promise]"},A.prototype.caught=A.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,i=new Array(e-1),r=0;for(n=0;n<e-1;++n){var o=arguments[n];if(!c.isObject(o))return a("Catch statement predicate: expecting an object but got "+c.classString(o));i[r++]=o}return i.length=r,t=arguments[n],this.then(void 0,T(i,t,this))}return this.then(void 0,t)},A.prototype.reflect=function(){return this._then(r,r,void 0,this,void 0)},A.prototype.then=function(t,e){if(w.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(n+=", "+c.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},A.prototype.done=function(t,e){this._then(t,e,void 0,void 0,void 0)._setIsFinal()},A.prototype.spread=function(t){return"function"!=typeof t?a("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,v,void 0)},A.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},A.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new k(this).promise()},A.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},A.getNewLibraryCopy=e.exports,A.is=function(t){return t instanceof A},A.fromNode=A.fromCallback=function(t){var e=new A(p);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,i=E(t)($(e,n));return i===C&&e._rejectCallback(i.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},A.all=function(t){return new k(t).promise()},A.cast=function(t){var e=y(t);return e instanceof A||((e=new A(p))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},A.resolve=A.fulfilled=A.cast,A.reject=A.rejected=function(t){var e=new A(p);return e._captureStackTrace(),e._rejectCallback(t,!0),e},A.setScheduler=function(t){if("function"!=typeof t)throw new _("expecting a function but got "+c.classString(t));return h.setScheduler(t)},A.prototype._then=function(t,e,n,i,r){var a=void 0!==r,o=a?r:new A(p),l=this._target(),u=l._bitField;a||(o._propagateFrom(this,3),o._captureStackTrace(),void 0===i&&0!=(2097152&this._bitField)&&(i=0!=(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,o));var d=s();if(0!=(50397184&u)){var f,_,v=l._settlePromiseCtx;0!=(33554432&u)?(_=l._rejectionHandler0,f=t):0!=(16777216&u)?(_=l._fulfillmentHandler0,f=e,l._unsetRejectionIsUnhandled()):(v=l._settlePromiseLateCancellationObserver,_=new g("late cancellation observer"),l._attachExtraTrace(_),f=e),h.invoke(v,l,{handler:null===d?f:"function"==typeof f&&c.domainBind(d,f),promise:o,receiver:i,value:_})}else l._addCallbacks(t,e,o,i,d);return o},A.prototype._length=function(){return 65535&this._bitField},A.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},A.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},A.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},A.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},A.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},A.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},A.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},A.prototype._isFinal=function(){return(4194304&this._bitField)>0},A.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},A.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},A.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},A.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},A.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==l)return void 0===e&&this._isBound()?this._boundValue():e},A.prototype._promiseAt=function(t){return this[4*t-4+2]},A.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},A.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},A.prototype._boundValue=function(){},A.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,i=t._promise0,r=t._receiverAt(0);void 0===r&&(r=l),this._addCallbacks(e,n,i,r,null)},A.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),i=t._rejectionHandlerAt(e),r=t._promiseAt(e),a=t._receiverAt(e);void 0===a&&(a=l),this._addCallbacks(n,i,r,a,null)},A.prototype._addCallbacks=function(t,e,n,i,r){var a=this._length();if(a>=65531&&(a=0,this._setLength(0)),0===a)this._promise0=n,this._receiver0=i,"function"==typeof t&&(this._fulfillmentHandler0=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this._rejectionHandler0=null===r?e:c.domainBind(r,e));else{var o=4*a-4;this[o+2]=n,this[o+3]=i,"function"==typeof t&&(this[o+0]=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this[o+1]=null===r?e:c.domainBind(r,e))}return this._setLength(a+1),a},A.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},A.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(i(),!1);var n=y(t,this);if(!(n instanceof A))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r!==this){var a=r._bitField;if(0==(50397184&a)){var o=this._length();o>0&&r._migrateCallback0(this);for(var s=1;s<o;++s)r._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(r)}else if(0!=(33554432&a))this._fulfill(r._value());else if(0!=(16777216&a))this._reject(r._reason());else{var l=new g("late cancellation observer");r._attachExtraTrace(l),this._reject(l)}}else this._reject(i())}},A.prototype._rejectCallback=function(t,e,n){var i=c.ensureErrorObject(t),r=i===t;if(!r&&!n&&w.warnings()){var a="a promise was rejected with a non-error: "+c.classString(t);this._warn(a,!0)}this._attachExtraTrace(i,!!e&&r),this._reject(t)},A.prototype._resolveFromExecutor=function(t){if(t!==p){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,i=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==i&&e._rejectCallback(i,!0)}},A.prototype._settlePromiseFromHandler=function(t,e,n,i){var r=i._bitField;if(0==(65536&r)){var a;i._pushContext(),e===v?n&&"number"==typeof n.length?a=E(t).apply(this._boundValue(),n):(a=C).e=new _("cannot .spread() a non-array: "+c.classString(n)):a=E(t).call(e,n);var o=i._popContext();0==(65536&(r=i._bitField))&&(a===m?i._reject(n):a===C?i._rejectCallback(a.e,!1):(w.checkForgottenReturns(a,o,"",i,this),i._resolveCallback(a)))}},A.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},A.prototype._followee=function(){return this._rejectionHandler0},A.prototype._setFollowee=function(t){this._rejectionHandler0=t},A.prototype._settlePromise=function(t,e,n,i){var a=t instanceof A,s=this._bitField,l=0!=(134217728&s);0!=(65536&s)?(a&&t._invokeInternalOnCancel(),n instanceof S&&n.isFinallyHandler()?(n.cancelPromise=t,E(e).call(n,i)===C&&t._reject(C.e)):e===r?t._fulfill(r.call(n)):n instanceof o?n._promiseCancelled(t):a||t instanceof k?t._cancel():n.cancel()):"function"==typeof e?a?(l&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,i,t)):e.call(n,i,t):n instanceof o?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(i,t):n._promiseRejected(i,t)):a&&(l&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(i):t._reject(i))},A.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,i=t.receiver,r=t.value;"function"==typeof e?n instanceof A?this._settlePromiseFromHandler(e,i,r,n):e.call(i,r,n):n instanceof A&&n._reject(r)},A.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},A.prototype._settlePromise0=function(t,e,n){var i=this._promise0,r=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(i,t,r,e)},A.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},A.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=i();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this),this._dereferenceTrace())}},A.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},A.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var i=this._fulfillmentHandlerAt(n),r=this._promiseAt(n),a=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(r,i,a,e)}},A.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var i=this._rejectionHandlerAt(n),r=this._promiseAt(n),a=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(r,i,a,e)}},A.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var i=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,i,t),this._fulfillPromises(e,i)}this._setLength(0)}this._clearCancellationData()},A.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},A.defer=A.pending=function(){return w.deprecated("Promise.defer","new Promise"),{promise:new A(p),resolve:D,reject:M}},c.notEnumerableProp(A,"_makeSelfResolutionError",i),t("./method")(A,p,y,a,w),t("./bind")(A,p,y,w),t("./cancel")(A,k,a,w),t("./direct_resolve")(A),t("./synchronous_inspection")(A),t("./join")(A,k,y,p,h,s),A.Promise=A,A.version="3.5.4",t("./map.js")(A,k,a,y,p,w),t("./call_get.js")(A),t("./using.js")(A,a,y,x,p,w),t("./timers.js")(A,p,w),t("./generators.js")(A,a,p,y,o,w),t("./nodeify.js")(A),t("./promisify.js")(A,p),t("./props.js")(A,k,y,a),t("./race.js")(A,p,y,a),t("./reduce.js")(A,k,a,y,p,w),t("./settle.js")(A,k,w),t("./some.js")(A,k,a),t("./filter.js")(A,p),t("./each.js")(A,p),t("./any.js")(A),c.toFastProperties(A),c.toFastProperties(A.prototype),I({a:1}),I({b:2}),I({c:3}),I(1),I(function(){}),I(void 0),I(!1),I(new A(p)),w.setBounds(d.firstLineError,c.lastLineError),A}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a){var o=t("./util");o.isArray;function s(t){var i=this._promise=new e(n);t instanceof e&&i._propagateFrom(t,3),i._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return o.inherits(s,a),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,a){var s=i(this._values,this._promise);if(s instanceof e){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,a);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=o.asArray(s)))0!==s.length?this._iterate(s):-5===a?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(a));else{var c=r("expecting an array or an iterable object but got "+o.classString(s)).reason();this._promise._rejectCallback(c,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var r=this._promise,a=!1,o=null,s=0;s<n;++s){var l=i(t[s],r);o=l instanceof e?(l=l._target())._bitField:null,a?null!==o&&l.suppressUnhandledRejections():null!==o?0==(50397184&o)?(l._proxy(this,s),this._values[s]=l):a=0!=(33554432&o)?this._promiseFulfilled(l._value(),s):0!=(16777216&o)?this._promiseRejected(l._reason(),s):this._promiseCancelled(s):a=this._promiseFulfilled(l,s)}a||r._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){return this._values[e]=t,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var i={},r=t("./util"),a=t("./nodeback"),o=r.withAppended,s=r.maybeWrapAsError,c=r.canEvaluate,u=t("./errors").TypeError,d={__isPromisified__:!0},h=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),f=function(t){return r.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function _(t){return!h.test(t)}function g(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function p(t,e,n){var i=r.getDataPropertyOrDefault(t,e+n,d);return!!i&&g(i)}function v(t,e,n,i){for(var a=r.inheritedDataKeys(t),o=[],s=0;s<a.length;++s){var l=a[s],c=t[l],d=i===f||f(l,c,t);"function"!=typeof c||g(c)||p(t,l,e)||!i(l,c,t,d)||o.push(l,c)}return function(t,e,n){for(var i=0;i<t.length;i+=2){var r=t[i];if(n.test(r))for(var a=r.replace(n,""),o=0;o<t.length;o+=2)if(t[o]===a)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(o,e,n),o}var m=function(t){return t.replace(/([$])/,"\\$")};var y=c?void 0:function(t,l,c,u,d,h){var f=function(){return this}(),_=t;function g(){var r=l;l===i&&(r=this);var c=new e(n);c._captureStackTrace();var u="string"==typeof _&&this!==f?this[_]:t,d=a(c,h);try{u.apply(r,o(arguments,d))}catch(t){c._rejectCallback(s(t),!0,!0)}return c._isFateSealed()||c._setAsyncGuaranteed(),c}return"string"==typeof _&&(t=u),r.notEnumerableProp(g,"__isPromisified__",!0),g};function k(t,e,n,a,o){for(var s=new RegExp(m(e)+"$"),l=v(t,e,s,n),c=0,u=l.length;c<u;c+=2){var d=l[c],h=l[c+1],f=d+e;if(a===y)t[f]=y(d,i,d,h,e,o);else{var _=a(h,function(){return y(d,i,d,h,e,o)});r.notEnumerableProp(_,"__isPromisified__",!0),t[f]=_}}return r.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+r.classString(t));if(g(t))return t;var n=function(t,e,n){return y(t,e,void 0,t,null,n)}(t,void 0===(e=Object(e)).context?i:e.context,!!e.multiArgs);return r.copyDescriptors(t,n,_),n},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!==l(t))throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,i=e.suffix;"string"!=typeof i&&(i="Async");var a=e.filter;"function"!=typeof a&&(a=f);var o=e.promisifier;if("function"!=typeof o&&(o=y),!r.isIdentifier(i))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=r.inheritedDataKeys(t),c=0;c<s.length;++c){var d=t[s[c]];"constructor"!==s[c]&&r.isClass(d)&&(k(d.prototype,i,a,o,n),k(d,i,a,o,n))}return k(t,i,a,o,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,i,r){var a,o=t("./util"),s=o.isObject,l=t("./es5");"function"==typeof Map&&(a=Map);var c=function(){var t=0,e=0;function n(n,i){this[t]=n,this[t+e]=i,t++}return function(i){e=i.size,t=0;var r=new Array(2*i.size);return i.forEach(n,r),r}}();function u(t){var e,n=!1;if(void 0!==a&&t instanceof a)e=c(t),n=!0;else{var i=l.keys(t),r=i.length;e=new Array(2*r);for(var o=0;o<r;++o){var s=i[o];e[o]=t[s],e[o+r]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function d(t){var n,a=i(t);return s(a)?(n=a instanceof e?a._then(e.props,void 0,void 0,void 0,void 0):new u(a).promise(),a instanceof e&&n._propagateFrom(a,2),n):r("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}o.inherits(u,n),u.prototype._init=function(){},u.prototype._promiseFulfilled=function(t,e){if(this._values[e]=t,++this._totalResolved>=this._length){var n;if(this._isMap)n=function(t){for(var e=new a,n=t.length/2|0,i=0;i<n;++i){var r=t[n+i],o=t[i];e.set(r,o)}return e}(this._values);else{n={};for(var i=this.length(),r=0,o=this.length();r<o;++r)n[this._values[r+i]]=this._values[r]}return this._resolve(n),!0}return!1},u.prototype.shouldCopyValues=function(){return!1},u.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return d(this)},e.props=function(t){return d(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function i(t){this._capacity=t,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(t){return this._capacity<t},i.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1),this[this._front+e&this._capacity-1]=t,this._length=e+1},i.prototype.push=function(t,e,n){var i=this.length()+3;if(this._willBeOverCapacity(i))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var r=this._front+i-3;this._checkCapacity(i);var a=this._capacity-1;this[r+0&a]=t,this[r+1&a]=e,this[r+2&a]=n,this._length=i},i.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},i.prototype.length=function(){return this._length},i.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},i.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t,function(t,e,n,i,r){for(var a=0;a<r;++a)n[a+i]=t[a+e],t[a+e]=void 0}(this,0,this,e,this._front+this._length&e-1)},e.exports=i},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,i,r){var a=t("./util"),o=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var l=i(t);if(l instanceof e)return o(l);if(null===(t=a.asArray(t)))return r("expecting an array or an iterable object but got "+a.classString(t));var c=new e(n);void 0!==s&&c._propagateFrom(s,3);for(var u=c._fulfill,d=c._reject,h=0,f=t.length;h<f;++h){var _=t[h];(void 0!==_||h in t)&&e.cast(_)._then(u,d,void 0,c,null)}return c}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=e._getDomain,l=t("./util"),c=l.tryCatch;function u(t,n,i,r){this.constructor$(t);var o=s();this._fn=null===o?n:l.domainBind(o,n),void 0!==i&&(i=e.resolve(i))._attachCancellationCallback(this),this._initialValue=i,this._currentCancellable=null,this._eachValues=r===a?Array(this._length):0===r?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function d(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function h(t,e,n,r){return"function"!=typeof e?i("expecting a function but got "+l.classString(e)):new u(t,e,n,r).promise()}function f(t){this.accum=t,this.array._gotAccum(t);var n=r(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(_,void 0,void 0,this,void 0)):_.call(this,n)}function _(t){var n,i=this.array,r=i._promise,a=c(i._fn);r._pushContext(),(n=void 0!==i._eachValues?a.call(r._boundValue(),t,this.index,this.length):a.call(r._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(i._currentCancellable=n);var s=r._popContext();return o.checkForgottenReturns(n,s,void 0!==i._eachValues?"Promise.each":"Promise.reduce",r),n}l.inherits(u,n),u.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==a&&this._eachValues.push(t)},u.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},u.prototype._init=function(){},u.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},u.prototype.shouldCopyValues=function(){return!1},u.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},u.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},u.prototype._iterate=function(t){var n,i;this._values=t;var r=t.length;if(void 0!==this._initialValue?(n=this._initialValue,i=0):(n=e.resolve(t[0]),i=1),this._currentCancellable=n,!n.isRejected())for(;i<r;++i){var a={accum:null,value:t[i],index:i,length:r,array:this};n=n._then(f,void 0,void 0,a,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(d,d,void 0,n,this)},e.prototype.reduce=function(t,e){return h(this,t,e,null)},e.reduce=function(t,e,n,i){return h(t,e,n,i)}}},{"./util":36}],29:[function(t,e,a){"use strict";var o,s=t("./util"),l=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var c=i.setImmediate,u=n.nextTick;o=s.isRecentNode?function(t){c.call(i,t)}:function(t){u.call(n,t)}}else if("function"==typeof l&&"function"==typeof l.resolve){var d=l.resolve();o=function(t){d.then(t)}}else o="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,i=document.createElement("div");new MutationObserver(function(){t.classList.toggle("foo"),n=!1}).observe(i,e);return function(r){var a=new MutationObserver(function(){a.disconnect(),r()});a.observe(t,e),n||(n=!0,i.classList.toggle("foo"))}}();e.exports=o},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=e.PromiseInspection;function a(t){this.constructor$(t)}t("./util").inherits(a,n),a.prototype._promiseResolved=function(t,e){return this._values[t]=e,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new r;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new r;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return i.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=t("./util"),a=t("./errors").RangeError,o=t("./errors").AggregateError,s=r.isArray,l={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function u(t,e){if((0|e)!==e||e<0)return i("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new c(t),r=n.promise();return n.setHowMany(e),n.init(),r}r.inherits(c,n),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new o,e=this.length();e<this._values.length;++e)this._values[e]!==l&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return u(t,e)},e.prototype.some=function(t){return u(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},a=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},o=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return o.call(this._target())},t.prototype.isRejected=function(){return a.call(this._target())},t.prototype.isFulfilled=function(){return r.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),i.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var i=t("./util"),r=i.errorObj,a=i.isObject;var o={}.hasOwnProperty;return function(t,s){if(a(t)){if(t instanceof e)return t;var l=function(t){try{return function(t){return t.then}(t)}catch(t){return r.e=t,r}}(t);if(l===r){s&&s._pushContext();var c=e.reject(l.e);return s&&s._popContext(),c}if("function"==typeof l)return function(t){try{return o.call(t,"_promise0")}catch(t){return!1}}(t)?(c=new e(n),t._then(c._fulfill,c._reject,void 0,c,null),c):function(t,a,o){var s=new e(n),l=s;o&&o._pushContext(),s._captureStackTrace(),o&&o._popContext();var c=!0,u=i.tryCatch(a).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,c,!0),s=null)});return c=!1,s&&u===r&&(s._rejectCallback(u.e,!0,!0),s=null),l}(t,l,s)}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=t("./util"),a=e.TimeoutError;function o(t){this.handle=t}o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return l(+this).thenReturn(t)},l=e.delay=function(t,r){var a,l;return void 0!==r?(a=e.resolve(r)._then(s,null,null,t,void 0),i.cancellation()&&r instanceof e&&a._setOnCancel(r)):(a=new e(n),l=setTimeout(function(){a._fulfill()},+t),i.cancellation()&&a._setOnCancel(new o(l)),a._captureStackTrace()),a._setAsyncGuaranteed(),a};e.prototype.delay=function(t){return l(t,this)};function c(t){return clearTimeout(this.handle),t}function u(t){throw clearTimeout(this.handle),t}e.prototype.timeout=function(t,e){var n,s;t=+t;var l=new o(setTimeout(function(){n.isPending()&&function(t,e,n){var i;i="string"!=typeof e?e instanceof Error?e:new a("operation timed out"):new a(e),r.markAsOriginatingFromRejection(i),t._attachExtraTrace(i),t._reject(i),null!=n&&n.cancel()}(n,e,s)},t));return i.cancellation()?(s=this.then(),(n=s._then(c,u,void 0,l,void 0))._setOnCancel(l)):n=this._then(c,u,void 0,l,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=t("./util"),l=t("./errors").TypeError,c=t("./util").inherits,u=s.errorObj,d=s.tryCatch,h={};function f(t){setTimeout(function(){throw t},0)}function _(t,n){var r=0,o=t.length,s=new e(a);return function a(){if(r>=o)return s._fulfill();var l=function(t){var e=i(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[r++]);if(l instanceof e&&l._isDisposable()){try{l=i(l._getDisposer().tryDispose(n),t.promise)}catch(t){return f(t)}if(l instanceof e)return l._then(a,f,null,null,null)}a()}(),s}function g(t,e,n){this._data=t,this._promise=e,this._context=n}function p(t,e,n){this.constructor$(t,e,n)}function v(t){return g.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}g.prototype.data=function(){return this._data},g.prototype.promise=function(){return this._promise},g.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},g.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var i=e!==h?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,i},g.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(p,g),p.prototype.doDispose=function(t,e){return this.data().call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var i=this[n];i instanceof e&&i.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var r,a=arguments[t-1];if("function"!=typeof a)return n("expecting a function but got "+s.classString(a));var l=!0;2===t&&Array.isArray(arguments[0])?(t=(r=arguments[0]).length,l=!1):(r=arguments,t--);for(var c=new m(t),h=0;h<t;++h){var f=r[h];if(g.isDisposer(f)){var p=f;(f=f.promise())._setDisposable(p)}else{var y=i(f);y instanceof e&&(f=y._then(v,null,null,{resources:c,index:h},void 0))}c[h]=f}var k=new Array(c.length);for(h=0;h<k.length;++h)k[h]=e.resolve(c[h]).reflect();var b=e.all(k).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return u.e=n.error(),u;if(!n.isFulfilled())return void b.cancel();t[e]=n.value()}x._pushContext(),a=d(a);var i=l?a.apply(void 0,t):a(t),r=x._popContext();return o.checkForgottenReturns(i,r,"Promise.using",x),i}),x=b.lastly(function(){var t=new e.PromiseInspection(b);return _(c,t)});return c.promise=x,x._setOnCancel(c),x},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,r());throw new l}}},{"./errors":12,"./util":36}],36:[function(t,e,r){"use strict";var a=t("./es5"),o="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==i?i:void 0!==this?this:null;function d(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function h(t){return c=t,d}var f=function(t,e){var n={}.hasOwnProperty;function i(){for(var i in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,i)&&"$"!==i.charAt(i.length-1)&&(this[i+"$"]=e.prototype[i])}return i.prototype=e.prototype,t.prototype=new i,t.prototype};function _(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function g(t){return"function"==typeof t||"object"===l(t)&&null!==t}function p(t){return _(t)?new Error(E(t)):t}function v(t,e){var n,i=t.length,r=new Array(i+1);for(n=0;n<i;++n)r[n]=t[n];return r[n]=e,r}function m(t,e,n){if(!a.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var i=Object.getOwnPropertyDescriptor(t,e);return null!=i?null==i.get&&null==i.set?i.value:n:void 0}function y(t,e,n){if(_(t))return t;var i={value:n,configurable:!0,enumerable:!1,writable:!0};return a.defineProperty(t,e,i),t}function k(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(a.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var i=[],r=Object.create(null);null!=t&&!e(t);){var o;try{o=n(t)}catch(t){return i}for(var s=0;s<o.length;++s){var l=o[s];if(!r[l]){r[l]=!0;var c=Object.getOwnPropertyDescriptor(t,l);null!=c&&null==c.get&&null==c.set&&i.push(l)}}t=a.getPrototypeOf(t)}return i}}var i={}.hasOwnProperty;return function(n){if(e(n))return[];var r=[];t:for(var a in n)if(i.call(n,a))r.push(a);else{for(var o=0;o<t.length;++o)if(i.call(t[o],a))continue t;r.push(a)}return r}}(),x=/this\s*\.\s*\S+\s*=/;function w(t){try{if("function"==typeof t){var e=a.names(t.prototype),n=a.isES5&&e.length>1,i=e.length>0&&!(1===e.length&&"constructor"===e[0]),r=x.test(t+"")&&a.names(t).length>0;if(n||i||r)return!0}return!1}catch(t){return!1}}function S(t){function e(){}e.prototype=t;var n=new e;function i(){return l(n.foo)}return i(),i(),t}var T=/^[a-z$_][a-z$_0-9]*$/i;function $(t){return T.test(t)}function C(t,e,n){for(var i=new Array(t),r=0;r<t;++r)i[r]=e+r+n;return i}function E(t){try{return t+""}catch(t){return"[no string representation]"}}function A(t){return t instanceof Error||null!==t&&"object"===l(t)&&"string"==typeof t.message&&"string"==typeof t.name}function D(t){try{y(t,"isOperational",!0)}catch(t){}}function M(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function I(t){return A(t)&&a.propertyIsWritable(t,"stack")}var P="stack"in new Error?function(t){return I(t)?t:new Error(E(t))}:function(t){if(I(t))return t;try{throw new Error(E(t))}catch(t){return t}};function N(t){return{}.toString.call(t)}function O(t,e,n){for(var i=a.names(t),r=0;r<i.length;++r){var o=i[r];if(n(o))try{a.defineProperty(e,o,a.getDescriptor(t,o))}catch(t){}}}var L=function(t){return a.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var R="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],i=t[Symbol.iterator]();!(e=i.next()).done;)n.push(e.value);return n};L=function(t){return a.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?R(t):null}}var j=void 0!==n&&"[object process]"===N(n).toLowerCase(),H=void 0!==n&&void 0!==n.env;function F(t){return H?n.env[t]:void 0}function B(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function z(t,e){return t.bind(e)}var U={isClass:w,isIdentifier:$,inheritedDataKeys:b,getDataPropertyOrDefault:m,thrower:k,isArray:a.isArray,asArray:L,notEnumerableProp:y,isPrimitive:_,isObject:g,isError:A,canEvaluate:o,errorObj:s,tryCatch:h,inherits:f,withAppended:v,maybeWrapAsError:p,toFastProperties:S,filledRange:C,toString:E,canAttachTrace:I,ensureErrorObject:P,originatesFromRejection:M,markAsOriginatingFromRejection:D,classString:N,copyDescriptors:O,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:j,hasEnvVariables:H,env:F,global:u,getNativePromise:B,domainBind:z};U.isRecentNode=U.isNode&&function(){var t;return n.versions&&n.versions.node?t=n.versions.node.split(".").map(Number):n.version&&(t=n.version.split(".").map(Number)),0===t[0]&&t[1]>10||t[0]>0}(),U.isNode&&U.toFastProperties(n);try{throw new Error}catch(t){U.lastLineError=t}e.exports=U},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(9),n(4),n(57).setImmediate)},function(t,e,n){t.exports=n(233)},function(t,e,n){var i=n(0);t.exports=function(){var t={};return{getState:function(e){if(t[e])return t[e].method();var n={};for(var r in t)t[r].internal||i.mixin(n,t[r].method(),!0);return n},registerProvider:function(e,n,i){t[e]={method:n,internal:i}},unregisterProvider:function(e){delete t[e]}}}},function(t,e){t.exports=function(t){var e={};function n(n,i,r){r=r||n;var a=t.config,o=t.templates;t.config[n]&&e[r]!=a[n]&&(i&&o[r]||(o[r]=t.date.date_to_str(a[n]),e[r]=a[n]))}return{initTemplates:function(){var e=t.locale.labels;e.gantt_save_btn=e.icon_save,e.gantt_cancel_btn=e.icon_cancel,e.gantt_delete_btn=e.icon_delete;var i=t.date,r=i.date_to_str,a=t.config,o=r(a.xml_date||a.date_format,a.server_utc),s=i.str_to_date(a.xml_date||a.date_format,a.server_utc);n("date_scale",!0,void 0,t.config,t.templates),n("date_grid",!0,"grid_date_format",t.config,t.templates),n("task_date",!0,void 0,t.config,t.templates),t.mixin(t.templates,{xml_format:void 0,format_date:o,xml_date:void 0,parse_date:s,progress_text:function(t,e,n){return""},grid_header_class:function(t,e){return""},task_text:function(t,e,n){return n.text},task_class:function(t,e,n){return""},task_end_date:function(e){return t.templates.task_date(e)},grid_row_class:function(t,e,n){return""},task_row_class:function(t,e,n){return""},timeline_cell_class:function(t,e){return""},timeline_cell_content:function(t,e){return""},scale_cell_class:function(t){return""},scale_row_class:function(t){return""},grid_indent:function(t){return"<div class='gantt_tree_indent'></div>"},grid_folder:function(t){return"<div class='gantt_tree_icon gantt_folder_"+(t.$open?"open":"closed")+"'></div>"},grid_file:function(t){return"<div class='gantt_tree_icon gantt_file'></div>"},grid_open:function(t){return"<div class='gantt_tree_icon gantt_"+(t.$open?"close":"open")+"'></div>"},grid_blank:function(t){return"<div class='gantt_tree_icon gantt_blank'></div>"},date_grid:function(e,n,i){return n&&t.isUnscheduledTask(n)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(n):t.templates.grid_date_format(e,i)},task_time:function(e,n,i){return t.isUnscheduledTask(i)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(i):t.templates.task_date(e)+" - "+t.templates.task_end_date(n)},task_unscheduled_time:function(t){return""},time_picker:r(a.time_picker),link_class:function(t){return""},link_description:function(e){var n=t.getTask(e.source),i=t.getTask(e.target);return"<b>"+n.text+"</b> – <b>"+i.text+"</b>"},drag_link:function(e,n,i,r){e=t.getTask(e);var a=t.locale.labels,o="<b>"+e.text+"</b> "+(n?a.link_start:a.link_end)+"<br/>";return i&&(o+="<b> "+(i=t.getTask(i)).text+"</b> "+(r?a.link_start:a.link_end)+"<br/>"),o},drag_link_class:function(e,n,i,r){var a="";return e&&i&&(a=" "+(t.isLinkAllowed(e,i,n,r)?"gantt_link_allow":"gantt_link_deny")),"gantt_link_tooltip"+a},tooltip_date_format:i.date_to_str("%Y-%m-%d"),tooltip_text:function(e,n,i){return"<b>Task:</b> "+i.text+"<br/><b>Start date:</b> "+t.templates.tooltip_date_format(e)+"<br/><b>End date:</b> "+t.templates.tooltip_date_format(n)}})},initTemplate:n}}},function(t,e,n){var i=n(5),r=n(0),a=n(50),o=n(21),s=n(1);t.exports=function(t){function e(t){return{target:t.target||t.srcElement,pageX:t.pageX,pageY:t.pageY,clientX:t.clientX,clientY:t.clientY,metaKey:t.metaKey,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,altKey:t.altKey}}function n(n,a){this._obj=n,this._settings=a||{},i(this);var o=this.getInputMethods();this._drag_start_timer=null,t.attachEvent("onGanttScroll",r.bind(function(t,e){this.clearDragTimer()},this));for(var l={passive:!1},c=0;c<o.length;c++)r.bind(function(i){t.event(n,i.down,r.bind(function(o){i.accessor(o)&&(a.preventDefault&&a.selector&&s.closest(o.target,a.selector)&&o.preventDefault(),t.config.touch&&o.timeStamp&&o.timeStamp-0<300||(this._settings.original_target=e(o),t.config.touch?(this.clearDragTimer(),this._drag_start_timer=setTimeout(r.bind(function(){t.getState().lightbox||this.dragStart(n,o,i)},this),t.config.touch_drag)):this.dragStart(n,o,i)))},this),l);var o=document.body;t.event(o,i.up,r.bind(function(t){i.accessor(t)&&this.clearDragTimer()},this),l)},this)(o[c])}return n.prototype={traceDragEvents:function(e,n){var i=r.bind(function(t){return this.dragMove(e,t,n.accessor)},this);r.bind(function(t){return this.dragScroll(e,t)},this);var o=r.bind(function(t){if(!this.config.started||!r.defined(this.config.updates_per_second)||a(this,this.config.updates_per_second)){var e=i(t);if(e)try{t&&t.preventDefault&&t.cancelable&&t.preventDefault()}catch(t){}return e}},this),l=s.getRootNode(t.$root),c=this.config.mousemoveContainer||s.getRootNode(t.$root),u={passive:!1},d=r.bind(function(i){return t.eventRemove(c,n.move,o),t.eventRemove(l,n.up,d,u),this.dragEnd(e)},this);t.event(c,n.move,o,u),t.event(l,n.up,d,u)},checkPositionChange:function(t){var e=t.x-this.config.pos.x,n=t.y-this.config.pos.y;return Math.sqrt(Math.pow(Math.abs(e),2)+Math.pow(Math.abs(n),2))>this.config.sensitivity},initDnDMarker:function(){var t=this.config.marker=document.createElement("div");t.className="gantt_drag_marker",t.innerHTML="",document.body.appendChild(t)},backupEventTarget:function(n,i){if(t.config.touch){var r=i(n),a=r.target||r.srcElement,o=a.cloneNode(!0);this.config.original_target=e(r),this.config.original_target.target=o,this.config.backup_element=a,a.parentNode.appendChild(o),a.style.display="none",(this.config.mousemoveContainer||document.body).appendChild(a)}},getInputMethods:function(){var e=[];if(e.push({move:"mousemove",down:"mousedown",up:"mouseup",accessor:function(t){return t}}),t.config.touch){var n=!0;try{document.createEvent("TouchEvent")}catch(t){n=!1}n?e.push({move:"touchmove",down:"touchstart",up:"touchend",accessor:function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:document.elementFromPoint(t.touches[0].clientX,t.touches[0].clientY),pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t}}):o.navigator.pointerEnabled?e.push({move:"pointermove",down:"pointerdown",up:"pointerup",accessor:function(t){return"mouse"==t.pointerType?null:t}}):o.navigator.msPointerEnabled&&e.push({move:"MSPointerMove",down:"MSPointerDown",up:"MSPointerUp",accessor:function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t}})}return e},clearDragTimer:function(){this._drag_start_timer&&(clearTimeout(this._drag_start_timer),this._drag_start_timer=null)},dragStart:function(e,n,i){this.config&&this.config.started||(this.config={obj:e,marker:null,started:!1,pos:this.getPosition(n),sensitivity:4},this._settings&&r.mixin(this.config,this._settings,!0),this.traceDragEvents(e,i),t._prevent_touch_scroll=!0,document.body.className+=" gantt_noselect",t.config.touch&&this.dragMove(e,n,i.accessor))},dragMove:function(e,n,i){var r=i(n);if(!r)return!1;if(!this.config.marker&&!this.config.started){var a=this.getPosition(r);if(t.config.touch||this.checkPositionChange(a)){if(this.config.started=!0,this.config.ignore=!1,!1===this.callEvent("onBeforeDragStart",[e,this.config.original_target]))return this.config.ignore=!0,!1;this.backupEventTarget(n,i),this.initDnDMarker(),t._touch_feedback(),this.callEvent("onAfterDragStart",[e,this.config.original_target])}else this.config.ignore=!0}if(!this.config.ignore){if(n.targetTouches&&!r.target)return;return r.pos=this.getPosition(r),this.config.marker.style.left=r.pos.x+"px",this.config.marker.style.top=r.pos.y+"px",this.callEvent("onDragMove",[e,r]),!0}return!1},dragEnd:function(e){var n=this.config.backup_element;n&&n.parentNode&&n.parentNode.removeChild(n),t._prevent_touch_scroll=!1,this.config.marker&&(this.config.marker.parentNode.removeChild(this.config.marker),this.config.marker=null,this.callEvent("onDragEnd",[])),this.config.started=!1,document.body.className=document.body.className.replace(" gantt_noselect","")},getPosition:function(t){var e=0,n=0;return t.pageX||t.pageY?(e=t.pageX,n=t.pageY):(t.clientX||t.clientY)&&(e=t.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=t.clientY+document.body.scrollTop+document.documentElement.scrollTop),{x:e,y:n}}},n}},function(t,e,n){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}n.r(e),n.d(e,"Client",function(){return r});var r=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var n=e.url,i=e.token;this._url=n,this._token=i,this._mode=1,this._seed=1,this._queue=[],this.data={},this.api={},this._events={}}return function(t,e,n){e&&i(t.prototype,e),n&&i(t,n)}(t,[{key:"headers",value:function(){return{Accept:"application/json","Content-Type":"application/json","Remote-Token":this._token}}},{key:"fetch",value:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t,e){var n={credentials:"include",headers:this.headers()};return e&&(n.method="POST",n.body=e),fetch(t,n).then(function(t){return t.json()})})},{key:"load",value:function(t){var e=this;return t&&(this._url=t),this.fetch(this._url).then(function(t){return e.parse(t)})}},{key:"parse",value:function(t){var e=t.key,n=t.websocket;for(var i in e&&(this._token=t.key),t.data)this.data[i]=t.data[i];for(var r in t.api){var a=this.api[r]={},o=t.api[r];for(var s in o)a[s]=this._wrapper(r+"."+s)}return n&&this.connect(),this}},{key:"connect",value:function(){var t=this,e=this._socket;e&&(this._socket=null,e.onclose=function(){},e.close()),this._mode=2,this._socket=function(e,n,i,r){var a=n;"/"===a[0]&&(a=document.location.protocol+"//"+document.location.host+n);var o=-1!=(a=a.replace(/^http(s|):/,"ws$1:")).indexOf("?")?"&":"?";a="".concat(a).concat(o,"token=").concat(i,"&ws=1");var s=new WebSocket(a);return s.onclose=function(){return setTimeout(function(){return e.connect()},2e3)},s.onmessage=function(n){var i=JSON.parse(n.data);switch(i.action){case"result":e.result(i.body,[]);break;case"event":e.fire(i.body.name,i.body.value);break;case"start":t._mode=3,t._send(),t._resubscribe();break;default:e.onError(i.data)}},s}(this,this._url,this._token)}},{key:"_wrapper",value:function(t){return function(){var e=this,n=[].slice.call(arguments),i=null,r=new Promise(function(r,a){i={data:{id:e._uid(),name:t,args:n},status:1,resolve:r,reject:a},e._queue.push(i)});return this.onCall(i,r),3===this._mode?this._send(i):setTimeout(function(){return e._send()},1),r}.bind(this)}},{key:"_uid",value:function(){return(this._seed++).toString()}},{key:"_send",value:function(t){var e=this;if(2!=this._mode){var n=t?[t]:this._queue.filter(function(t){return 1===t.status});if(n.length){var i=n.map(function(t){return t.status=2,t.data});3!==this._mode?this.fetch(this._url,JSON.stringify(i)).catch(function(t){return e.onError(t)}).then(function(t){return e.result(t,i)}):this._socket.send(JSON.stringify({action:"call",body:i}))}}else setTimeout(function(){return e._send()},100)}},{key:"result",value:function(t,e){var n={};if(t)for(var i=0;i<t.length;i++)n[t[i].id]=t[i];else for(var r=0;r<e.length;r++)n[e[r].id]={id:e[r].id,error:"Network Error",data:null};for(var a=this._queue.length-1;a>=0;a--){var o=this._queue[a],s=n[o.data.id];s&&(this.onResponse(o,s),s.error?o.reject(s.error):o.resolve(s.data),this._queue.splice(a,1))}}},{key:"on",value:function(t,e){var n=this._uid(),i=this._events[t],r=!!i;return r||(i=this._events[t]=[]),i.push({id:n,handler:e}),r||3!=this._mode||this._socket.send(JSON.stringify({action:"subscribe",name:t})),{name:t,id:n}}},{key:"_resubscribe",value:function(){if(3==this._mode)for(var t in this._events)this._socket.send(JSON.stringify({action:"subscribe",name:t}))}},{key:"detach",value:function(t){if(t){var e=t.id,n=t.name,i=this._events[n];if(i){var r=i.filter(function(t){return t.id!=e});r.length?this._events[n]=r:(delete this._events[n],3==this._mode&&this._socket.send(JSON.stringify({action:"unsubscribe",name:n})))}}else{if(3==this._mode)for(var a in this._events)this._socket.send(JSON.stringify({action:"unsubscribe",key:a}));this._events={}}}},{key:"fire",value:function(t,e){var n=this._events[t];if(n)for(var i=0;i<n.length;i++)n[i].handler(e)}},{key:"onError",value:function(t){return null}},{key:"onCall",value:function(t,e){}},{key:"onResponse",value:function(t,e){}}]),t}()},function(t,e,n){var i=n(238);t.exports={remoteEvents:function(t,e){var n=this,r=new i.Client({url:t,token:e});r.fetch=function(t,e){var n={headers:this.headers()};return e&&(n.method="POST",n.body=e),fetch(t,n).then(function(t){return t.json()})},this._ready=r.load().then(function(t){return n._remote=t}),this.ready=function(){return this._ready},this.on=function(t,e){this.ready().then(function(n){if("string"==typeof t)n.on(t,e);else for(var i in t)n.on(i,t[i])})}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={date_to_str:function(t,e,n){return function(i){return t.replace(/%[a-zA-Z]/g,function(t){switch(t){case"%d":return e?n.date.to_fixed(i.getUTCDate()):n.date.to_fixed(i.getDate());case"%m":return e?n.date.to_fixed(i.getUTCMonth()+1):n.date.to_fixed(i.getMonth()+1);case"%j":return e?i.getUTCDate():i.getDate();case"%n":return e?i.getUTCMonth()+1:i.getMonth()+1;case"%y":return e?n.date.to_fixed(i.getUTCFullYear()%100):n.date.to_fixed(i.getFullYear()%100);case"%Y":return e?i.getUTCFullYear():i.getFullYear();case"%D":return e?n.locale.date.day_short[i.getUTCDay()]:n.locale.date.day_short[i.getDay()];case"%l":return e?n.locale.date.day_full[i.getUTCDay()]:n.locale.date.day_full[i.getDay()];case"%M":return e?n.locale.date.month_short[i.getUTCMonth()]:n.locale.date.month_short[i.getMonth()];case"%F":return e?n.locale.date.month_full[i.getUTCMonth()]:n.locale.date.month_full[i.getMonth()];case"%h":return e?n.date.to_fixed((i.getUTCHours()+11)%12+1):n.date.to_fixed((i.getHours()+11)%12+1);case"%g":return e?(i.getUTCHours()+11)%12+1:(i.getHours()+11)%12+1;case"%G":return e?i.getUTCHours():i.getHours();case"%H":return e?n.date.to_fixed(i.getUTCHours()):n.date.to_fixed(i.getHours());case"%i":return e?n.date.to_fixed(i.getUTCMinutes()):n.date.to_fixed(i.getMinutes());case"%a":return e?i.getUTCHours()>11?"pm":"am":i.getHours()>11?"pm":"am";case"%A":return e?i.getUTCHours()>11?"PM":"AM":i.getHours()>11?"PM":"AM";case"%s":return e?n.date.to_fixed(i.getUTCSeconds()):n.date.to_fixed(i.getSeconds());case"%W":return e?n.date.to_fixed(n.date.getUTCISOWeek(i)):n.date.to_fixed(n.date.getISOWeek(i));default:return t}})}},str_to_date:function(t,e,n){return function(i){for(var r=[0,0,1,0,0,0],a=i.match(/[a-zA-Z]+|[0-9]+/g),o=t.match(/%[a-zA-Z]/g),s=0;s<o.length;s++)switch(o[s]){case"%j":case"%d":r[2]=a[s]||1;break;case"%n":case"%m":r[1]=(a[s]||1)-1;break;case"%y":r[0]=1*a[s]+(a[s]>50?1900:2e3);break;case"%g":case"%G":case"%h":case"%H":r[3]=a[s]||0;break;case"%i":r[4]=a[s]||0;break;case"%Y":r[0]=a[s]||0;break;case"%a":case"%A":r[3]=r[3]%12+("am"===(a[s]||"").toLowerCase()?0:12);break;case"%s":r[5]=a[s]||0;break;case"%M":r[1]=n.locale.date.month_short_hash[a[s]]||0;break;case"%F":r[1]=n.locale.date.month_full_hash[a[s]]||0}return e?new Date(Date.UTC(r[0],r[1],r[2],r[3],r[4],r[5])):new Date(r[0],r[1],r[2],r[3],r[4],r[5])}}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={date_to_str:function(t,e,n){t=t.replace(/%[a-zA-Z]/g,function(t){switch(t){case"%d":return'"+to_fixed(date.get'+(e?"UTC":"")+'Date())+"';case"%m":return'"+to_fixed((date.get'+(e?"UTC":"")+'Month()+1))+"';case"%j":return'"+date.get'+(e?"UTC":"")+'Date()+"';case"%n":return'"+(date.get'+(e?"UTC":"")+'Month()+1)+"';case"%y":return'"+to_fixed(date.get'+(e?"UTC":"")+'FullYear()%100)+"';case"%Y":return'"+date.get'+(e?"UTC":"")+'FullYear()+"';case"%D":return'"+locale.date.day_short[date.get'+(e?"UTC":"")+'Day()]+"';case"%l":return'"+locale.date.day_full[date.get'+(e?"UTC":"")+'Day()]+"';case"%M":return'"+locale.date.month_short[date.get'+(e?"UTC":"")+'Month()]+"';case"%F":return'"+locale.date.month_full[date.get'+(e?"UTC":"")+'Month()]+"';case"%h":return'"+to_fixed((date.get'+(e?"UTC":"")+'Hours()+11)%12+1)+"';case"%g":return'"+((date.get'+(e?"UTC":"")+'Hours()+11)%12+1)+"';case"%G":return'"+date.get'+(e?"UTC":"")+'Hours()+"';case"%H":return'"+to_fixed(date.get'+(e?"UTC":"")+'Hours())+"';case"%i":return'"+to_fixed(date.get'+(e?"UTC":"")+'Minutes())+"';case"%a":return'"+(date.get'+(e?"UTC":"")+'Hours()>11?"pm":"am")+"';case"%A":return'"+(date.get'+(e?"UTC":"")+'Hours()>11?"PM":"AM")+"';case"%s":return'"+to_fixed(date.get'+(e?"UTC":"")+'Seconds())+"';case"%W":return'"+to_fixed(getISOWeek(date))+"';case"%w":return'"+to_fixed(getWeek(date))+"';default:return t}});var i=new Function("date","to_fixed","locale","getISOWeek","getWeek",'return "'+t+'";');return function(t){return i(t,n.date.to_fixed,n.locale,n.date.getISOWeek,n.date.getWeek)}},str_to_date:function(t,e,n){for(var i="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",r=t.match(/%[a-zA-Z]/g),a=0;a<r.length;a++)switch(r[a]){case"%j":case"%d":i+="set[2]=temp["+a+"]||1;";break;case"%n":case"%m":i+="set[1]=(temp["+a+"]||1)-1;";break;case"%y":i+="set[0]=temp["+a+"]*1+(temp["+a+"]>50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":i+="set[3]=temp["+a+"]||0;";break;case"%i":i+="set[4]=temp["+a+"]||0;";break;case"%Y":i+="set[0]=temp["+a+"]||0;";break;case"%a":case"%A":i+="set[3]=set[3]%12+((temp["+a+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":i+="set[5]=temp["+a+"]||0;";break;case"%M":i+="set[1]=locale.date.month_short_hash[temp["+a+"]]||0;";break;case"%F":i+="set[1]=locale.date.month_full_hash[temp["+a+"]]||0;"}var o="set[0],set[1],set[2],set[3],set[4],set[5]";e&&(o=" Date.UTC("+o+")");var s=new Function("date","locale","var set=[0,0,1,0,0,0]; "+i+" return new Date("+o+");");return function(t){return s(t,n.locale)}}};e.default=i},function(t,e,n){var i=n(241).default,r=n(240).default;t.exports=function(t){var e=null;function n(){var n=!1;return"auto"===t.config.csp?(null===e&&function(){try{new Function("canUseCsp = false;")}catch(t){e=!0}}(),n=e):n=t.config.csp,n}return{init:function(){for(var e=t.locale,n=e.date.month_short,i=e.date.month_short_hash={},r=0;r<n.length;r++)i[n[r]]=r;for(n=e.date.month_full,i=e.date.month_full_hash={},r=0;r<n.length;r++)i[n[r]]=r},date_part:function(t){var e=new Date(t);return t.setHours(0),this.hour_start(t),t.getHours()&&(t.getDate()<e.getDate()||t.getMonth()<e.getMonth()||t.getFullYear()<e.getFullYear())&&t.setTime(t.getTime()+36e5*(24-t.getHours())),t},time_part:function(t){return(t.valueOf()/1e3-60*t.getTimezoneOffset())%86400},week_start:function(e){var n=e.getDay();return t.config.start_on_monday&&(0===n?n=6:n--),this.date_part(this.add(e,-1*n,"day"))},month_start:function(t){return t.setDate(1),this.date_part(t)},quarter_start:function(t){this.month_start(t);var e,n=t.getMonth();return e=n>=9?9:n>=6?6:n>=3?3:0,t.setMonth(e),t},year_start:function(t){return t.setMonth(0),this.month_start(t)},day_start:function(t){return this.date_part(t)},hour_start:function(t){return t.getMinutes()&&t.setMinutes(0),this.minute_start(t),t},minute_start:function(t){return t.getSeconds()&&t.setSeconds(0),t.getMilliseconds()&&t.setMilliseconds(0),t},_add_days:function(t,e,n){t.setDate(t.getDate()+e);var i=e>=0,r=!n.getHours()&&t.getHours(),a=t.getDate()<=n.getDate()||t.getMonth()<n.getMonth()||t.getFullYear()<n.getFullYear();return i&&r&&a&&t.setTime(t.getTime()+36e5*(24-t.getHours())),e>1&&r&&t.setHours(0),t},add:function(t,e,n){var i=new Date(t.valueOf());switch(n){case"day":i=this._add_days(i,e,t);break;case"week":i=this._add_days(i,7*e,t);break;case"month":i.setMonth(i.getMonth()+e);break;case"year":i.setYear(i.getFullYear()+e);break;case"hour":i.setTime(i.getTime()+60*e*60*1e3);break;case"minute":i.setTime(i.getTime()+60*e*1e3);break;default:return this["add_"+n](t,e,n)}return i},add_quarter:function(t,e){return this.add(t,3*e,"month")},to_fixed:function(t){return t<10?"0"+t:t},copy:function(t){return new Date(t.valueOf())},date_to_str:function(e,a){var o=i;return n()&&(o=r),o.date_to_str(e,a,t)},str_to_date:function(e,a){var o=i;return n()&&(o=r),o.str_to_date(e,a,t)},getISOWeek:function(e){return t.date._getWeekNumber(e,!0)},_getWeekNumber:function(t,e){if(!t)return!1;var n=t.getDay();e&&0===n&&(n=7);var i=new Date(t.valueOf());i.setDate(t.getDate()+(4-n));var r=i.getFullYear(),a=Math.round((i.getTime()-new Date(r,0,1).getTime())/864e5);return 1+Math.floor(a/7)},getWeek:function(e){return t.date._getWeekNumber(e,t.config.start_on_monday)},getUTCISOWeek:function(e){return t.date.getISOWeek(e)},convert_to_utc:function(t){return new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())},parseDate:function(e,n){return e&&!e.getFullYear&&("function"!=typeof n&&(n="string"==typeof n?"parse_date"===n||"xml_date"===n?t.defined(t.templates.xml_date)?t.templates.xml_date:t.templates.parse_date:t.defined(t.templates[n])?t.templates[n]:t.date.str_to_date(n):t.defined(t.templates.xml_date)?t.templates.xml_date:t.templates.parse_date),e=e?n(e):null),e}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if("string"==typeof t||"number"==typeof t)return t;var e="";for(var n in t){var i="";t.hasOwnProperty(n)&&(i=n+"="+(i="string"==typeof t[n]?encodeURIComponent(t[n]):"number"==typeof t[n]?t[n]:encodeURIComponent(JSON.stringify(t[n]))),e.length&&(i="&"+i),e+=i)}return e}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(11),a=n(21),o=n(243).default;function s(t,e){var n={method:t};if(0===e.length)throw new Error("Arguments list of query is wrong.");if(1===e.length)return"string"==typeof e[0]?(n.url=e[0],n.async=!0):(n.url=e[0].url,n.async=e[0].async||!0,n.callback=e[0].callback,n.headers=e[0].headers),e[0].data?"string"!=typeof e[0].data?n.data=o(e[0].data):n.data=e[0].data:n.data="",n;switch(n.url=e[0],t){case"GET":case"DELETE":n.callback=e[1],n.headers=e[2];break;case"POST":case"PUT":e[1]?"string"!=typeof e[1]?n.data=o(e[1]):n.data=e[1]:n.data="",n.callback=e[2],n.headers=e[3]}return n}t.exports=function(t){return{cache:!0,method:"get",parse:function(t){return"string"!=typeof t?t:(t=t.replace(/^[\s]+/,""),"undefined"==typeof DOMParser||r.isIE?void 0!==a.ActiveXObject&&((e=new a.ActiveXObject("Microsoft.XMLDOM")).async="false",e.loadXML(t)):e=(new DOMParser).parseFromString(t,"text/xml"),e);var e},xmltop:function(e,n,i){if(void 0===n.status||n.status<400){var r=n.responseXML?n.responseXML||n:this.parse(n.responseText||n);if(r&&null!==r.documentElement&&!r.getElementsByTagName("parsererror").length)return r.getElementsByTagName(e)[0]}return-1!==i&&t.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],i]),document.createElement("DIV")},xpath:function(t,e){if(e.nodeName||(e=e.responseXML||e),r.isIE)return e.selectNodes(t)||[];for(var n,i=[],a=(e.ownerDocument||e).evaluate(t,e,null,XPathResult.ANY_TYPE,null);n=a.iterateNext();)i.push(n);return i},query:function(t){return this._call(t.method||"GET",t.url,t.data||"",t.async||!0,t.callback,t.headers)},get:function(t,e,n){var i=s("GET",arguments);return this.query(i)},getSync:function(t,e){var n=s("GET",arguments);return n.async=!1,this.query(n)},put:function(t,e,n,i){var r=s("PUT",arguments);return this.query(r)},del:function(t,e,n){var i=s("DELETE",arguments);return this.query(i)},post:function(t,e,n,i){1==arguments.length?e="":2==arguments.length&&"function"==typeof e&&(e,e="");var r=s("POST",arguments);return this.query(r)},postSync:function(t,e,n){e=null===e?"":String(e);var i=s("POST",arguments);return i.async=!1,this.query(i)},_call:function(e,n,r,o,s,l){return new t.Promise(function(c,u){var d=void 0!==("undefined"==typeof XMLHttpRequest?"undefined":i(XMLHttpRequest))?new XMLHttpRequest:new a.ActiveXObject("Microsoft.XMLHTTP"),h=null!==navigator.userAgent.match(/AppleWebKit/)&&null!==navigator.userAgent.match(/Qt/)&&null!==navigator.userAgent.match(/Safari/);o&&(d.onreadystatechange=function(){if(4==d.readyState||h&&3==d.readyState){if((200!=d.status||""===d.responseText)&&!t.callEvent("onAjaxError",[d]))return;setTimeout(function(){"function"==typeof s&&s.apply(a,[{xmlDoc:d,filePath:n}]),c(d),"function"==typeof s&&(s=null,d=null)},0)}});var f=!this||!this.cache;if("GET"==e&&f&&(n+=(n.indexOf("?")>=0?"&":"?")+"dhxr"+(new Date).getTime()+"=1"),d.open(e,n,o),l)for(var _ in l)d.setRequestHeader(_,l[_]);else"POST"==e.toUpperCase()||"PUT"==e||"DELETE"==e?d.setRequestHeader("Content-Type","application/x-www-form-urlencoded"):"GET"==e&&(r=null);if(d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.send(r),!o)return{xmlDoc:d,filePath:n}})},urlSeparator:function(t){return-1!=t.indexOf("?")?"&":"?"}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),t.exports=function(){return{layout:{css:"gantt_container",rows:[{cols:[{view:"grid",scrollX:"scrollHor",scrollY:"scrollVer"},{resizer:!0,width:1},{view:"timeline",scrollX:"scrollHor",scrollY:"scrollVer"},{view:"scrollbar",id:"scrollVer"}]},{view:"scrollbar",id:"scrollHor",height:20}]},links:{finish_to_start:"0",start_to_start:"1",finish_to_finish:"2",start_to_finish:"3"},types:{task:"task",project:"project",milestone:"milestone"},auto_types:!1,duration_unit:"day",work_time:!1,correct_work_time:!1,skip_off_time:!1,cascade_delete:!0,autosize:!1,autosize_min_width:0,autoscroll:!0,autoscroll_speed:30,deepcopy_on_parse:!1,show_links:!0,show_task_cells:!0,static_background:!1,static_background_cells:!0,branch_loading:!1,branch_loading_property:"$has_child",show_loading:!1,show_chart:!0,show_grid:!0,min_duration:36e5,date_format:"%d-%m-%Y %H:%i",xml_date:void 0,start_on_monday:!0,server_utc:!1,show_progress:!0,fit_tasks:!1,select_task:!0,scroll_on_click:!0,smart_rendering:!0,preserve_scroll:!0,readonly:!1,container_resize_timeout:20,date_grid:"%Y-%m-%d",drag_links:!0,drag_progress:!0,drag_resize:!0,drag_project:!1,drag_move:!0,drag_mode:{resize:"resize",progress:"progress",move:"move",ignore:"ignore"},round_dnd_dates:!0,link_wrapper_width:20,root_id:0,autofit:!1,columns:[{name:"text",tree:!0,width:"*",resize:!0},{name:"start_date",align:"center",resize:!0},{name:"duration",align:"center"},{name:"add",width:44}],scale_offset_minimal:!0,inherit_scale_class:!1,scales:[{unit:"day",step:1,date:"%d %M"}],time_step:60,duration_step:1,task_date:"%d %F %Y",time_picker:"%H:%i",task_attribute:"data-task-id",link_attribute:"data-link-id",layer_attribute:"data-layer",buttons_left:["gantt_save_btn","gantt_cancel_btn"],_migrate_buttons:{dhx_save_btn:"gantt_save_btn",dhx_cancel_btn:"gantt_cancel_btn",dhx_delete_btn:"gantt_delete_btn"},buttons_right:["gantt_delete_btn"],lightbox:{sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"time",type:"duration",map_to:"auto"}],project_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",readonly:!0,map_to:"auto"}],milestone_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",single_date:!0,map_to:"auto"}]},drag_lightbox:!0,sort:!1,details_on_create:!0,details_on_dblclick:!0,initial_scroll:!0,task_scroll_offset:100,order_branch:!1,order_branch_free:!1,task_height:void 0,bar_height:"full",min_column_width:70,min_grid_column_width:70,grid_resizer_column_attribute:"data-column-index",keep_grid_width:!1,grid_resize:!1,grid_elastic_columns:!1,show_tasks_outside_timescale:!1,show_unscheduled:!0,resize_rows:!1,task_grid_row_resizer_attribute:"data-row-index",min_task_grid_row_height:30,readonly_property:"readonly",editable_property:"editable",calendar_property:"calendar_id",resource_calendars:{},dynamic_resource_calendars:!1,inherit_calendar:!1,type_renderers:{},open_tree_initially:!1,optimize_render:!0,prevent_default_scroll:!1,show_errors:!0,wai_aria_attributes:!0,smart_scales:!0,rtl:!1,placeholder_task:!1,horizontal_scroll_key:"shiftKey",drag_timeline:{useKey:void 0,ignore:".gantt_task_line, .gantt_task_link"},drag_multiple:!0,csp:"auto"}}},function(t,e){t.exports=function(){var t={};return{services:{},setService:function(e,n){t[e]=n},getService:function(e){return t[e]?t[e]():null},dropService:function(e){t[e]&&delete t[e]},destructor:function(){for(var e in t)if(t[e]){var n=t[e];n&&n.destructor&&n.destructor()}t=null}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t){var e=this;for(var n in this.addExtension=function(t,n){e._extensions[t]=n},this.getExtension=function(t){return e._extensions[t]},this._extensions={},t)this._extensions[n]=t[n]}}();e.default=i},function(t,e){t.exports={KEY_CODES:{UP:38,DOWN:40,LEFT:37,RIGHT:39,SPACE:32,ENTER:13,DELETE:46,ESC:27,TAB:9}}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){var e=new function(){this.constants=n(248),this.version="8.0.6",this.license="gpl",this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}},r=new(0,n(247).default)(t),a={};e.plugins=function(t){for(var n in t)if(t[n]&&!a[n]){var i=r.getExtension(n);i&&(i(e),a[n]=!0)}return a},e.$services=n(246)(),e.config=n(245)(),e.ajax=n(244)(e),e.date=n(242)(e),e.RemoteEvents=n(239).remoteEvents;var o=n(237)(e);e.$services.setService("dnd",function(){return o});var s=n(236)(e);e.$services.setService("templateLoader",function(){return s}),n(5)(e);var l=new(n(235));l.registerProvider("global",function(){var t={min_date:e._min_date,max_date:e._max_date,selected_task:null};return e.$data&&e.$data.tasksStore&&(t.selected_task=e.$data.tasksStore.getSelectedId()),t}),e.getState=l.getState,e.$services.setService("state",function(){return l});var c=n(0);c.mixin(e,c),e.Promise=n(234),e.env=n(11),n(232)(e);var u=n(226);e.dataProcessor=u.DEPRECATED_api,e.createDataProcessor=u.createDataProcessor,n(221)(e),n(211)(e),n(210)(e),n(202)(e),n(201)(e),n(200)(e),n(187)(e),n(186).default(e),n(185)(e),n(184)(e),n(183)(e),n(180)(e),n(179).default(e);var d=n(178).default();return e.i18n={addLocale:d.addLocale,setLocale:function(t){if("string"==typeof t){var n=d.getLocale(t);n||(n=d.getLocale("en")),e.locale=n}else if(t)if(e.locale)for(var r in t)t[r]&&"object"===i(t[r])?(e.locale[r]||(e.locale[r]={}),e.mixin(e.locale[r],t[r],!0)):e.locale[r]=t[r];else e.locale=t},getLocale:d.getLocale},e.i18n.setLocale("en"),e}},function(t,e,n){n(35);var i=n(249);t.exports=function(t){var e=i(t);return e.env.isNode||n(144)(e),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=100,r=function(){function t(t){var e=this;this.maxSteps=i,this.undoEnabled=!0,this.redoEnabled=!0,this.action={create:function(t){return{commands:t?t.slice():[]}},invert:function(t){for(var n,i=e._gantt.copy(t),r=e.command,a=0;a<t.commands.length;a++){var o=i.commands[a]=r.invert(i.commands[a]);o.type!==r.type.update&&o.type!==r.type.move||(n=[o.oldValue,o.value],o.value=n[0],o.oldValue=n[1])}return i}},this.command={entity:null,type:null,create:function(t,n,i,r){var a=e._gantt;return{entity:r,type:i,value:a.copy(t),oldValue:a.copy(n||t)}},invert:function(t){var n=e._gantt.copy(t);return n.type=e.command.inverseCommands(t.type),n},inverseCommands:function(t){var n=e._gantt,i=e.command.type;switch(t){case i.update:return i.update;case i.remove:return i.add;case i.add:return i.remove;case i.move:return i.move;default:return n.assert(!1,"Invalid command "+t),null}}},this._undoStack=[],this._redoStack=[],this._gantt=t}return t.prototype.getUndoStack=function(){return this._undoStack},t.prototype.setUndoStack=function(t){this._undoStack=t},t.prototype.getRedoStack=function(){return this._redoStack},t.prototype.setRedoStack=function(t){this._redoStack=t},t.prototype.clearUndoStack=function(){this._undoStack=[]},t.prototype.clearRedoStack=function(){this._redoStack=[]},t.prototype.updateConfigs=function(){var t=this._gantt;this.maxSteps=t.config.undo_steps||i,this.command.entity=t.config.undo_types,this.command.type=t.config.undo_actions,this.undoEnabled=!!t.config.undo,this.redoEnabled=!!t.config.redo},t.prototype.undo=function(){var t=this._gantt;if(this.updateConfigs(),this.undoEnabled){var e=this._pop(this._undoStack);if(e&&this._reorderCommands(e),!1!==t.callEvent("onBeforeUndo",[e])&&e)return this._applyAction(this.action.invert(e)),this._push(this._redoStack,t.copy(e)),void t.callEvent("onAfterUndo",[e]);t.callEvent("onAfterUndo",[null])}},t.prototype.redo=function(){var t=this._gantt;if(this.updateConfigs(),this.redoEnabled){var e=this._pop(this._redoStack);if(e&&this._reorderCommands(e),!1!==t.callEvent("onBeforeRedo",[e])&&e)return this._applyAction(e),this._push(this._undoStack,t.copy(e)),void t.callEvent("onAfterRedo",[e]);t.callEvent("onAfterRedo",[null])}},t.prototype.logAction=function(t){this._push(this._undoStack,t),this._redoStack=[]},t.prototype._push=function(t,e){var n=this._gantt;if(e.commands.length){var i=t===this._undoStack?"onBeforeUndoStack":"onBeforeRedoStack";if(!1!==n.callEvent(i,[e])&&e.commands.length){for(t.push(e);t.length>this.maxSteps;)t.shift();return e}}},t.prototype._pop=function(t){return t.pop()},t.prototype._reorderCommands=function(t){var e={any:0,link:1,task:2},n={move:1,any:0};t.commands.sort(function(t,i){if("task"===t.entity&&"task"===i.entity)return t.type!==i.type?(n[i.type]||0)-(n[t.type]||0):"move"===t.type&&t.oldValue&&i.oldValue&&i.oldValue.parent===t.oldValue.parent?t.oldValue.$index-i.oldValue.$index:0;var r=e[t.entity]||e.any;return(e[i.entity]||e.any)-r})},t.prototype._applyAction=function(t){var e=null,n=this.command.entity,i=this.command.type,r=this._gantt,a={};a[n.task]={add:"addTask",get:"getTask",update:"updateTask",remove:"deleteTask",move:"moveTask",isExists:"isTaskExists"},a[n.link]={add:"addLink",get:"getLink",update:"updateLink",remove:"deleteLink",isExists:"isLinkExists"},r.batchUpdate(function(){for(var n=0;n<t.commands.length;n++){e=t.commands[n];var o=a[e.entity][e.type],s=a[e.entity].get,l=a[e.entity].isExists;if(e.type===i.add)r[o](e.oldValue,e.oldValue.parent,e.oldValue.$local_index);else if(e.type===i.remove)r[l](e.value.id)&&r[o](e.value.id);else if(e.type===i.update){var c=r[s](e.value.id);for(var u in e.value)u.startsWith("$")||u.startsWith("_")||(c[u]=e.value[u]);r[o](e.value.id)}else e.type===i.move&&(r[o](e.value.id,e.value.$local_index,e.value.parent),r.callEvent("onRowDragEnd",[e.value.id]))}})},t}();e.Undo=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={onBeforeUndo:"onAfterUndo",onBeforeRedo:"onAfterRedo"},r=["onTaskDragStart","onAfterTaskUpdate","onAfterTaskDelete","onBeforeBatchUpdate"],a=function(){function t(t,e){this._batchAction=null,this._batchMode=!1,this._ignore=!1,this._ignoreMoveEvents=!1,this._initialTasks={},this._initialLinks={},this._nestedTasks={},this._nestedLinks={},this._undo=t,this._gantt=e,this._attachEvents()}return t.prototype.store=function(t,e,n){return void 0===n&&(n=!1),e===this._gantt.config.undo_types.task?this._storeTask(t,n):e===this._gantt.config.undo_types.link&&this._storeLink(t,n)},t.prototype.isMoveEventsIgnored=function(){return this._ignoreMoveEvents},t.prototype.toggleIgnoreMoveEvents=function(t){this._ignoreMoveEvents=t||!1},t.prototype.startIgnore=function(){this._ignore=!0},t.prototype.stopIgnore=function(){this._ignore=!1},t.prototype.startBatchAction=function(){var t=this;this._timeout||(this._timeout=setTimeout(function(){t.stopBatchAction(),t._timeout=null},10)),this._ignore||this._batchMode||(this._batchMode=!0,this._batchAction=this._undo.action.create())},t.prototype.stopBatchAction=function(){if(!this._ignore){var t=this._undo;this._batchAction&&t.logAction(this._batchAction),this._batchMode=!1,this._batchAction=null}},t.prototype.onTaskAdded=function(t){this._ignore||this._storeTaskCommand(t,this._undo.command.type.add)},t.prototype.onTaskUpdated=function(t){this._ignore||this._storeTaskCommand(t,this._undo.command.type.update)},t.prototype.onTaskMoved=function(t){if(!this._ignore){t.$local_index=this._gantt.getTaskIndex(t.id);var e=this.getInitialTask(t.id);if(t.$local_index===e.$local_index&&this._gantt.getParent(t)===this._gantt.getParent(e))return;this._storeEntityCommand(t,this.getInitialTask(t.id),this._undo.command.type.move,this._undo.command.entity.task)}},t.prototype.onTaskDeleted=function(t){if(!this._ignore){if(this._storeTaskCommand(t,this._undo.command.type.remove),this._nestedTasks[t.id])for(var e=this._nestedTasks[t.id],n=0;n<e.length;n++)this._storeTaskCommand(e[n],this._undo.command.type.remove);if(this._nestedLinks[t.id]){var i=this._nestedLinks[t.id];for(n=0;n<i.length;n++)this._storeLinkCommand(i[n],this._undo.command.type.remove)}}},t.prototype.onLinkAdded=function(t){this._ignore||this._storeLinkCommand(t,this._undo.command.type.add)},t.prototype.onLinkUpdated=function(t){this._ignore||this._storeLinkCommand(t,this._undo.command.type.update)},t.prototype.onLinkDeleted=function(t){this._ignore||this._storeLinkCommand(t,this._undo.command.type.remove)},t.prototype.setNestedTasks=function(t,e){for(var n=this._gantt,i=null,r=[],a=this._getLinks(n.getTask(t)),o=0;o<e.length;o++)i=this.setInitialTask(e[o]),a=a.concat(this._getLinks(i)),r.push(i);var s={};for(o=0;o<a.length;o++)s[a[o]]=!0;var l=[];for(var o in s)l.push(this.setInitialLink(o));this._nestedTasks[t]=r,this._nestedLinks[t]=l},t.prototype.setInitialTask=function(t,e){var n=this._gantt;if(e||!this._initialTasks[t]||!this._batchMode){var i=n.copy(n.getTask(t));i.$index=n.getGlobalTaskIndex(t),i.$local_index=n.getTaskIndex(t),this.setInitialTaskObject(t,i)}return this._initialTasks[t]},t.prototype.getInitialTask=function(t){return this._initialTasks[t]},t.prototype.clearInitialTasks=function(){this._initialTasks={}},t.prototype.setInitialTaskObject=function(t,e){this._initialTasks[t]=e},t.prototype.setInitialLink=function(t,e){return this._initialLinks[t]&&this._batchMode||(this._initialLinks[t]=this._gantt.copy(this._gantt.getLink(t))),this._initialLinks[t]},t.prototype.getInitialLink=function(t){return this._initialLinks[t]},t.prototype.clearInitialLinks=function(){this._initialLinks={}},t.prototype._attachEvents=function(){var t=this,e=null,n=this._gantt,a=function(){e||(e=setTimeout(function(){e=null}),t.clearInitialTasks(),n.eachTask(function(e){t.setInitialTask(e.id)}),t.clearInitialLinks(),n.getLinks().forEach(function(e){t.setInitialLink(e.id)}))},o=function(t){return n.copy(n.getTask(t))};for(var s in i)n.attachEvent(s,function(){return t.startIgnore(),!0}),n.attachEvent(i[s],function(){return t.stopIgnore(),!0});for(s=0;s<r.length;s++)n.attachEvent(r[s],function(){return t.startBatchAction(),!0});n.attachEvent("onParse",function(){t._undo.clearUndoStack(),t._undo.clearRedoStack(),a()}),n.attachEvent("onAfterTaskAdd",function(e,n){t.setInitialTask(e,!0),t.onTaskAdded(n)}),n.attachEvent("onAfterTaskUpdate",function(e,n){t.onTaskUpdated(n)}),n.attachEvent("onAfterTaskDelete",function(e,n){t.onTaskDeleted(n)}),n.attachEvent("onAfterLinkAdd",function(e,n){t.setInitialLink(e,!0),t.onLinkAdded(n)}),n.attachEvent("onAfterLinkUpdate",function(e,n){t.onLinkUpdated(n)}),n.attachEvent("onAfterLinkDelete",function(e,n){t.onLinkDeleted(n)}),n.attachEvent("onRowDragEnd",function(e,n){return t.onTaskMoved(o(e)),t.toggleIgnoreMoveEvents(),!0}),n.attachEvent("onBeforeTaskDelete",function(e){t.store(e,n.config.undo_types.task);var i=[];return a(),n.eachTask(function(t){i.push(t.id)},e),t.setNestedTasks(e,i),!0});var l=n.getDatastore("task");l.attachEvent("onBeforeItemMove",function(e,n,i){return t.isMoveEventsIgnored()||a(),!0}),l.attachEvent("onAfterItemMove",function(e,n,i){return t.isMoveEventsIgnored()||t.onTaskMoved(o(e)),!0}),n.attachEvent("onRowDragStart",function(e,n,i){return t.toggleIgnoreMoveEvents(!0),a(),!0}),n.attachEvent("onBeforeTaskDrag",function(e){return t.store(e,n.config.undo_types.task)}),n.attachEvent("onLightbox",function(e){return t.store(e,n.config.undo_types.task)}),n.attachEvent("onBeforeTaskAutoSchedule",function(e){return t.store(e.id,n.config.undo_types.task),!0}),n.ext.inlineEditors&&n.ext.inlineEditors.attachEvent("onEditStart",function(e){t.store(e.id,n.config.undo_types.task)})},t.prototype._storeCommand=function(t){var e=this._undo;if(e.updateConfigs(),e.undoEnabled)if(this._batchMode)this._batchAction.commands.push(t);else{var n=e.action.create([t]);e.logAction(n)}},t.prototype._storeEntityCommand=function(t,e,n,i){var r=this._undo.command.create(t,e,n,i);this._storeCommand(r)},t.prototype._storeTaskCommand=function(t,e){this._gantt.isTaskExists(t.id)&&(t.$local_index=this._gantt.getTaskIndex(t.id)),this._storeEntityCommand(t,this.getInitialTask(t.id),e,this._undo.command.entity.task)},t.prototype._storeLinkCommand=function(t,e){this._storeEntityCommand(t,this.getInitialLink(t.id),e,this._undo.command.entity.link)},t.prototype._getLinks=function(t){return t.$source.concat(t.$target)},t.prototype._storeTask=function(t,e){var n=this;void 0===e&&(e=!1);var i=this._gantt;return this.setInitialTask(t,e),i.eachTask(function(t){n.setInitialTask(t.id)},t),!0},t.prototype._storeLink=function(t,e){return void 0===e&&(e=!1),this.setInitialLink(t,e),!0},t}();e.Monitor=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(252),r=n(251);e.default=function(t){var e=new r.Undo(t),n=new i.Monitor(e,t);function a(t,e,n){t&&(t.id===e&&(t.id=n),t.parent===e&&(t.parent=n))}function o(t,e,n){a(t.value,e,n),a(t.oldValue,e,n)}function s(t,e,n){t&&(t.source===e&&(t.source=n),t.target===e&&(t.target=n))}function l(t,e,n){s(t.value,e,n),s(t.oldValue,e,n)}function c(t,n,i){for(var r=e,a=0;a<t.length;a++)for(var s=t[a],c=0;c<s.commands.length;c++)s.commands[c].entity===r.command.entity.task?o(s.commands[c],n,i):s.commands[c].entity===r.command.entity.link&&l(s.commands[c],n,i)}function u(t,n,i){for(var r=e,a=0;a<t.length;a++)for(var o=t[a],s=0;s<o.commands.length;s++){var l=o.commands[s];l.entity===r.command.entity.link&&(l.value&&l.value.id===n&&(l.value.id=i),l.oldValue&&l.oldValue.id===n&&(l.oldValue.id=i))}}t.config.undo=!0,t.config.redo=!0,t.config.undo_types={link:"link",task:"task"},t.config.undo_actions={update:"update",remove:"remove",add:"add",move:"move"},t.ext||(t.ext={}),t.ext.undo={undo:function(){return e.undo()},redo:function(){return e.redo()},getUndoStack:function(){return e.getUndoStack()},setUndoStack:function(t){return e.setUndoStack(t)},getRedoStack:function(){return e.getRedoStack()},setRedoStack:function(t){return e.setRedoStack(t)},clearUndoStack:function(){return e.clearUndoStack()},clearRedoStack:function(){return e.clearRedoStack()},saveState:function(t,e){return n.store(t,e,!0)},getInitialState:function(e,i){return i===t.config.undo_types.link?n.getInitialLink(e):n.getInitialTask(e)}},t.undo=t.ext.undo.undo,t.redo=t.ext.undo.redo,t.getUndoStack=t.ext.undo.getUndoStack,t.getRedoStack=t.ext.undo.getRedoStack,t.clearUndoStack=t.ext.undo.clearUndoStack,t.clearRedoStack=t.ext.undo.clearRedoStack,t.attachEvent("onTaskIdChange",function(t,n){var i=e;c(i.getUndoStack(),t,n),c(i.getRedoStack(),t,n)}),t.attachEvent("onLinkIdChange",function(t,n){var i=e;u(i.getUndoStack(),t,n),u(i.getRedoStack(),t,n)}),t.attachEvent("onGanttReady",function(){e.updateConfigs()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),r=function(){function t(t){this._gantt=t}return t.prototype.getNode=function(){var t=this._gantt;return this._tooltipNode||(this._tooltipNode=document.createElement("div"),this._tooltipNode.className="gantt_tooltip",t._waiAria.tooltipAttr(this._tooltipNode)),this._tooltipNode},t.prototype.setViewport=function(t){return this._root=t,this},t.prototype.show=function(t,e){var n=this._gantt,r=document.body,a=this.getNode();if(i.isChildOf(a,r)||(this.hide(),r.appendChild(a)),this._isLikeMouseEvent(t)){var o=this._calculateTooltipPosition(t);e=o.top,t=o.left}return a.style.top=e+"px",a.style.left=t+"px",n._waiAria.tooltipVisibleAttr(a),this},t.prototype.hide=function(){var t=this._gantt,e=this.getNode();return e&&e.parentNode&&e.parentNode.removeChild(e),t._waiAria.tooltipHiddenAttr(e),this},t.prototype.setContent=function(t){return this.getNode().innerHTML=t,this},t.prototype._isLikeMouseEvent=function(t){return!(!t||"object"!=typeof t)&&("clientX"in t&&"clientY"in t)},t.prototype._getViewPort=function(){return this._root||document.body},t.prototype._calculateTooltipPosition=function(t){var e=this._gantt,n=this._getViewPortSize(),r=this.getNode(),a={top:0,left:0,width:r.offsetWidth,height:r.offsetHeight,bottom:0,right:0},o=e.config.tooltip_offset_x,s=e.config.tooltip_offset_y,l=document.body,c=i.getRelativeEventPosition(t,l),u=i.getNodePosition(l);c.y+=u.y,a.top=c.y,a.left=c.x,a.top+=s,a.left+=o,a.bottom=a.top+a.height,a.right=a.left+a.width;var d=window.scrollY+l.scrollTop;return a.top<n.top-d?(a.top=n.top,a.bottom=a.top+a.height):a.bottom>n.bottom&&(a.bottom=n.bottom,a.top=a.bottom-a.height),a.left<n.left?(a.left=n.left,a.right=n.left+a.width):a.right>n.right&&(a.right=n.right,a.left=a.right-a.width),c.x>=a.left&&c.x<=a.right&&(a.left=c.x-a.width-o,a.right=a.left+a.width),c.y>=a.top&&c.y<=a.bottom&&(a.top=c.y-a.height-s,a.bottom=a.top+a.height),a},t.prototype._getViewPortSize=function(){var t,e=this._gantt,n=this._getViewPort(),r=n,a=window.scrollY+document.body.scrollTop,o=window.scrollX+document.body.scrollLeft;return n===e.$task_data?(r=e.$task,a=0,o=0,t=i.getNodePosition(e.$task)):t=i.getNodePosition(r),{left:t.x+o,top:t.y+a,width:t.width,height:t.height,bottom:t.y+t.height+a,right:t.x+t.width+o}},t}();e.Tooltip=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(51),r=n(1),a=n(2),o=n(254),s=function(){function t(t){this._listeners={},this.tooltip=new o.Tooltip(t),this._gantt=t,this._domEvents=i(),this._initDelayedFunctions()}return t.prototype.destructor=function(){this.tooltip.hide(),this._domEvents.detachAll()},t.prototype.hideTooltip=function(){this.delayHide()},t.prototype.attach=function(t){var e=this,n=document.body,i=this._gantt;t.global||(n=i.$root);var a=null,o=function(n){var i=r.getTargetNode(n),o=r.closest(i,t.selector);if(!r.isChildOf(i,e.tooltip.getNode())){var s=function(){a=o,t.onmouseenter(n,o)};a?o&&o===a?t.onmousemove(n,o):(t.onmouseleave(n,a),a=null,o&&o!==a&&s()):o&&s()}};this.detach(t.selector),this._domEvents.attach(n,"mousemove",o),this._listeners[t.selector]={node:n,handler:o}},t.prototype.detach=function(t){var e=this._listeners[t];e&&this._domEvents.detach(e.node,"mousemove",e.handler)},t.prototype.tooltipFor=function(t){var e=this,n=function(t){var e=t;return document.createEventObject&&!document.createEvent&&(e=document.createEventObject(t)),e};this._initDelayedFunctions(),this.attach({selector:t.selector,global:t.global,onmouseenter:function(i,r){var a=t.html(i,r);a&&e.delayShow(n(i),a)},onmousemove:function(i,r){var a=t.html(i,r);a?e.delayShow(n(i),a):(e.delayShow.$cancelTimeout(),e.delayHide())},onmouseleave:function(){e.delayShow.$cancelTimeout(),e.delayHide()}})},t.prototype._initDelayedFunctions=function(){var t=this,e=this._gantt;this.delayShow&&this.delayShow.$cancelTimeout(),this.delayHide&&this.delayHide.$cancelTimeout(),this.tooltip.hide(),this.delayShow=a.delay(function(n,i){!1===e.callEvent("onBeforeTooltip",[n])?t.tooltip.hide():(t.tooltip.setContent(i),t.tooltip.show(n))},e.config.tooltip_timeout||1),this.delayHide=a.delay(function(){t.delayShow.$cancelTimeout(),t.tooltip.hide()},e.config.tooltip_hide_timeout||1)},t}();e.TooltipManager=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(255);e.default=function(t){t.config.tooltip_timeout=30,t.config.tooltip_offset_y=20,t.config.tooltip_offset_x=10,t.config.tooltip_hide_timeout=30;var e=new i.TooltipManager(t);t.ext.tooltips=e,t.attachEvent("onGanttReady",function(){e.tooltipFor({selector:"["+t.config.task_attribute+"]:not(.gantt_task_row)",html:function(e){if(!t.config.touch||t.config.touch_tooltip){var n=t.locate(e);if(t.isTaskExists(n)){var i=t.getTask(n);return t.templates.tooltip_text(i.start_date,i.end_date,i)}return null}},global:!1})}),t.attachEvent("onDestroy",function(){e.destructor()}),t.attachEvent("onLightbox",function(){e.hideTooltip()}),t.attachEvent("onBeforeTooltip",function(){if(t.getState().link_source_id)return!1}),t.attachEvent("onGanttScroll",function(){e.hideTooltip()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){var e=this;this.show=function(t,n){void 0===n?e._showForTask(t):e._showAtCoordinates(t,n)},this.hide=function(t){var n=e._gantt,i=e._quickInfoBox;e._quickInfoBoxId=0;var r=e._quickInfoTask;if(e._quickInfoTask=null,i&&i.parentNode){if(n.config.quick_info_detached)return n.callEvent("onAfterQuickInfo",[r]),i.parentNode.removeChild(i);i.className+=" gantt_qi_hidden","auto"===i.style.right?i.style.left="-350px":i.style.right="-350px",t&&(i.style.left=i.style.right="",i.parentNode.removeChild(i)),n.callEvent("onAfterQuickInfo",[r])}},this.getNode=function(){return e._quickInfoBox?e._quickInfoBox:null},this.setContainer=function(t){t&&(e._container="string"==typeof t?document.getElementById(t):t)},this.setContent=function(t){var n=e._gantt,i={taskId:null,header:{title:"",date:""},content:"",buttons:n.config.quickinfo_buttons};t||(t=i),t.taskId||(t.taskId=i.taskId),t.header||(t.header=i.header),t.header.title||(t.header.title=i.header.title),t.header.date||(t.header.date=i.header.date),t.content||(t.content=i.content),t.buttons||(t.buttons=i.buttons);var r=e.getNode();r||(r=e._createQuickInfoElement()),t.taskId&&(e._quickInfoBoxId=t.taskId);var a=r.querySelector(".gantt_cal_qi_title"),o=a.querySelector(".gantt_cal_qi_tcontent"),s=a.querySelector(".gantt_cal_qi_tdate"),l=r.querySelector(".gantt_cal_qi_content"),c=r.querySelector(".gantt_cal_qi_controls");n._waiAria.quickInfoHeader(r,[t.header.title,t.header.date].join(" ")),o.innerHTML=t.header.title,s.innerHTML=t.header.date,t.header.title||t.header.date?a.style.display="":a.style.display="none",l.innerHTML=t.content;var u=t.buttons;u.length?c.style.display="":c.style.display="none";for(var d="",h=0;h<u.length;h++){var f=n._waiAria.quickInfoButtonAttrString(n.locale.labels[u[h]]);d+='<div class="gantt_qi_big_icon '+u[h]+'" title="'+n.locale.labels[u[h]]+'" '+f+"><div class='gantt_menu_icon "+u[h]+"'></div><div>"+n.locale.labels[u[h]]+"</div></div>"}c.innerHTML=d,n.eventRemove(r,"click",e._qiButtonClickHandler),n.eventRemove(r,"keypress",e._qiKeyPressHandler),n.event(r,"click",e._qiButtonClickHandler),n.event(r,"keypress",e._qiKeyPressHandler)},this._qiButtonClickHandler=function(t){t=t||event,e._qi_button_click(t.target||t.srcElement)},this._qiKeyPressHandler=function(t){var n=(t=t||event).which||event.keyCode;13!==n&&32!==n||setTimeout(function(){e._qi_button_click(t.target||t.srcElement)},1)},this._gantt=t}return t.prototype._showAtCoordinates=function(t,e){this.hide(!0),this._quickInfoBoxId=0,this._quickInfoTask=null,this._quickInfoBox||(this._createQuickInfoElement(),this.setContent()),this._appendAtCoordinates(t,e),this._gantt.callEvent("onQuickInfo",[null])},t.prototype._showForTask=function(t){var e=this._gantt;if((t!==this._quickInfoBoxId||!e.utils.dom.isChildOf(this._quickInfoBox,document.body))&&e.config.show_quick_info){this.hide(!0);var n=this._getContainer(),i=this._get_event_counter_part(t,6,n.xViewport,n.yViewport);i&&(this._quickInfoBox=this._init_quick_info(t),this._quickInfoTask=t,this._quickInfoBox.className=this._prepare_quick_info_classname(t),this._fill_quick_data(t),this._show_quick_info(i,6),e.callEvent("onQuickInfo",[t]))}},t.prototype._get_event_counter_part=function(t,e,n,i){var r=this._gantt,a=r.getTaskNode(t);if(!a&&!(a=r.getTaskRowNode(t)))return null;var o=0,s=e+a.offsetTop+a.offsetHeight,l=a;if(r.utils.dom.isChildOf(l,n))for(;l&&l!==n;)o+=l.offsetLeft,l=l.offsetParent;var c=r.getScrollState();return l?{left:o,top:s,dx:o+a.offsetWidth/2-c.x>n.offsetWidth/2?1:0,dy:s+a.offsetHeight/2-c.y>i.offsetHeight/2?1:0,width:a.offsetWidth,height:a.offsetHeight}:null},t.prototype._createQuickInfoElement=function(){var t=this,e=this._gantt,n=document.createElement("div");n.className+="gantt_cal_quick_info",e._waiAria.quickInfoAttr(n);var i='<div class="gantt_cal_qi_title" '+e._waiAria.quickInfoHeaderAttrString()+'><div class="gantt_cal_qi_tcontent"></div><div class="gantt_cal_qi_tdate"></div></div><div class="gantt_cal_qi_content"></div>';if(i+='<div class="gantt_cal_qi_controls">',i+="</div>",n.innerHTML=i,e.config.quick_info_detached){var r=this._getContainer();e.event(r.parent,"scroll",function(){t.hide()})}return this._quickInfoBox=n,n},t.prototype._init_quick_info=function(t){var e=this._gantt,n=e.getTask(t);return"boolean"==typeof this._quickInfoReadonly&&e.isReadonly(n)!==this._quickInfoReadonly&&(this.hide(!0),this._quickInfoBox=null),this._quickInfoReadonly=e.isReadonly(n),this._quickInfoBox||(this._quickInfoBox=this._createQuickInfoElement()),this._quickInfoBox},t.prototype._prepare_quick_info_classname=function(t){var e=this._gantt,n=e.getTask(t),i="gantt_cal_quick_info",r=e.templates.quick_info_class(n.start_date,n.end_date,n);return r&&(i+=" "+r),i},t.prototype._fill_quick_data=function(t){var e=this._gantt,n=e.getTask(t);this._quickInfoBoxId=t;var i=[];if(this._quickInfoReadonly)for(var r=e.config.quickinfo_buttons,a={icon_delete:!0,icon_edit:!0},o=0;o<r.length;o++)this._quickInfoReadonly&&a[r[o]]||i.push(r[o]);else i=e.config.quickinfo_buttons;this.setContent({header:{title:e.templates.quick_info_title(n.start_date,n.end_date,n),date:e.templates.quick_info_date(n.start_date,n.end_date,n)},content:e.templates.quick_info_content(n.start_date,n.end_date,n),buttons:i})},t.prototype._appendAtCoordinates=function(t,e){var n=this._quickInfoBox,i=this._getContainer();n.parentNode&&"#document-fragment"!==n.parentNode.nodeName.toLowerCase()||i.parent.appendChild(n),n.style.left=t+"px",n.style.top=e+"px"},t.prototype._show_quick_info=function(t,e){var n=this._gantt,i=this._quickInfoBox;if(n.config.quick_info_detached){var r=this._getContainer();i.parentNode&&"#document-fragment"!==i.parentNode.nodeName.toLowerCase()||r.parent.appendChild(i);var a=i.offsetWidth,o=i.offsetHeight,s=n.getScrollState(),l=r.xViewport,c=r.yViewport,u=l.offsetWidth+s.x-a,d=t.top-s.y+o,h=t.top;d>c.offsetHeight/2&&(h=t.top-(o+t.height+2*e))<s.y&&d<=c.offsetHeight&&(h=t.top),h<s.y&&(h=s.y);var f=Math.min(Math.max(s.x,t.left-t.dx*(a-t.width)),u),_=h;this._appendAtCoordinates(f,_)}else i.style.top="20px",1===t.dx?(i.style.right="auto",i.style.left="-300px",setTimeout(function(){i.style.left="10px"},1)):(i.style.left="auto",i.style.right="-300px",setTimeout(function(){i.style.right="10px"},1)),i.className+=" gantt_qi_"+(1===t.dx?"left":"right"),n.$root.appendChild(i)},t.prototype._qi_button_click=function(t){var e=this._gantt,n=this._quickInfoBox;if(t&&t!==n){var i=t.className;if(-1!==i.indexOf("_icon")){var r=this._quickInfoBoxId;e.$click.buttons[i.split(" ")[1].replace("icon_","")](r)}else this._qi_button_click(t.parentNode)}},t.prototype._getContainer=function(){var t=this._gantt,e=this._container?this._container:t.$task_data;return e&&e.offsetHeight&&e.offsetWidth?{parent:e,xViewport:t.$task,yViewport:t.$task_data}:(e=this._container?this._container:t.$grid_data)&&e.offsetHeight&&e.offsetWidth?{parent:e,xViewport:t.$grid,yViewport:t.$grid_data}:{parent:this._container?this._container:t.$layout,xViewport:t.$layout,yViewport:t.$layout}},t}();e.QuickInfo=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(257);e.default=function(t){t.ext||(t.ext={}),t.ext.quickInfo=new i.QuickInfo(t),t.config.quickinfo_buttons=["icon_delete","icon_edit"],t.config.quick_info_detached=!0,t.config.show_quick_info=!0,t.templates.quick_info_title=function(t,e,n){return n.text.substr(0,50)},t.templates.quick_info_content=function(t,e,n){return n.details||n.text},t.templates.quick_info_date=function(e,n,i){return t.templates.task_time(e,n,i)},t.templates.quick_info_class=function(t,e,n){return""},t.attachEvent("onTaskClick",function(e,n){return t.utils.dom.closest(n.target,".gantt_add")||setTimeout(function(){t.ext.quickInfo.show(e)},0),!0});for(var e=["onViewChange","onLightbox","onBeforeTaskDelete","onBeforeDrag"],n=function(){return t.ext.quickInfo.hide(),!0},r=0;r<e.length;r++)t.attachEvent(e[r],n);function a(){return t.ext.quickInfo.hide(),t.ext.quickInfo._quickInfoBox=null,!0}t.attachEvent("onEmptyClick",function(e){var i=!0,r=document.querySelector(".gantt_cal_quick_info");r&&t.utils.dom.isChildOf(e.target,r)&&(i=!1),i&&n()}),t.attachEvent("onGanttReady",a),t.attachEvent("onDestroy",a),t.event(window,"keydown",function(e){27===e.keyCode&&t.ext.quickInfo.hide()})}},function(t,e,n){var i=n(2).replaceValidZeroId;t.exports=function(t){t.config.multiselect=!0,t.config.multiselect_one_level=!1,t._multiselect={_selected:{},_one_level:!1,_active:!0,_first_selected_when_shift:null,getDefaultSelected:function(){var t=this.getSelected();return t.length?t[t.length-1]:null},setFirstSelected:function(t){this._first_selected_when_shift=t},getFirstSelected:function(){return this._first_selected_when_shift},isActive:function(){return this.updateState(),this._active},updateState:function(){this._one_level=t.config.multiselect_one_level;var e=this._active;this._active=t.config.select_task,this._active!=e&&this.reset()},reset:function(){this._selected={}},setLastSelected:function(e){t.$data.tasksStore.silent(function(){var n=t.$data.tasksStore;e?n.select(e+""):n.unselect(null)})},getLastSelected:function(){var e=t.$data.tasksStore.getSelectedId();return e&&t.isTaskExists(e)?e:null},select:function(e,n){return!!(e&&t.callEvent("onBeforeTaskMultiSelect",[e,!0,n])&&t.callEvent("onBeforeTaskSelected",[e]))&&(this._selected[e]=!0,this.setLastSelected(e),this.afterSelect(e),t.callEvent("onTaskMultiSelect",[e,!0,n]),t.callEvent("onTaskSelected",[e]),!0)},toggle:function(t,e){this._selected[t]?this.unselect(t,e):this.select(t,e)},unselect:function(e,n){e&&t.callEvent("onBeforeTaskMultiSelect",[e,!1,n])&&(this._selected[e]=!1,this.getLastSelected()==e&&this.setLastSelected(this.getDefaultSelected()),this.afterSelect(e),t.callEvent("onTaskMultiSelect",[e,!1,n]),t.callEvent("onTaskUnselected",[e]))},isSelected:function(e){return!(!t.isTaskExists(e)||!this._selected[e])},getSelected:function(){var e=[];for(var n in this._selected)this._selected[n]&&t.isTaskExists(n)?e.push(n):this._selected[n]=!1;return e.sort(function(e,n){return t.getGlobalTaskIndex(e)>t.getGlobalTaskIndex(n)?1:-1}),e},forSelected:function(t){for(var e=this.getSelected(),n=0;n<e.length;n++)t(e[n])},isSameLevel:function(e){if(!this._one_level)return!0;var n=this.getLastSelected();return!n||(!t.isTaskExists(n)||!t.isTaskExists(e)||!(t.calculateTaskLevel(t.getTask(n))!=t.calculateTaskLevel(t.getTask(e))))},afterSelect:function(e){t.isTaskExists(e)&&t._quickRefresh(function(){t.refreshTask(e)})},doSelection:function(e){if(!this.isActive())return!1;if(t._is_icon_open_click(e))return!1;var n=t.locate(e);if(!n)return!1;if(!t.callEvent("onBeforeMultiSelect",[e]))return!1;var i=this.getSelected(),r=this.getFirstSelected(),a=!1,o=this.getLastSelected(),s=t.config.multiselect,l=function(){var r=t.ext.inlineEditors,a=r.getState(),o=r.locateCell(e.target);t.config.inline_editors_multiselect_open&&o&&r.getEditorConfig(o.columnName)&&(r.isVisible()&&a.id==o.id&&a.columnName==o.columnName||r.startEdit(o.id,o.columnName)),this.setFirstSelected(n),this.isSelected(n)||this.select(n,e),i=this.getSelected();for(var s=0;s<i.length;s++)i[s]!==n&&this.unselect(i[s],e)}.bind(this),c=function(){if(o){if(n){for(var i=t.getGlobalTaskIndex(this.getFirstSelected()),s=t.getGlobalTaskIndex(n),l=t.getGlobalTaskIndex(o),c=o;t.getGlobalTaskIndex(c)!==i;)this.unselect(c,e),c=i>l?t.getNext(c):t.getPrev(c);for(c=n;t.getGlobalTaskIndex(c)!==i;)this.select(c,e)&&!a&&(a=!0,r=c),c=i>s?t.getNext(c):t.getPrev(c)}}else o=n}.bind(this);return s&&(e.ctrlKey||e.metaKey)?(this.isSelected(n)||this.setFirstSelected(n),n&&this.toggle(n,e)):s&&e.shiftKey?(t.isTaskExists(this.getFirstSelected())&&null!==this.getFirstSelected()||this.setFirstSelected(n),i.length?c():l()):l(),this.isSelected(n)?this.setLastSelected(n):r?n==o&&this.setLastSelected(e.shiftKey?r:this.getDefaultSelected()):this.setLastSelected(null),this.getSelected().length||this.setLastSelected(null),this.getLastSelected()&&this.isSelected(this.getFirstSelected())||this.setFirstSelected(this.getLastSelected()),!0}},function(){var e=t.selectTask;t.selectTask=function(n){if(!(n=i(n,this.config.root_id)))return!1;var r=t._multiselect,a=n;return r.isActive()?(r.select(n,null)&&r.setLastSelected(n),r.setFirstSelected(r.getLastSelected())):a=e.call(this,n),a};var n=t.unselectTask;t.unselectTask=function(e){var i=t._multiselect,r=i.isActive();(e=e||i.getLastSelected())&&r&&(i.unselect(e,null),e==i.getLastSelected()&&i.setLastSelected(null),t.refreshTask(e),i.setFirstSelected(i.getLastSelected()));var a=e;return r||(a=n.call(this,e)),a},t.toggleTaskSelection=function(e){var n=t._multiselect;e&&n.isActive()&&(n.toggle(e),n.setFirstSelected(n.getLastSelected()))},t.getSelectedTasks=function(){var e=t._multiselect;return e.isActive(),e.getSelected()},t.eachSelectedTask=function(t){return this._multiselect.forSelected(t)},t.isSelectedTask=function(t){return this._multiselect.isSelected(t)},t.getLastSelectedTask=function(){return this._multiselect.getLastSelected()},t.attachEvent("onGanttReady",function(){var e=t.$data.tasksStore.isSelected;t.$data.tasksStore.isSelected=function(n){return t._multiselect.isActive()?t._multiselect.isSelected(n):e.call(this,n)}})}(),t.attachEvent("onTaskIdChange",function(e,n){var i=t._multiselect;if(!i.isActive())return!0;t.isSelectedTask(e)&&(i.unselect(e,null),i.select(n,null))}),t.attachEvent("onAfterTaskDelete",function(e,n){var i=t._multiselect;if(!i.isActive())return!0;i._selected[e]&&(i.unselect(e,null),i._selected[e]=!1,i.setLastSelected(i.getDefaultSelected())),i.forSelected(function(e){t.isTaskExists(e)||i.unselect(e,null)})}),t.attachEvent("onBeforeTaskMultiSelect",function(e,n,i){var r=t._multiselect;return!(n&&r.isActive()&&r._one_level)||r.isSameLevel(e)}),t.attachEvent("onTaskClick",function(e,n){return t._multiselect.doSelection(n)&&t.callEvent("onMultiSelect",[n]),!0})}},function(t,e){t.exports=function(t){function e(e){if(!t.config.show_markers)return!1;if(!e.start_date)return!1;var n=t.getState();if(!(+e.start_date>+n.max_date||(!e.end_date||+e.end_date<+n.min_date)&&+e.start_date<+n.min_date)){var i=document.createElement("div");i.setAttribute("data-marker-id",e.id);var r="gantt_marker";t.templates.marker_class&&(r+=" "+t.templates.marker_class(e)),e.css&&(r+=" "+e.css),e.title&&(i.title=e.title),i.className=r;var a=t.posFromDate(e.start_date);i.style.left=a+"px";var o=Math.max(t.getRowTop(t.getVisibleTaskCount()),0)+"px";if(t.config.timeline_placeholder&&(o=t.$container.scrollHeight+"px"),i.style.height=o,e.end_date){var s=t.posFromDate(e.end_date);i.style.width=Math.max(s-a,0)+"px"}return e.text&&(i.innerHTML="<div class='gantt_marker_content' >"+e.text+"</div>"),i}}function n(){if(t.$task_data){var e=document.createElement("div");e.className="gantt_marker_area",t.$task_data.appendChild(e),t.$marker_area=e}}t._markers||(t._markers=t.createDatastore({name:"marker",initItem:function(e){return e.id=e.id||t.uid(),e}})),t.config.show_markers=!0,t.attachEvent("onBeforeGanttRender",function(){t.$marker_area||n()}),t.attachEvent("onDataRender",function(){t.$marker_area||(n(),t.renderMarkers())}),t.attachEvent("onGanttLayoutReady",function(){t.attachEvent("onBeforeGanttRender",function(){n(),t.$services.getService("layers").createDataRender({name:"marker",defaultContainer:function(){return t.$marker_area}}).addLayer(e)},{once:!0})}),t.getMarker=function(t){return this._markers?this._markers.getItem(t):null},t.addMarker=function(t){return this._markers.addItem(t)},t.deleteMarker=function(t){return!!this._markers.exists(t)&&(this._markers.removeItem(t),!0)},t.updateMarker=function(t){this._markers.refresh(t)},t._getMarkers=function(){return this._markers.getItems()},t.renderMarkers=function(){this._markers.refresh()}}},function(t,e){t.exports=function(t){t.$keyboardNavigation.dispatcher={isActive:!1,activeNode:null,globalNode:new t.$keyboardNavigation.GanttNode,enable:function(){this.isActive=!0,this.setActiveNode(this.getActiveNode())},disable:function(){this.isActive=!1},isEnabled:function(){return!!this.isActive},getDefaultNode:function(){var e;return(e=t.config.keyboard_navigation_cells?new t.$keyboardNavigation.TaskCell:new t.$keyboardNavigation.TaskRow).isValid()||(e=e.fallback()),e},setDefaultNode:function(){this.setActiveNode(this.getDefaultNode())},getActiveNode:function(){var t=this.activeNode;return t&&!t.isValid()&&(t=t.fallback()),t},fromDomElement:function(e){for(var n=[t.$keyboardNavigation.TaskRow,t.$keyboardNavigation.TaskCell,t.$keyboardNavigation.HeaderCell],i=0;i<n.length;i++)if(n[i].prototype.fromDomElement){var r=n[i].prototype.fromDomElement(e);if(r)return r}return null},focusGlobalNode:function(){this.blurNode(this.globalNode),this.focusNode(this.globalNode)},setActiveNode:function(t){var e=!0;this.activeNode&&this.activeNode.compareTo(t)&&(e=!1),this.isEnabled()&&(e&&this.blurNode(this.activeNode),this.activeNode=t,this.focusNode(this.activeNode,!e))},focusNode:function(t,e){t&&t.focus&&t.focus(e)},blurNode:function(t){t&&t.blur&&t.blur()},keyDownHandler:function(e){if(!t.$keyboardNavigation.isModal()&&this.isEnabled()&&!e.defaultPrevented){var n=this.globalNode,i=t.$keyboardNavigation.shortcuts.getCommandFromEvent(e),r=this.getActiveNode();!1!==t.$keyboardNavigation.facade.callEvent("onKeyDown",[i,e])&&(r?r.findHandler(i)?r.doAction(i,e):n.findHandler(i)&&n.doAction(i,e):this.setDefaultNode())}},_timeout:null,awaitsFocus:function(){return null!==this._timeout},delay:function(e,n){clearTimeout(this._timeout),this._timeout=setTimeout(t.bind(function(){this._timeout=null,e()},this),n||1)},clearDelay:function(){clearTimeout(this._timeout)}}}},function(t,e){t.exports=function(t){!function(){var e=[];function n(){return!!e.length}function i(e){setTimeout(function(){n()||t.$destroyed||t.focus()},1)}function r(n){t.eventRemove(n,"keydown",o),t.event(n,"keydown",o),e.push(n)}function a(){var n=e.pop();n&&t.eventRemove(n,"keydown",o),i()}function o(n){var i=n.currentTarget;(function(t){return t==e[e.length-1]})(i)&&t.$keyboardNavigation.trapFocus(i,n)}function s(){r(t.getLightbox())}t.attachEvent("onLightbox",s),t.attachEvent("onAfterLightbox",a),t.attachEvent("onLightboxChange",function(){a(),s()}),t.attachEvent("onAfterQuickInfo",function(){i()}),t.attachEvent("onMessagePopup",function(e){l=t.utils.dom.getActiveElement(),r(e)}),t.attachEvent("onAfterMessagePopup",function(){a(),setTimeout(function(){l&&(l.focus(),l=null)},1)});var l=null;t.$keyboardNavigation.isModal=n}()}},function(t,e,n){t.exports=function(t){var e=n(1),i=n(2).replaceValidZeroId;t.$keyboardNavigation.TaskCell=function(e,n){if(!(e=i(e,t.config.root_id))){var r=t.getChildren(t.config.root_id);r[0]&&(e=r[0])}this.taskId=e,this.columnIndex=n||0,t.isTaskExists(this.taskId)&&(this.index=t.getTaskIndex(this.taskId),this.globalIndex=t.getGlobalTaskIndex(this.taskId))},t.$keyboardNavigation.TaskCell.prototype=t._compose(t.$keyboardNavigation.TaskRow,{_handlers:null,isValid:function(){return t.$keyboardNavigation.TaskRow.prototype.isValid.call(this)&&!!t.getGridColumns()[this.columnIndex]},fallback:function(){var e=t.$keyboardNavigation.TaskRow.prototype.fallback.call(this),n=e;if(e instanceof t.$keyboardNavigation.TaskRow){for(var i=t.getGridColumns(),r=this.columnIndex;r>=0&&!i[r];)r--;i[r]&&(n=new t.$keyboardNavigation.TaskCell(e.taskId,r))}return n},fromDomElement:function(n){if(!t.config.keyboard_navigation_cells)return null;var i=t.locate(n);if(t.isTaskExists(i)){var r=0,a=e.locateAttribute(n,"data-column-index");return a&&(r=1*a.getAttribute("data-column-index")),new t.$keyboardNavigation.TaskCell(i,r)}return null},getNode:function(){if(t.isTaskExists(this.taskId)&&t.isTaskVisible(this.taskId)){if(t.config.show_grid){var e=t.$grid.querySelector(".gantt_row["+t.config.task_attribute+"='"+this.taskId+"']");return e?e.querySelector("[data-column-index='"+this.columnIndex+"']"):null}return t.getTaskNode(this.taskId)}},keys:{up:function(){var e=null,n=t.getPrev(this.taskId);e=t.isTaskExists(n)?new t.$keyboardNavigation.TaskCell(n,this.columnIndex):new t.$keyboardNavigation.HeaderCell(this.columnIndex),this.moveTo(e)},down:function(){var e=t.getNext(this.taskId);t.isTaskExists(e)&&this.moveTo(new t.$keyboardNavigation.TaskCell(e,this.columnIndex))},left:function(){this.columnIndex>0&&this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,this.columnIndex-1))},right:function(){var e=t.getGridColumns();this.columnIndex<e.length-1&&this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,this.columnIndex+1))},end:function(){var e=t.getGridColumns();this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,e.length-1))},home:function(){this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,0))},pagedown:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskCell(t.getTaskByIndex(t.getVisibleTaskCount()-1).id,this.columnIndex))},pageup:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskCell(t.getTaskByIndex(0).id,this.columnIndex))}}}),t.$keyboardNavigation.TaskCell.prototype.bindAll(t.$keyboardNavigation.TaskRow.prototype.keys),t.$keyboardNavigation.TaskCell.prototype.bindAll(t.$keyboardNavigation.TaskCell.prototype.keys)}},function(t,e){t.exports=function(t){t.$keyboardNavigation.TaskRow=function(e){if(!e){var n=t.getChildren(t.config.root_id);n[0]&&(e=n[0])}this.taskId=e,t.isTaskExists(this.taskId)&&(this.index=t.getTaskIndex(this.taskId),this.globalIndex=t.getGlobalTaskIndex(this.taskId))},t.$keyboardNavigation.TaskRow.prototype=t._compose(t.$keyboardNavigation.KeyNavNode,{_handlers:null,isValid:function(){return t.isTaskExists(this.taskId)&&t.getTaskIndex(this.taskId)>-1},fallback:function(){if(!t.getVisibleTaskCount()){var e=new t.$keyboardNavigation.HeaderCell;return e.isValid()?e:null}var n=-1;if(t.getTaskByIndex(this.globalIndex-1))n=this.globalIndex-1;else if(t.getTaskByIndex(this.globalIndex+1))n=this.globalIndex+1;else for(var i=this.globalIndex;i>=0;){if(t.getTaskByIndex(i)){n=i;break}i--}if(n>-1)return new t.$keyboardNavigation.TaskRow(t.getTaskByIndex(n).id)},fromDomElement:function(e){if(t.config.keyboard_navigation_cells)return null;var n=t.locate(e);return t.isTaskExists(n)?new t.$keyboardNavigation.TaskRow(n):null},getNode:function(){if(t.isTaskExists(this.taskId)&&t.isTaskVisible(this.taskId))return t.config.show_grid?t.$grid.querySelector(".gantt_row["+t.config.task_attribute+"='"+this.taskId+"']"):t.getTaskNode(this.taskId)},focus:function(e){if(!e){var n,i,r=t.getTaskPosition(t.getTask(this.taskId)),a=t.getTaskHeight(this.taskId),o=t.getScrollState();n=t.$task?t.$task.offsetWidth:o.inner_width,i=t.$grid_data||t.$task_data?(t.$grid_data||t.$task_data).offsetHeight:o.inner_height,r.top<o.y||r.top+a>o.y+i?t.scrollTo(null,r.top-5*a):t.config.scroll_on_click&&t.config.show_chart&&(r.left>o.x+n?t.scrollTo(r.left-t.config.task_scroll_offset):r.left+r.width<o.x&&t.scrollTo(r.left+r.width-t.config.task_scroll_offset))}t.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this,[e]),function(){var e=t.$ui.getView("grid"),n=parseInt(e.$grid.scrollLeft),i=parseInt(e.$grid_data.scrollTop),r=e.$config.scrollX;if(r&&e.$config.scrollable){var a=t.$ui.getView(r);a&&a.scrollTo(n,i)}var o=e.$config.scrollY;if(o){var s=t.$ui.getView(o);s&&s.scrollTo(n,i)}}()},keys:{pagedown:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskRow(t.getTaskByIndex(t.getVisibleTaskCount()-1).id))},pageup:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskRow(t.getTaskByIndex(0).id))},up:function(){var e=null,n=t.getPrev(this.taskId);e=t.isTaskExists(n)?new t.$keyboardNavigation.TaskRow(n):new t.$keyboardNavigation.HeaderCell,this.moveTo(e)},down:function(){var e=t.getNext(this.taskId);t.isTaskExists(e)&&this.moveTo(new t.$keyboardNavigation.TaskRow(e))},"shift+down":function(){t.hasChild(this.taskId)&&!t.getTask(this.taskId).$open&&t.open(this.taskId)},"shift+up":function(){t.hasChild(this.taskId)&&t.getTask(this.taskId).$open&&t.close(this.taskId)},"shift+right":function(){if(!t.isReadonly(this)){var e=t.getPrevSibling(this.taskId);if(t.isTaskExists(e)&&!t.isChildOf(this.taskId,e))t.getTask(e).$open=!0,!1!==t.moveTask(this.taskId,-1,e)&&t.updateTask(this.taskId)}},"shift+left":function(){if(!t.isReadonly(this)){var e=t.getParent(this.taskId);if(t.isTaskExists(e))!1!==t.moveTask(this.taskId,t.getTaskIndex(e)+1,t.getParent(e))&&t.updateTask(this.taskId)}},space:function(e){t.isSelectedTask(this.taskId)?t.unselectTask(this.taskId):t.selectTask(this.taskId)},"ctrl+left":function(e){t.close(this.taskId)},"ctrl+right":function(e){t.open(this.taskId)},delete:function(e){t.isReadonly(this)||t.$click.buttons.delete(this.taskId)},enter:function(){t.isReadonly(this)||t.showLightbox(this.taskId)},"ctrl+enter":function(){t.isReadonly(this)||t.createTask({},this.taskId)}}}),t.$keyboardNavigation.TaskRow.prototype.bindAll(t.$keyboardNavigation.TaskRow.prototype.keys)}},function(t,e,n){t.exports=function(t){var e=n(1);t.$keyboardNavigation.HeaderCell=function(t){this.index=t||0},t.$keyboardNavigation.HeaderCell.prototype=t._compose(t.$keyboardNavigation.KeyNavNode,{_handlers:null,isValid:function(){return!(!t.config.show_grid&&t.getVisibleTaskCount())&&(!!t.getGridColumns()[this.index]||!t.getVisibleTaskCount())},fallback:function(){if(!t.config.show_grid)return t.getVisibleTaskCount()?new t.$keyboardNavigation.TaskRow:null;for(var e=t.getGridColumns(),n=this.index;n>=0&&!e[n];)n--;return e[n]?new t.$keyboardNavigation.HeaderCell(n):null},fromDomElement:function(n){var i=e.locateClassName(n,"gantt_grid_head_cell");if(i){for(var r=0;i&&i.previousSibling;)i=i.previousSibling,r+=1;return new t.$keyboardNavigation.HeaderCell(r)}return null},getNode:function(){return t.$grid_scale.childNodes[this.index]},keys:{left:function(){this.index>0&&this.moveTo(new t.$keyboardNavigation.HeaderCell(this.index-1))},right:function(){var e=t.getGridColumns();this.index<e.length-1&&this.moveTo(new t.$keyboardNavigation.HeaderCell(this.index+1))},down:function(){var e,n=t.getChildren(t.config.root_id);t.isTaskExists(n[0])&&(e=n[0]),e&&(t.config.keyboard_navigation_cells?this.moveTo(new t.$keyboardNavigation.TaskCell(e,this.index)):this.moveTo(new t.$keyboardNavigation.TaskRow(e)))},end:function(){var e=t.getGridColumns();this.moveTo(new t.$keyboardNavigation.HeaderCell(e.length-1))},home:function(){this.moveTo(new t.$keyboardNavigation.HeaderCell(0))},"enter, space":function(){e.getActiveElement().click()},"ctrl+enter":function(){t.isReadonly(this)||t.createTask({},this.taskId)}}}),t.$keyboardNavigation.HeaderCell.prototype.bindAll(t.$keyboardNavigation.HeaderCell.prototype.keys)}},function(t,e){t.exports=function(t){t.$keyboardNavigation.KeyNavNode=function(){},t.$keyboardNavigation.KeyNavNode.prototype=t._compose(t.$keyboardNavigation.EventHandler,{isValid:function(){return!0},fallback:function(){return null},moveTo:function(e){t.$keyboardNavigation.dispatcher.setActiveNode(e)},compareTo:function(t){if(!t)return!1;for(var e in this){if(!!this[e]!=!!t[e])return!1;var n=!(!this[e]||!this[e].toString),i=!(!t[e]||!t[e].toString);if(i!=n)return!1;if(i&&n){if(t[e].toString()!=this[e].toString())return!1}else if(t[e]!=this[e])return!1}return!0},getNode:function(){},focus:function(){var e=this.getNode();if(e){var n=t.$keyboardNavigation.facade;!1!==n.callEvent("onBeforeFocus",[e])&&e&&(e.setAttribute("tabindex","-1"),e.$eventAttached||(e.$eventAttached=!0,t.event(e,"focus",function(t){return t.preventDefault(),!1},!1)),t.utils.dom.isChildOf(document.activeElement,e)&&(e=document.activeElement),e.focus&&e.focus(),n.callEvent("onFocus",[this.getNode()]))}},blur:function(){var e=this.getNode();e&&(t.$keyboardNavigation.facade.callEvent("onBlur",[e]),e.setAttribute("tabindex","-1"))}})}},function(t,e){t.exports=function(t){t.$keyboardNavigation.GanttNode=function(){},t.$keyboardNavigation.GanttNode.prototype=t._compose(t.$keyboardNavigation.EventHandler,{focus:function(){t.focus()},blur:function(){},isEnabled:function(){return t.$container.hasAttribute("tabindex")},scrollHorizontal:function(e){var n=t.dateFromPos(t.getScrollState().x),i=t.getScale(),r=e<0?-i.step:i.step;n=t.date.add(n,r,i.unit),t.scrollTo(t.posFromDate(n))},scrollVertical:function(e){var n=t.getScrollState().y,i=t.config.row_height;t.scrollTo(null,n+(e<0?-1:1)*i)},keys:{"alt+left":function(t){this.scrollHorizontal(-1)},"alt+right":function(t){this.scrollHorizontal(1)},"alt+up":function(t){this.scrollVertical(-1)},"alt+down":function(t){this.scrollVertical(1)},"ctrl+z":function(){t.undo&&t.undo()},"ctrl+r":function(){t.redo&&t.redo()}}}),t.$keyboardNavigation.GanttNode.prototype.bindAll(t.$keyboardNavigation.GanttNode.prototype.keys)}},function(t,e,n){t.exports=function(t){!function(){var e=n(1);t.$keyboardNavigation.getFocusableNodes=e.getFocusableNodes,t.$keyboardNavigation.trapFocus=function(n,i){if(9!=i.keyCode)return!1;for(var r=t.$keyboardNavigation.getFocusableNodes(n),a=e.getActiveElement(),o=-1,s=0;s<r.length;s++)if(r[s]==a){o=s;break}if(i.shiftKey){if(o<=0){var l=r[r.length-1];if(l)return l.focus(),i.preventDefault(),!0}}else if(o>=r.length-1){var c=r[0];if(c)return c.focus(),i.preventDefault(),!0}return!1}}()}},function(t,e){t.exports=function(t){t.$keyboardNavigation.EventHandler={_handlers:null,findHandler:function(e){this._handlers||(this._handlers={});var n=t.$keyboardNavigation.shortcuts.getHash(e);return this._handlers[n]},doAction:function(e,n){var i=this.findHandler(e);if(i){if(!1===t.$keyboardNavigation.facade.callEvent("onBeforeAction",[e,n]))return;i.call(this,n),n.preventDefault?n.preventDefault():n.returnValue=!1}},bind:function(e,n){this._handlers||(this._handlers={});for(var i=t.$keyboardNavigation.shortcuts,r=i.parse(e),a=0;a<r.length;a++)this._handlers[i.getHash(r[a])]=n},unbind:function(e){for(var n=t.$keyboardNavigation.shortcuts,i=n.parse(e),r=0;r<i.length;r++)this._handlers[n.getHash(i[r])]&&delete this._handlers[n.getHash(i[r])]},bindAll:function(t){for(var e in t)this.bind(e,t[e])},initKeys:function(){this._handlers||(this._handlers={}),this.keys&&this.bindAll(this.keys)}}}},function(t,e){t.exports=function(t){t.$keyboardNavigation.shortcuts={createCommand:function(){return{modifiers:{shift:!1,alt:!1,ctrl:!1,meta:!1},keyCode:null}},parse:function(t){for(var e=[],n=this.getExpressions(this.trim(t)),i=0;i<n.length;i++){for(var r=this.getWords(n[i]),a=this.createCommand(),o=0;o<r.length;o++)this.commandKeys[r[o]]?a.modifiers[r[o]]=!0:this.specialKeys[r[o]]?a.keyCode=this.specialKeys[r[o]]:a.keyCode=r[o].charCodeAt(0);e.push(a)}return e},getCommandFromEvent:function(t){var e=this.createCommand();e.modifiers.shift=!!t.shiftKey,e.modifiers.alt=!!t.altKey,e.modifiers.ctrl=!!t.ctrlKey,e.modifiers.meta=!!t.metaKey,e.keyCode=t.which||t.keyCode,e.keyCode>=96&&e.keyCode<=105&&(e.keyCode-=48);var n=String.fromCharCode(e.keyCode);return n&&(e.keyCode=n.toLowerCase().charCodeAt(0)),e},getHashFromEvent:function(t){return this.getHash(this.getCommandFromEvent(t))},getHash:function(t){var e=[];for(var n in t.modifiers)t.modifiers[n]&&e.push(n);return e.push(t.keyCode),e.join(this.junctionChar)},getExpressions:function(t){return t.split(this.junctionChar)},getWords:function(t){return t.split(this.combinationChar)},trim:function(t){return t.replace(/\s/g,"")},junctionChar:",",combinationChar:"+",commandKeys:{shift:16,alt:18,ctrl:17,meta:!0},specialKeys:{backspace:8,tab:9,enter:13,esc:27,space:32,up:38,down:40,left:37,right:39,home:36,end:35,pageup:33,pagedown:34,delete:46,insert:45,plus:107,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123}}}},function(t,e,n){t.exports=function(t){var e=n(5);!function(t){t.config.keyboard_navigation=!0,t.config.keyboard_navigation_cells=!1,t.$keyboardNavigation={},t._compose=function(){for(var t=Array.prototype.slice.call(arguments,0),e={},n=0;n<t.length;n++){var i=t[n];for(var r in"function"==typeof i&&(i=new i),i)e[r]=i[r]}return e},n(270)(t),n(269)(t),n(268)(t),n(267)(t),n(266)(t),n(265)(t),n(264)(t),n(263)(t),n(262)(t),n(261)(t);var i=n(1);!function(){var n=t.$keyboardNavigation.dispatcher;n.isTaskFocused=function(e){var i=n.activeNode;return(i instanceof t.$keyboardNavigation.TaskRow||i instanceof t.$keyboardNavigation.TaskCell)&&i.taskId==e};var r=function(e){if(t.config.keyboard_navigation&&(t.config.keyboard_navigation_cells||!s(e))&&!l(e)&&!function(t){return!!i.closest(t.target,".gantt_cal_light")}(e))return n.keyDownHandler(e)},a=function(e){if(n.$preventDefault)return e.preventDefault(),t.$container.blur(),!1;n.awaitsFocus()||n.focusGlobalNode()},o=function(){if(n.isEnabled()){var e=!i.isChildOf(document.activeElement,t.$container)&&"body"!=document.activeElement.localName,r=n.getActiveNode();if(r&&!e){var a,o,s=r.getNode();s&&s.parentNode&&(a=s.parentNode.scrollTop,o=s.parentNode.scrollLeft),r.focus(!0),s&&s.parentNode&&(s.parentNode.scrollTop=a,s.parentNode.scrollLeft=o)}}};function s(t){return!!i.closest(t.target,".gantt_grid_editor_placeholder")}function l(t){return!!i.closest(t.target,".no_keyboard_navigation")}function c(e){if(!t.config.keyboard_navigation)return!0;if(!t.config.keyboard_navigation_cells&&s(e))return!0;if(!l(e)){var r,a=n.fromDomElement(e);a&&(n.activeNode instanceof t.$keyboardNavigation.TaskCell&&i.isChildOf(e.target,t.$task)&&(a=new t.$keyboardNavigation.TaskCell(a.taskId,n.activeNode.columnIndex)),r=a),r?n.isEnabled()?n.delay(function(){n.setActiveNode(r)}):n.activeNode=r:(n.$preventDefault=!0,setTimeout(function(){n.$preventDefault=!1},300))}}t.attachEvent("onDataRender",function(){t.config.keyboard_navigation&&o()}),t.attachEvent("onGanttRender",function(){t.eventRemove(t.$root,"keydown",r),t.eventRemove(t.$container,"focus",a),t.eventRemove(t.$container,"mousedown",c),t.config.keyboard_navigation?(t.event(t.$root,"keydown",r),t.event(t.$container,"focus",a),t.event(t.$container,"mousedown",c),t.$container.setAttribute("tabindex","0")):t.$container.removeAttribute("tabindex")});var u=t.attachEvent("onGanttReady",function(){if(t.detachEvent(u),t.$data.tasksStore.attachEvent("onStoreUpdated",function(e){if(t.config.keyboard_navigation&&n.isEnabled()){var i=n.getActiveNode();i&&i.taskId==e&&o()}}),t._smart_render){var e=t._smart_render._redrawTasks;t._smart_render._redrawTasks=function(i,r){if(t.config.keyboard_navigation&&n.isEnabled()){var a=n.getActiveNode();if(a&&void 0!==a.taskId){for(var o=!1,s=0;s<r.length;s++)if(r[s].id==a.taskId&&r[s].start_date){o=!0;break}o||r.push(t.getTask(a.taskId))}}return e.apply(this,arguments)}}}),d=null,h=!1;t.attachEvent("onTaskCreated",function(t){return d=t.id,!0}),t.attachEvent("onAfterTaskAdd",function(e,i){if(!t.config.keyboard_navigation)return!0;if(n.isEnabled()){if(e==d&&(h=!0,setTimeout(function(){h=!1,d=null})),h&&i.type==t.config.types.placeholder)return;var r=0,a=n.activeNode;a instanceof t.$keyboardNavigation.TaskCell&&(r=a.columnIndex);var o=t.config.keyboard_navigation_cells?t.$keyboardNavigation.TaskCell:t.$keyboardNavigation.TaskRow;i.type==t.config.types.placeholder&&!1===t.config.placeholder_task.focusOnCreate||n.setActiveNode(new o(e,r))}}),t.attachEvent("onTaskIdChange",function(e,i){if(!t.config.keyboard_navigation)return!0;var r=n.activeNode;return n.isTaskFocused(e)&&(r.taskId=i),!0});var f=setInterval(function(){t.config.keyboard_navigation&&(n.isEnabled()||n.enable())},500);function _(e){var n={gantt:t.$keyboardNavigation.GanttNode,headerCell:t.$keyboardNavigation.HeaderCell,taskRow:t.$keyboardNavigation.TaskRow,taskCell:t.$keyboardNavigation.TaskCell};return n[e]||n.gantt}function g(e){for(var n=t.getGridColumns(),i=0;i<n.length;i++)if(n[i].name==e)return i;return 0}t.attachEvent("onDestroy",function(){clearInterval(f)});var p={};e(p),t.mixin(p,{addShortcut:function(t,e,n){var i=_(n);i&&i.prototype.bind(t,e)},getShortcutHandler:function(e,n){var i=t.$keyboardNavigation.shortcuts.parse(e);if(i.length)return p.getCommandHandler(i[0],n)},getCommandHandler:function(t,e){var n=_(e);if(n&&t)return n.prototype.findHandler(t)},removeShortcut:function(t,e){var n=_(e);n&&n.prototype.unbind(t)},focus:function(t){var e,i=t?t.type:null,r=_(i);switch(i){case"taskCell":e=new r(t.id,g(t.column));break;case"taskRow":e=new r(t.id);break;case"headerCell":e=new r(g(t.column))}n.delay(function(){e?n.setActiveNode(e):(n.enable(),n.getActiveNode()?n.awaitsFocus()||n.enable():n.setDefaultNode())})},getActiveNode:function(){if(n.isEnabled()){var e=n.getActiveNode(),i=function(e){return e instanceof t.$keyboardNavigation.GanttNode?"gantt":e instanceof t.$keyboardNavigation.HeaderCell?"headerCell":e instanceof t.$keyboardNavigation.TaskRow?"taskRow":e instanceof t.$keyboardNavigation.TaskCell?"taskCell":null}(e),r=t.getGridColumns();switch(i){case"taskCell":return{type:"taskCell",id:e.taskId,column:r[e.columnIndex].name};case"taskRow":return{type:"taskRow",id:e.taskId};case"headerCell":return{type:"headerCell",column:r[e.index].name}}}return null}}),t.$keyboardNavigation.facade=p,t.ext.keyboardNavigation=p,t.focus=function(){p.focus()},t.addShortcut=p.addShortcut,t.getShortcutHandler=p.getShortcutHandler,t.removeShortcut=p.removeShortcut}()}(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(){var t=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;return!(!t||t!==document.body)}function n(){try{return document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled}catch(t){console.error("Fullscreen is not available:",t)}}t.$services.getService("state").registerProvider("fullscreen",function(){return n()?{fullscreen:e()}:void 0});var i={overflow:null,padding:null,paddingTop:null,paddingRight:null,paddingBottom:null,paddingLeft:null},r={width:null,height:null,top:null,left:null,position:null,zIndex:null,modified:!1},a=null;function o(t,e){e.width=t.width,e.height=t.height,e.top=t.top,e.left=t.left,e.position=t.position,e.zIndex=t.zIndex}var s=!1;function l(){var n;t.$container&&(e()?s&&(n="onExpand",function(){var e=t.ext.fullscreen.getFullscreenElement(),n=document.body;o(e.style,r),i={overflow:n.style.overflow,padding:n.style.padding?n.style.padding:null,paddingTop:n.style.paddingTop?n.style.paddingTop:null,paddingRight:n.style.paddingRight?n.style.paddingRight:null,paddingBottom:n.style.paddingBottom?n.style.paddingBottom:null,paddingLeft:n.style.paddingLeft?n.style.paddingLeft:null},n.style.padding&&(n.style.padding="0"),n.style.paddingTop&&(n.style.paddingTop="0"),n.style.paddingRight&&(n.style.paddingRight="0"),n.style.paddingBottom&&(n.style.paddingBottom="0"),n.style.paddingLeft&&(n.style.paddingLeft="0"),n.style.overflow="hidden",e.style.width="100vw",e.style.height="100vh",e.style.top="0px",e.style.left="0px",e.style.position="absolute",e.style.zIndex=1,r.modified=!0,a=function(t){for(var e=t.parentNode,n=[];e&&e.style;)n.push({element:e,originalPositioning:e.style.position}),e.style.position="static",e=e.parentNode;return n}(e)}()):s&&(s=!1,n="onCollapse",function(){var e=t.ext.fullscreen.getFullscreenElement(),n=document.body;r.modified&&(i.padding&&(n.style.padding=i.padding),i.paddingTop&&(n.style.paddingTop=i.paddingTop),i.paddingRight&&(n.style.paddingRight=i.paddingRight),i.paddingBottom&&(n.style.paddingBottom=i.paddingBottom),i.paddingLeft&&(n.style.paddingLeft=i.paddingLeft),n.style.overflow=i.overflow,i={overflow:null,padding:null,paddingTop:null,paddingRight:null,paddingBottom:null,paddingLeft:null},o(r,e.style),r.modified=!1),function(t){t.forEach(function(t){t.element.style.position=t.originalPositioning})}(a),a=null}()),setTimeout(function(){t.render()}),setTimeout(function(){t.callEvent(n,[t.ext.fullscreen.getFullscreenElement()])}))}function c(){return!t.$container||!t.ext.fullscreen.getFullscreenElement()||!n()&&((console.warning||console.log)("The `fullscreen` feature not being allowed, or full-screen mode not being supported"),!0)}t.ext.fullscreen={expand:function(){if(!c()&&!e()&&t.callEvent("onBeforeExpand",[this.getFullscreenElement()])){s=!0;var n=document.body,i=n.webkitRequestFullscreen?[Element.ALLOW_KEYBOARD_INPUT]:[],r=n.msRequestFullscreen||n.mozRequestFullScreen||n.webkitRequestFullscreen||n.requestFullscreen;r&&r.apply(n,i)}},collapse:function(){if(!c()&&e()&&t.callEvent("onBeforeCollapse",[this.getFullscreenElement()])){var n=document.msExitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.exitFullscreen;n&&n.apply(document)}},toggle:function(){c()||(e()?this.collapse():this.expand())},getFullscreenElement:function(){return t.$root}},t.expand=function(){t.ext.fullscreen.expand()},t.collapse=function(){t.ext.fullscreen.collapse()},t.attachEvent("onGanttReady",function(){t.event(document,"webkitfullscreenchange",l),t.event(document,"mozfullscreenchange",l),t.event(document,"MSFullscreenChange",l),t.event(document,"fullscreenChange",l),t.event(document,"fullscreenchange",l)})}},function(t,e,n){"use strict";function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(t){switch(i(t)){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,l){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"===i(t)?o(s(t),function(i){var s=encodeURIComponent(r(i))+n;return a(t[i])?o(t[i],function(t){return s+encodeURIComponent(r(t))}).join(e):s+encodeURIComponent(r(t[i]))}).join(e):l?encodeURIComponent(r(l))+n+encodeURIComponent(r(t)):""};var a=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,e){if(t.map)return t.map(e);for(var n=[],i=0;i<t.length;i++)n.push(e(t[i],i));return n}var s=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,a){e=e||"&",n=n||"=";var o={};if("string"!=typeof t||0===t.length)return o;var s=/\+/g;t=t.split(e);var l=1e3;a&&"number"==typeof a.maxKeys&&(l=a.maxKeys);var c=t.length;l>0&&c>l&&(c=l);for(var u=0;u<c;++u){var d,h,f,_,g=t[u].replace(s,"%20"),p=g.indexOf(n);p>=0?(d=g.substr(0,p),h=g.substr(p+1)):(d=g,h=""),f=decodeURIComponent(d),_=decodeURIComponent(h),i(o,f)?r(o[f])?o[f].push(_):o[f]=[o[f],_]:o[f]=_}return o};var r=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";e.decode=e.parse=n(274),e.encode=e.stringify=n(273)},function(t,e,n){"use strict";function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"===i(t)&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){(function(t,i){var r;function a(t){"@babel/helpers - typeof";return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)} + */!function(n){"object"==l(e)&&void 0!==t?t.exports=n():(o=[],void 0===(s="function"==typeof(a=n)?a.apply(e,o):a)||(t.exports=s))}(function(){var t,e,a;return function t(e,n,i){function r(o,s){if(!n[o]){if(!e[o]){var l="function"==typeof _dereq_&&_dereq_;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};e[o][0].call(u.exports,function(t){var n=e[o][1][t];return r(n||t)},u,u.exports,t,e,n,i)}return n[o].exports}for(var a="function"==typeof _dereq_&&_dereq_,o=0;o<i.length;o++)r(i[o]);return r}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),i=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),i}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,e,i){"use strict";var r;try{throw new Error}catch(t){r=t}var a=t("./schedule"),o=t("./queue"),s=t("./util");function l(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new o(16),this._normalQueue=new o(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=a}function c(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function u(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function d(t){this._normalQueue._pushOne(t),this._queueTick()}function h(t){for(;t.length()>0;)f(t)}function f(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),i=t.shift();e.call(n,i)}}l.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(t,e){e?(n.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),n.exit(2)):this.throwLater(t)},l.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?c.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},l.prototype.invoke=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},l.prototype.settlePromises=function(t){this._trampolineEnabled?d.call(this,t):this._schedule(function(){t._settlePromises()})}):(l.prototype.invokeLater=c,l.prototype.invoke=u,l.prototype.settlePromises=d),l.prototype._drainQueues=function(){h(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,h(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},e.exports=l,e.exports.firstLineError=r},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,i){var r=!1,a=function(t,e){this._reject(e)},o=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(a,a,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},l=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(a){r||(r=!0,t.prototype._propagateFrom=i.propagateFromFunction(),t.prototype._boundValue=i.boundValueFunction());var c=n(a),u=new t(e);u._propagateFrom(this,1);var d=this._target();if(u._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:d,bindingPromise:c};d._then(e,o,void 0,u,h),c._then(s,l,void 0,u,h),u._setOnCancel(c)}else u._resolveCallback(d);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var i;"undefined"!=typeof Promise&&(i=Promise);var r=t("./promise")();r.noConflict=function(){try{Promise===r&&(Promise=i)}catch(t){}return r},e.exports=r},{"./promise":22}],5:[function(t,e,n){"use strict";var i=Object.create;if(i){var r=i(null),a=i(null);r[" size"]=a[" size"]=0}e.exports=function(e){var n=t("./util"),i=n.canEvaluate;n.isIdentifier;function r(t){return function(t,i){var r;if(null!=t&&(r=t[i]),"function"!=typeof r){var a="Object "+n.classString(t)+" has no method '"+n.toString(i)+"'";throw new e.TypeError(a)}return r}(t,this.pop()).apply(t,this)}function a(t){return t[this]}function o(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e;if("number"==typeof t)e=o;else if(i){var n=(void 0)(t);e=null!==n?n:a}else e=a;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,i,r){var a=t("./util"),o=a.tryCatch,s=a.errorObj,l=e._async;e.prototype.break=e.prototype.cancel=function(){if(!r.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(a.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var i=o(t).call(this._boundValue());i===s&&(this._attachExtraTrace(i.e),l.throwLater(i.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),l.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),i=t("./es5").keys,r=n.tryCatch,a=n.errorObj;return function(t,o,s){return function(l){var c=s._boundValue();t:for(var u=0;u<t.length;++u){var d=t[u];if(d===Error||null!=d&&d.prototype instanceof Error){if(l instanceof d)return r(o).call(c,l)}else if("function"==typeof d){var h=r(d).call(c,l);if(h===a)return h;if(h)return r(o).call(c,l)}else if(n.isObject(l)){for(var f=i(d),_=0;_<f.length;++_){var g=f[_];if(d[g]!=l[g])continue t}return r(o).call(c,l)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function i(){this._trace=new i.CapturedTrace(r())}function r(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},i.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},i.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},i.CapturedTrace=null,i.create=function(){if(e)return new i},i.deactivateLongStackTraces=function(){},i.activateLongStackTraces=function(){var n=t.prototype._pushContext,a=t.prototype._popContext,o=t._peekContext,s=t.prototype._peekContext,l=t.prototype._promiseCreated;i.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=a,t._peekContext=o,t.prototype._peekContext=s,t.prototype._promiseCreated=l,e=!1},e=!0,t.prototype._pushContext=i.prototype._pushContext,t.prototype._popContext=i.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},i}},{}],9:[function(t,e,i){"use strict";e.exports=function(e,i){var r,a,o,s=e._getDomain,c=e._async,u=t("./errors").Warning,d=t("./util"),h=t("./es5"),f=d.canAttachTrace,_=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,g=/\((?:timers\.js):\d+:\d+\)/,p=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,m=null,y=!1,k=!(0==d.env("BLUEBIRD_DEBUG")),b=!(0==d.env("BLUEBIRD_WARNINGS")||!k&&!d.env("BLUEBIRD_WARNINGS")),x=!(0==d.env("BLUEBIRD_LONG_STACK_TRACES")||!k&&!d.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=d.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!d.env("BLUEBIRD_W_FORGOTTEN_RETURN"));e.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},e.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},e.prototype._notifyUnhandledRejectionIsHandled=function(){q("rejectionHandled",r,void 0,this)},e.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},e.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q("unhandledRejection",a,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return z(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var e=s();a="function"==typeof t?null===e?t:d.domainBind(e,t):void 0},e.onUnhandledRejectionHandled=function(t){var e=s();r="function"==typeof t?null===e?t:d.domainBind(e,t):void 0};var S=function(){};e.longStackTraces=function(){if(c.haveItemsQueued()&&!tt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!tt.longStackTraces&&Y()){var t=e.prototype._captureStackTrace,n=e.prototype._attachExtraTrace,r=e.prototype._dereferenceTrace;tt.longStackTraces=!0,S=function(){if(c.haveItemsQueued()&&!tt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=n,e.prototype._dereferenceTrace=r,i.deactivateLongStackTraces(),c.enableTrampoline(),tt.longStackTraces=!1},e.prototype._captureStackTrace=H,e.prototype._attachExtraTrace=F,e.prototype._dereferenceTrace=B,i.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},e.hasLongStackTraces=function(){return tt.longStackTraces&&Y()};var T=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return d.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};h.defineProperty(n,"promise",{value:e.promise}),h.defineProperty(n,"reason",{value:e.reason});var i=new CustomEvent(t.toLowerCase(),n);return!d.global.dispatchEvent(i)}}if("function"==typeof Event){t=new Event("CustomEvent");return d.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,h.defineProperty(n,"promise",{value:e.promise}),h.defineProperty(n,"reason",{value:e.reason}),!d.global.dispatchEvent(n)}}return(t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),d.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!d.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),$=d.isNode?function(){return n.emit.apply(n,arguments)}:d.global?function(t){var e="on"+t.toLowerCase(),n=d.global[e];return!!n&&(n.apply(d.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function C(t,e){return{promise:e}}var E={promiseCreated:C,promiseFulfilled:C,promiseRejected:C,promiseResolved:C,promiseCancelled:C,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:C},A=function(t){var e=!1;try{e=$.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=T(t,E[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function D(){return!1}function M(t,e,n){var i=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+d.toString(t));i._attachCancellationCallback(t)})}catch(t){return t}}function I(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?d.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function P(){return this._onCancelField}function N(t){this._onCancelField=t}function O(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}e.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&S()),"warnings"in t){var n=t.warnings;tt.warnings=!!n,w=tt.warnings,d.isObject(n)&&"wForgottenReturn"in n&&(w=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!tt.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=O,e.prototype._propagateFrom=L,e.prototype._onCancel=P,e.prototype._setOnCancel=N,e.prototype._attachCancellationCallback=I,e.prototype._execute=M,R=L,tt.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!tt.monitoring?(tt.monitoring=!0,e.prototype._fireEvent=A):!t.monitoring&&tt.monitoring&&(tt.monitoring=!1,e.prototype._fireEvent=D)),e},e.prototype._fireEvent=D,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._dereferenceTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var R=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function j(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function H(){this._trace=new Q(this._peekContext())}function F(t,e){if(f(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var i=W(t);d.notEnumerableProp(t,"stack",i.message+"\n"+i.stack.join("\n")),d.notEnumerableProp(t,"__stackCleaned__",!0)}}}function B(){this._trace=void 0}function z(t,n,i){if(tt.warnings){var r,a=new u(t);if(n)i._attachExtraTrace(a);else if(tt.longStackTraces&&(r=e._peekContext()))r.attachExtraTrace(a);else{var o=W(a);a.stack=o.message+"\n"+o.stack.join("\n")}A("warning",a)||V(a,"",!0)}}function U(t){for(var e=[],n=0;n<t.length;++n){var i=t[n],r=" (No stack trace)"===i||v.test(i),a=r&&J(i);r&&!a&&(y&&" "!==i.charAt(0)&&(i=" "+i),e.push(i))}return e}function W(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var i=e[n];if(" (No stack trace)"===i||v.test(i))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:U(e)}}function V(t,e,n){if("undefined"!=typeof console){var i;if(d.isObject(t)){var r=t.stack;i=e+m(r,t)}else i=e+String(t);"function"==typeof o?o(i,n):"function"!=typeof console.log&&"object"!==l(console.log)||console.log(i)}}function q(t,e,n,i){var r=!1;try{"function"==typeof e&&(r=!0,"rejectionHandled"===t?e(i):e(n,i))}catch(t){c.throwLater(t)}"unhandledRejection"===t?A(t,n,i)||r||V(n,"Unhandled rejection "):A(t,i)}function G(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():d.toString(t);if(/\[object [a-zA-Z0-9$_]+\]/.test(e))try{e=JSON.stringify(t)}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){if(t.length<41)return t;return t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof Z}var J=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function K(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function Q(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Z(this,Q),e>32&&this.uncycle()}d.inherits(Q,Error),i.CapturedTrace=Q,Q.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},i=0,r=this;void 0!==r;++i)e.push(r),r=r._parent;for(i=(t=this._length=i)-1;i>=0;--i){var a=e[i].stack;void 0===n[a]&&(n[a]=i)}for(i=0;i<t;++i){var o=n[e[i].stack];if(void 0!==o&&o!==i){o>0&&(e[o-1]._parent=void 0,e[o-1]._length=1),e[i]._parent=void 0,e[i]._length=1;var s=i>0?e[i-1]:this;o<t-1?(s._parent=e[o+1],s._parent.uncycle(),s._length=s._parent._length+1):(s._parent=void 0,s._length=1);for(var l=s._length+1,c=i-2;c>=0;--c)e[c]._length=l,l++;return}}}},Q.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=W(t),n=e.message,i=[e.stack],r=this;void 0!==r;)i.push(U(r.stack.split("\n"))),r=r._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var i=t[n],r=e.length-1,a=e[r],o=-1,s=i.length-1;s>=0;--s)if(i[s]===a){o=s;break}for(s=o;s>=0;--s){var l=i[s];if(e[r]!==l)break;e.pop(),r--}e=i}}(i),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(i),d.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,i)),d.notEnumerableProp(t,"__stackCleaned__",!0)}};var Z=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():G(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,m=e;var n=Error.captureStackTrace;return J=function(t){return _.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var i,r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,m=e,y=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){i="stack"in t}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(m=function(t,e){return"string"==typeof t?t:"object"!==l(e)&&"function"!=typeof e||void 0===e.name||void 0===e.message?G(e):e.toString()},null):(v=t,m=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(o=function(t){console.warn(t)},d.isNode&&n.stderr.isTTY?o=function(t,e){var n=e?"[33m":"[31m";console.warn(n+t+"[0m\n")}:d.isNode||"string"!=typeof(new Error).stack||(o=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var tt={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return x&&e.longStackTraces(),{longStackTraces:function(){return tt.longStackTraces},warnings:function(){return tt.warnings},cancellation:function(){return tt.cancellation},monitoring:function(){return tt.monitoring},propagateFromFunction:function(){return R},boundValueFunction:function(){return j},checkForgottenReturns:function(t,e,n,i,r){if(void 0===t&&null!==e&&w){if(void 0!==r&&r._returnedNonUndefined())return;if(0==(65535&i._bitField))return;n&&(n+=" ");var a="",o="";if(e._trace){for(var s=e._trace.stack.split("\n"),l=U(s),c=l.length-1;c>=0;--c){var u=l[c];if(!g.test(u)){var d=u.match(p);d&&(a="at "+d[1]+":"+d[2]+":"+d[3]+" ");break}}if(l.length>0){var h=l[0];for(c=0;c<s.length;++c)if(s[c]===h){c>0&&(o="\n"+s[c-1]);break}}}var f="a promise was created in a "+n+"handler "+a+"but was not returned from it, see http://goo.gl/rRqMUw"+o;i._warn(f,!0,e)}},setBounds:function(t,e){if(Y()){for(var n,i,r=t.stack.split("\n"),a=e.stack.split("\n"),o=-1,s=-1,l=0;l<r.length;++l)if(c=K(r[l])){n=c.fileName,o=c.line;break}for(l=0;l<a.length;++l){var c;if(c=K(a[l])){i=c.fileName,s=c.line;break}}o<0||s<0||!n||!i||n!==i||o>=s||(J=function(t){if(_.test(t))return!0;var e=K(t);return!!(e&&e.fileName===n&&o<=e.line&&e.line<=s)})}},warn:z,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),z(n)},CapturedTrace:Q,fireDomEvent:T,fireGlobalEvent:$}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var i=arguments[1];i instanceof t&&i.suppressUnhandledRejections();return this.caught(n,function(){return i})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,i=t.all;function r(){return i(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(r,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,i){return n(t,i,e,0)._then(r,void 0,void 0,t,void 0)},t.mapSeries=function(t,i){return n(t,i,e,e)}}},{}],12:[function(t,e,n){"use strict";var i,r,a=t("./es5"),o=a.freeze,s=t("./util"),l=s.inherits,c=s.notEnumerableProp;function u(t,e){function n(i){if(!(this instanceof n))return new n(i);c(this,"message","string"==typeof i?i:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(n,Error),n}var d=u("Warning","warning"),h=u("CancellationError","cancellation error"),f=u("TimeoutError","timeout error"),_=u("AggregateError","aggregate error");try{i=TypeError,r=RangeError}catch(t){i=u("TypeError","type error"),r=u("RangeError","range error")}for(var g="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),p=0;p<g.length;++p)"function"==typeof Array.prototype[g[p]]&&(_.prototype[g[p]]=Array.prototype[g[p]]);a.defineProperty(_.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),_.prototype.isOperational=!0;var v=0;function m(t){if(!(this instanceof m))return new m(t);c(this,"name","OperationalError"),c(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(c(this,"message",t.message),c(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}_.prototype.toString=function(){var t=Array(4*v+1).join(" "),e="\n"+t+"AggregateError of:\n";v++,t=Array(4*v+1).join(" ");for(var n=0;n<this.length;++n){for(var i=this[n]===this?"[Circular AggregateError]":this[n]+"",r=i.split("\n"),a=0;a<r.length;++a)r[a]=t+r[a];e+=(i=r.join("\n"))+"\n"}return v--,e},l(m,Error);var y=Error.__BluebirdErrorTypes__;y||(y=o({CancellationError:h,TimeoutError:f,OperationalError:m,RejectionError:m,AggregateError:_}),a.defineProperty(Error,"__BluebirdErrorTypes__",{value:y,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:i,RangeError:r,CancellationError:y.CancellationError,OperationalError:y.OperationalError,TimeoutError:y.TimeoutError,AggregateError:y.AggregateError,Warning:d}},{"./es5":13,"./util":36}],13:[function(t,e,n){var i=function(){"use strict";return void 0===this}();if(i)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:i,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var r={}.hasOwnProperty,a={}.toString,o={}.constructor.prototype,s=function(t){var e=[];for(var n in t)r.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===a.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return o}},isES5:i,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,i){return n(this,t,i,e)},t.filter=function(t,i,r){return n(t,i,r,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=t("./util"),a=e.CancellationError,o=r.errorObj,s=t("./catch_filter")(i);function l(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function c(t){this.finallyHandler=t}function u(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function d(){return f.call(this,this.promise._target()._settledValue())}function h(t){if(!u(this,t))return o.e=t,o}function f(t){var r=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(r._boundValue()):s.call(r._boundValue(),t);if(l===i)return l;if(void 0!==l){r._setReturnedNonUndefined();var f=n(l,r);if(f instanceof e){if(null!=this.cancelPromise){if(f._isCancelled()){var _=new a("late cancellation observer");return r._attachExtraTrace(_),o.e=_,o}f.isPending()&&f._attachCancellationCallback(new c(this))}return f._then(d,h,void 0,this,void 0)}}}return r.isRejected()?(u(this),o.e=t,o):(u(this),t)}return l.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){u(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,i){return"function"!=typeof t?this.then():this._then(n,i,void 0,new l(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,f,f)},e.prototype.tap=function(t){return this._passThrough(t,1,f)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,f);var i,a=new Array(n-1),o=0;for(i=0;i<n-1;++i){var l=arguments[i];if(!r.isObject(l))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+r.classString(l)));a[o++]=l}a.length=o;var c=arguments[i];return this._passThrough(s(a,c,this),1,void 0,f)},l}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=t("./errors").TypeError,l=t("./util"),c=l.errorObj,u=l.tryCatch,d=[];function h(t,n,r,a){if(o.cancellation()){var s=new e(i),l=this._finallyPromise=new e(i);this._promise=s.lastly(function(){return l}),s._captureStackTrace(),s._setOnCancel(this)}else{(this._promise=new e(i))._captureStackTrace()}this._stack=a,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof r?[r].concat(d):d,this._yieldedPromise=null,this._cancellationPhase=!1}l.inherits(h,a),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,o.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t;if(void 0!==this._generator.return)this._promise._pushContext(),t=u(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var n=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=n,this._promise._attachExtraTrace(n),this._promise._pushContext(),t=u(this._generator.throw).call(this._generator,n),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=u(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=u(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===c)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var i=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(i);var a=r(i,this._promise);if(a instanceof e||null!==(a=function(t,n,i){for(var a=0;a<n.length;++a){i._pushContext();var o=u(n[a])(t);if(i._popContext(),o===c){i._pushContext();var s=e.reject(c.e);return i._popContext(),s}var l=r(o,i);if(l instanceof e)return l}return null}(a,this._yieldHandlers,this._promise))){var o=(a=a._target())._bitField;0==(50397184&o)?(this._yieldedPromise=a,a._proxy(this,null)):0!=(33554432&o)?e._async.invoke(this._promiseFulfilled,this,a._value()):0!=(16777216&o)?e._async.invoke(this._promiseRejected,this,a._reason()):this._promiseCancelled()}else this._promiseRejected(new s("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(i))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new s("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,i=h,r=(new Error).stack;return function(){var e=t.apply(this,arguments),a=new i(void 0,void 0,n,r),o=a.promise();return a._generator=e,a._promiseFulfilled(void 0),o}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new s("expecting a function but got "+l.classString(t));d.push(t)},e.spawn=function(t){if(o.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var i=new h(t,this),r=i.promise();return i._run(e.spawn),r}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj;e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=e._getDomain,c=t("./util"),u=c.tryCatch,d=c.errorObj,h=e._async;function f(t,e,n,i){this.constructor$(t),this._promise._captureStackTrace();var r=s();this._callback=null===r?e:c.domainBind(r,e),this._preservedValues=i===a?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],h.invoke(this._asyncInit,this,void 0)}function _(t,n,r,a){if("function"!=typeof n)return i("expecting a function but got "+c.classString(n));var o=0;if(void 0!==r){if("object"!==l(r)||null===r)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(r)));if("number"!=typeof r.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(r.concurrency)));o=r.concurrency}return new f(t,n,o="number"==typeof o&&isFinite(o)&&o>=1?o:0,a).promise()}c.inherits(f,n),f.prototype._asyncInit=function(){this._init$(void 0,-2)},f.prototype._init=function(){},f.prototype._promiseFulfilled=function(t,n){var i=this._values,a=this.length(),s=this._preservedValues,l=this._limit;if(n<0){if(i[n=-1*n-1]=t,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return i[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var c=this._promise,h=this._callback,f=c._boundValue();c._pushContext();var _=u(h).call(f,t,n,a),g=c._popContext();if(o.checkForgottenReturns(_,g,null!==s?"Promise.filter":"Promise.map",c),_===d)return this._reject(_.e),!0;var p=r(_,this._promise);if(p instanceof e){var v=(p=p._target())._bitField;if(0==(50397184&v))return l>=1&&this._inFlight++,i[n]=p,p._proxy(this,-1*(n+1)),!1;if(0==(33554432&v))return 0!=(16777216&v)?(this._reject(p._reason()),!0):(this._cancel(),!0);_=p._value()}i[n]=_}return++this._totalResolved>=a&&(null!==s?this._filter(i,s):this._resolve(i),!0)},f.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var i=t.pop();this._promiseFulfilled(n[i],i)}},f.prototype._filter=function(t,e){for(var n=e.length,i=new Array(n),r=0,a=0;a<n;++a)t[a]&&(i[r++]=e[a]);i.length=r,this._resolve(i)},f.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return _(this,t,e,null)},e.map=function(t,e,n,i){return _(t,e,n,i)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a){var o=t("./util"),s=o.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+o.classString(t));return function(){var i=new e(n);i._captureStackTrace(),i._pushContext();var r=s(t).apply(this,arguments),o=i._popContext();return a.checkForgottenReturns(r,o,"Promise.method",i),i._resolveFromSyncValue(r),i}},e.attempt=e.try=function(t){if("function"!=typeof t)return r("expecting a function but got "+o.classString(t));var i,l=new e(n);if(l._captureStackTrace(),l._pushContext(),arguments.length>1){a.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],u=arguments[2];i=o.isArray(c)?s(t).apply(u,c):s(t).call(u,c)}else i=s(t)();var d=l._popContext();return a.checkForgottenReturns(i,d,"Promise.try",l),l._resolveFromSyncValue(i),l},e.prototype._resolveFromSyncValue=function(t){t===o.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var i=t("./util"),r=i.maybeWrapAsError,a=t("./errors").OperationalError,o=t("./es5");var s=/^(?:name|message|stack|cause)$/;function l(t){var e;if(function(t){return t instanceof Error&&o.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=o.keys(t),r=0;r<n.length;++r){var l=n[r];s.test(l)||(e[l]=t[l])}return e}return i.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,i){if(null!==t){if(n){var a=l(r(n));t._attachExtraTrace(a),t._reject(a)}else if(e){var o=[].slice.call(arguments,1);t._fulfill(o)}else t._fulfill(i);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),i=e._async,r=n.tryCatch,a=n.errorObj;function o(t,e){if(!n.isArray(t))return s.call(this,t,e);var o=r(e).apply(this._boundValue(),[null].concat(t));o===a&&i.throwLater(o.e)}function s(t,e){var n=this._boundValue(),o=void 0===t?r(e).call(n,null):r(e).call(n,null,t);o===a&&i.throwLater(o.e)}function l(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var o=r(e).call(this._boundValue(),t);o===a&&i.throwLater(o.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=o),this._then(n,l,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,e,i){"use strict";e.exports=function(){var i=function(){return new _("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},r=function(){return new A.PromiseInspection(this._target())},a=function(t){return A.reject(new _(t))};function o(){}var s,l={},c=t("./util");s=c.isNode?function(){var t=n.domain;return void 0===t&&(t=null),t}:function(){return null},c.notEnumerableProp(A,"_getDomain",s);var u=t("./es5"),d=t("./async"),h=new d;u.defineProperty(A,"_async",{value:h});var f=t("./errors"),_=A.TypeError=f.TypeError;A.RangeError=f.RangeError;var g=A.CancellationError=f.CancellationError;A.TimeoutError=f.TimeoutError,A.OperationalError=f.OperationalError,A.RejectionError=f.OperationalError,A.AggregateError=f.AggregateError;var p=function(){},v={},m={},y=t("./thenables")(A,p),k=t("./promise_array")(A,p,y,a,o),b=t("./context")(A),x=b.create,w=t("./debuggability")(A,b),S=(w.CapturedTrace,t("./finally")(A,y,m)),T=t("./catch_filter")(m),$=t("./nodeback"),C=c.errorObj,E=c.tryCatch;function A(t){t!==p&&function(t,e){if(null==t||t.constructor!==A)throw new _("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new _("expecting a function but got "+c.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function D(t){this.promise._resolveCallback(t)}function M(t){this.promise._rejectCallback(t,!1)}function I(t){var e=new A(p);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return A.prototype.toString=function(){return"[object Promise]"},A.prototype.caught=A.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,i=new Array(e-1),r=0;for(n=0;n<e-1;++n){var o=arguments[n];if(!c.isObject(o))return a("Catch statement predicate: expecting an object but got "+c.classString(o));i[r++]=o}return i.length=r,t=arguments[n],this.then(void 0,T(i,t,this))}return this.then(void 0,t)},A.prototype.reflect=function(){return this._then(r,r,void 0,this,void 0)},A.prototype.then=function(t,e){if(w.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(n+=", "+c.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},A.prototype.done=function(t,e){this._then(t,e,void 0,void 0,void 0)._setIsFinal()},A.prototype.spread=function(t){return"function"!=typeof t?a("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,v,void 0)},A.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},A.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new k(this).promise()},A.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},A.getNewLibraryCopy=e.exports,A.is=function(t){return t instanceof A},A.fromNode=A.fromCallback=function(t){var e=new A(p);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,i=E(t)($(e,n));return i===C&&e._rejectCallback(i.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},A.all=function(t){return new k(t).promise()},A.cast=function(t){var e=y(t);return e instanceof A||((e=new A(p))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},A.resolve=A.fulfilled=A.cast,A.reject=A.rejected=function(t){var e=new A(p);return e._captureStackTrace(),e._rejectCallback(t,!0),e},A.setScheduler=function(t){if("function"!=typeof t)throw new _("expecting a function but got "+c.classString(t));return h.setScheduler(t)},A.prototype._then=function(t,e,n,i,r){var a=void 0!==r,o=a?r:new A(p),l=this._target(),u=l._bitField;a||(o._propagateFrom(this,3),o._captureStackTrace(),void 0===i&&0!=(2097152&this._bitField)&&(i=0!=(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,o));var d=s();if(0!=(50397184&u)){var f,_,v=l._settlePromiseCtx;0!=(33554432&u)?(_=l._rejectionHandler0,f=t):0!=(16777216&u)?(_=l._fulfillmentHandler0,f=e,l._unsetRejectionIsUnhandled()):(v=l._settlePromiseLateCancellationObserver,_=new g("late cancellation observer"),l._attachExtraTrace(_),f=e),h.invoke(v,l,{handler:null===d?f:"function"==typeof f&&c.domainBind(d,f),promise:o,receiver:i,value:_})}else l._addCallbacks(t,e,o,i,d);return o},A.prototype._length=function(){return 65535&this._bitField},A.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},A.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},A.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},A.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},A.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},A.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},A.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},A.prototype._isFinal=function(){return(4194304&this._bitField)>0},A.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},A.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},A.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},A.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},A.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==l)return void 0===e&&this._isBound()?this._boundValue():e},A.prototype._promiseAt=function(t){return this[4*t-4+2]},A.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},A.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},A.prototype._boundValue=function(){},A.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,i=t._promise0,r=t._receiverAt(0);void 0===r&&(r=l),this._addCallbacks(e,n,i,r,null)},A.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),i=t._rejectionHandlerAt(e),r=t._promiseAt(e),a=t._receiverAt(e);void 0===a&&(a=l),this._addCallbacks(n,i,r,a,null)},A.prototype._addCallbacks=function(t,e,n,i,r){var a=this._length();if(a>=65531&&(a=0,this._setLength(0)),0===a)this._promise0=n,this._receiver0=i,"function"==typeof t&&(this._fulfillmentHandler0=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this._rejectionHandler0=null===r?e:c.domainBind(r,e));else{var o=4*a-4;this[o+2]=n,this[o+3]=i,"function"==typeof t&&(this[o+0]=null===r?t:c.domainBind(r,t)),"function"==typeof e&&(this[o+1]=null===r?e:c.domainBind(r,e))}return this._setLength(a+1),a},A.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},A.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(i(),!1);var n=y(t,this);if(!(n instanceof A))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r!==this){var a=r._bitField;if(0==(50397184&a)){var o=this._length();o>0&&r._migrateCallback0(this);for(var s=1;s<o;++s)r._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(r)}else if(0!=(33554432&a))this._fulfill(r._value());else if(0!=(16777216&a))this._reject(r._reason());else{var l=new g("late cancellation observer");r._attachExtraTrace(l),this._reject(l)}}else this._reject(i())}},A.prototype._rejectCallback=function(t,e,n){var i=c.ensureErrorObject(t),r=i===t;if(!r&&!n&&w.warnings()){var a="a promise was rejected with a non-error: "+c.classString(t);this._warn(a,!0)}this._attachExtraTrace(i,!!e&&r),this._reject(t)},A.prototype._resolveFromExecutor=function(t){if(t!==p){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,i=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==i&&e._rejectCallback(i,!0)}},A.prototype._settlePromiseFromHandler=function(t,e,n,i){var r=i._bitField;if(0==(65536&r)){var a;i._pushContext(),e===v?n&&"number"==typeof n.length?a=E(t).apply(this._boundValue(),n):(a=C).e=new _("cannot .spread() a non-array: "+c.classString(n)):a=E(t).call(e,n);var o=i._popContext();0==(65536&(r=i._bitField))&&(a===m?i._reject(n):a===C?i._rejectCallback(a.e,!1):(w.checkForgottenReturns(a,o,"",i,this),i._resolveCallback(a)))}},A.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},A.prototype._followee=function(){return this._rejectionHandler0},A.prototype._setFollowee=function(t){this._rejectionHandler0=t},A.prototype._settlePromise=function(t,e,n,i){var a=t instanceof A,s=this._bitField,l=0!=(134217728&s);0!=(65536&s)?(a&&t._invokeInternalOnCancel(),n instanceof S&&n.isFinallyHandler()?(n.cancelPromise=t,E(e).call(n,i)===C&&t._reject(C.e)):e===r?t._fulfill(r.call(n)):n instanceof o?n._promiseCancelled(t):a||t instanceof k?t._cancel():n.cancel()):"function"==typeof e?a?(l&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,i,t)):e.call(n,i,t):n instanceof o?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(i,t):n._promiseRejected(i,t)):a&&(l&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(i):t._reject(i))},A.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,i=t.receiver,r=t.value;"function"==typeof e?n instanceof A?this._settlePromiseFromHandler(e,i,r,n):e.call(i,r,n):n instanceof A&&n._reject(r)},A.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},A.prototype._settlePromise0=function(t,e,n){var i=this._promise0,r=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(i,t,r,e)},A.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},A.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=i();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this),this._dereferenceTrace())}},A.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},A.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var i=this._fulfillmentHandlerAt(n),r=this._promiseAt(n),a=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(r,i,a,e)}},A.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var i=this._rejectionHandlerAt(n),r=this._promiseAt(n),a=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(r,i,a,e)}},A.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var i=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,i,t),this._fulfillPromises(e,i)}this._setLength(0)}this._clearCancellationData()},A.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},A.defer=A.pending=function(){return w.deprecated("Promise.defer","new Promise"),{promise:new A(p),resolve:D,reject:M}},c.notEnumerableProp(A,"_makeSelfResolutionError",i),t("./method")(A,p,y,a,w),t("./bind")(A,p,y,w),t("./cancel")(A,k,a,w),t("./direct_resolve")(A),t("./synchronous_inspection")(A),t("./join")(A,k,y,p,h,s),A.Promise=A,A.version="3.5.4",t("./map.js")(A,k,a,y,p,w),t("./call_get.js")(A),t("./using.js")(A,a,y,x,p,w),t("./timers.js")(A,p,w),t("./generators.js")(A,a,p,y,o,w),t("./nodeify.js")(A),t("./promisify.js")(A,p),t("./props.js")(A,k,y,a),t("./race.js")(A,p,y,a),t("./reduce.js")(A,k,a,y,p,w),t("./settle.js")(A,k,w),t("./some.js")(A,k,a),t("./filter.js")(A,p),t("./each.js")(A,p),t("./any.js")(A),c.toFastProperties(A),c.toFastProperties(A.prototype),I({a:1}),I({b:2}),I({c:3}),I(1),I(function(){}),I(void 0),I(!1),I(new A(p)),w.setBounds(d.firstLineError,c.lastLineError),A}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a){var o=t("./util");o.isArray;function s(t){var i=this._promise=new e(n);t instanceof e&&i._propagateFrom(t,3),i._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return o.inherits(s,a),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,a){var s=i(this._values,this._promise);if(s instanceof e){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,a);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=o.asArray(s)))0!==s.length?this._iterate(s):-5===a?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(a));else{var c=r("expecting an array or an iterable object but got "+o.classString(s)).reason();this._promise._rejectCallback(c,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var r=this._promise,a=!1,o=null,s=0;s<n;++s){var l=i(t[s],r);o=l instanceof e?(l=l._target())._bitField:null,a?null!==o&&l.suppressUnhandledRejections():null!==o?0==(50397184&o)?(l._proxy(this,s),this._values[s]=l):a=0!=(33554432&o)?this._promiseFulfilled(l._value(),s):0!=(16777216&o)?this._promiseRejected(l._reason(),s):this._promiseCancelled(s):a=this._promiseFulfilled(l,s)}a||r._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){return this._values[e]=t,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var i={},r=t("./util"),a=t("./nodeback"),o=r.withAppended,s=r.maybeWrapAsError,c=r.canEvaluate,u=t("./errors").TypeError,d={__isPromisified__:!0},h=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),f=function(t){return r.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function _(t){return!h.test(t)}function g(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function p(t,e,n){var i=r.getDataPropertyOrDefault(t,e+n,d);return!!i&&g(i)}function v(t,e,n,i){for(var a=r.inheritedDataKeys(t),o=[],s=0;s<a.length;++s){var l=a[s],c=t[l],d=i===f||f(l,c,t);"function"!=typeof c||g(c)||p(t,l,e)||!i(l,c,t,d)||o.push(l,c)}return function(t,e,n){for(var i=0;i<t.length;i+=2){var r=t[i];if(n.test(r))for(var a=r.replace(n,""),o=0;o<t.length;o+=2)if(t[o]===a)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(o,e,n),o}var m=function(t){return t.replace(/([$])/,"\\$")};var y=c?void 0:function(t,l,c,u,d,h){var f=function(){return this}(),_=t;function g(){var r=l;l===i&&(r=this);var c=new e(n);c._captureStackTrace();var u="string"==typeof _&&this!==f?this[_]:t,d=a(c,h);try{u.apply(r,o(arguments,d))}catch(t){c._rejectCallback(s(t),!0,!0)}return c._isFateSealed()||c._setAsyncGuaranteed(),c}return"string"==typeof _&&(t=u),r.notEnumerableProp(g,"__isPromisified__",!0),g};function k(t,e,n,a,o){for(var s=new RegExp(m(e)+"$"),l=v(t,e,s,n),c=0,u=l.length;c<u;c+=2){var d=l[c],h=l[c+1],f=d+e;if(a===y)t[f]=y(d,i,d,h,e,o);else{var _=a(h,function(){return y(d,i,d,h,e,o)});r.notEnumerableProp(_,"__isPromisified__",!0),t[f]=_}}return r.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+r.classString(t));if(g(t))return t;var n=function(t,e,n){return y(t,e,void 0,t,null,n)}(t,void 0===(e=Object(e)).context?i:e.context,!!e.multiArgs);return r.copyDescriptors(t,n,_),n},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!==l(t))throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,i=e.suffix;"string"!=typeof i&&(i="Async");var a=e.filter;"function"!=typeof a&&(a=f);var o=e.promisifier;if("function"!=typeof o&&(o=y),!r.isIdentifier(i))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=r.inheritedDataKeys(t),c=0;c<s.length;++c){var d=t[s[c]];"constructor"!==s[c]&&r.isClass(d)&&(k(d.prototype,i,a,o,n),k(d,i,a,o,n))}return k(t,i,a,o,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,i,r){var a,o=t("./util"),s=o.isObject,l=t("./es5");"function"==typeof Map&&(a=Map);var c=function(){var t=0,e=0;function n(n,i){this[t]=n,this[t+e]=i,t++}return function(i){e=i.size,t=0;var r=new Array(2*i.size);return i.forEach(n,r),r}}();function u(t){var e,n=!1;if(void 0!==a&&t instanceof a)e=c(t),n=!0;else{var i=l.keys(t),r=i.length;e=new Array(2*r);for(var o=0;o<r;++o){var s=i[o];e[o]=t[s],e[o+r]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function d(t){var n,a=i(t);return s(a)?(n=a instanceof e?a._then(e.props,void 0,void 0,void 0,void 0):new u(a).promise(),a instanceof e&&n._propagateFrom(a,2),n):r("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}o.inherits(u,n),u.prototype._init=function(){},u.prototype._promiseFulfilled=function(t,e){if(this._values[e]=t,++this._totalResolved>=this._length){var n;if(this._isMap)n=function(t){for(var e=new a,n=t.length/2|0,i=0;i<n;++i){var r=t[n+i],o=t[i];e.set(r,o)}return e}(this._values);else{n={};for(var i=this.length(),r=0,o=this.length();r<o;++r)n[this._values[r+i]]=this._values[r]}return this._resolve(n),!0}return!1},u.prototype.shouldCopyValues=function(){return!1},u.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return d(this)},e.props=function(t){return d(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function i(t){this._capacity=t,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(t){return this._capacity<t},i.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1),this[this._front+e&this._capacity-1]=t,this._length=e+1},i.prototype.push=function(t,e,n){var i=this.length()+3;if(this._willBeOverCapacity(i))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var r=this._front+i-3;this._checkCapacity(i);var a=this._capacity-1;this[r+0&a]=t,this[r+1&a]=e,this[r+2&a]=n,this._length=i},i.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},i.prototype.length=function(){return this._length},i.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},i.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t,function(t,e,n,i,r){for(var a=0;a<r;++a)n[a+i]=t[a+e],t[a+e]=void 0}(this,0,this,e,this._front+this._length&e-1)},e.exports=i},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,i,r){var a=t("./util"),o=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var l=i(t);if(l instanceof e)return o(l);if(null===(t=a.asArray(t)))return r("expecting an array or an iterable object but got "+a.classString(t));var c=new e(n);void 0!==s&&c._propagateFrom(s,3);for(var u=c._fulfill,d=c._reject,h=0,f=t.length;h<f;++h){var _=t[h];(void 0!==_||h in t)&&e.cast(_)._then(u,d,void 0,c,null)}return c}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=e._getDomain,l=t("./util"),c=l.tryCatch;function u(t,n,i,r){this.constructor$(t);var o=s();this._fn=null===o?n:l.domainBind(o,n),void 0!==i&&(i=e.resolve(i))._attachCancellationCallback(this),this._initialValue=i,this._currentCancellable=null,this._eachValues=r===a?Array(this._length):0===r?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function d(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function h(t,e,n,r){return"function"!=typeof e?i("expecting a function but got "+l.classString(e)):new u(t,e,n,r).promise()}function f(t){this.accum=t,this.array._gotAccum(t);var n=r(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(_,void 0,void 0,this,void 0)):_.call(this,n)}function _(t){var n,i=this.array,r=i._promise,a=c(i._fn);r._pushContext(),(n=void 0!==i._eachValues?a.call(r._boundValue(),t,this.index,this.length):a.call(r._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(i._currentCancellable=n);var s=r._popContext();return o.checkForgottenReturns(n,s,void 0!==i._eachValues?"Promise.each":"Promise.reduce",r),n}l.inherits(u,n),u.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==a&&this._eachValues.push(t)},u.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},u.prototype._init=function(){},u.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},u.prototype.shouldCopyValues=function(){return!1},u.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},u.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},u.prototype._iterate=function(t){var n,i;this._values=t;var r=t.length;if(void 0!==this._initialValue?(n=this._initialValue,i=0):(n=e.resolve(t[0]),i=1),this._currentCancellable=n,!n.isRejected())for(;i<r;++i){var a={accum:null,value:t[i],index:i,length:r,array:this};n=n._then(f,void 0,void 0,a,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(d,d,void 0,n,this)},e.prototype.reduce=function(t,e){return h(this,t,e,null)},e.reduce=function(t,e,n,i){return h(t,e,n,i)}}},{"./util":36}],29:[function(t,e,a){"use strict";var o,s=t("./util"),l=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var c=i.setImmediate,u=n.nextTick;o=s.isRecentNode?function(t){c.call(i,t)}:function(t){u.call(n,t)}}else if("function"==typeof l&&"function"==typeof l.resolve){var d=l.resolve();o=function(t){d.then(t)}}else o="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,i=document.createElement("div");new MutationObserver(function(){t.classList.toggle("foo"),n=!1}).observe(i,e);return function(r){var a=new MutationObserver(function(){a.disconnect(),r()});a.observe(t,e),n||(n=!0,i.classList.toggle("foo"))}}();e.exports=o},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=e.PromiseInspection;function a(t){this.constructor$(t)}t("./util").inherits(a,n),a.prototype._promiseResolved=function(t,e){return this._values[t]=e,++this._totalResolved>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new r;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new r;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return i.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=t("./util"),a=t("./errors").RangeError,o=t("./errors").AggregateError,s=r.isArray,l={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function u(t,e){if((0|e)!==e||e<0)return i("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new c(t),r=n.promise();return n.setHowMany(e),n.init(),r}r.inherits(c,n),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new o,e=this.length();e<this._values.length;++e)this._values[e]!==l&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return u(t,e)},e.prototype.some=function(t){return u(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},a=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},o=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return o.call(this._target())},t.prototype.isRejected=function(){return a.call(this._target())},t.prototype.isFulfilled=function(){return r.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),i.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var i=t("./util"),r=i.errorObj,a=i.isObject;var o={}.hasOwnProperty;return function(t,s){if(a(t)){if(t instanceof e)return t;var l=function(t){try{return function(t){return t.then}(t)}catch(t){return r.e=t,r}}(t);if(l===r){s&&s._pushContext();var c=e.reject(l.e);return s&&s._popContext(),c}if("function"==typeof l)return function(t){try{return o.call(t,"_promise0")}catch(t){return!1}}(t)?(c=new e(n),t._then(c._fulfill,c._reject,void 0,c,null),c):function(t,a,o){var s=new e(n),l=s;o&&o._pushContext(),s._captureStackTrace(),o&&o._popContext();var c=!0,u=i.tryCatch(a).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,c,!0),s=null)});return c=!1,s&&u===r&&(s._rejectCallback(u.e,!0,!0),s=null),l}(t,l,s)}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,i){var r=t("./util"),a=e.TimeoutError;function o(t){this.handle=t}o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return l(+this).thenReturn(t)},l=e.delay=function(t,r){var a,l;return void 0!==r?(a=e.resolve(r)._then(s,null,null,t,void 0),i.cancellation()&&r instanceof e&&a._setOnCancel(r)):(a=new e(n),l=setTimeout(function(){a._fulfill()},+t),i.cancellation()&&a._setOnCancel(new o(l)),a._captureStackTrace()),a._setAsyncGuaranteed(),a};e.prototype.delay=function(t){return l(t,this)};function c(t){return clearTimeout(this.handle),t}function u(t){throw clearTimeout(this.handle),t}e.prototype.timeout=function(t,e){var n,s;t=+t;var l=new o(setTimeout(function(){n.isPending()&&function(t,e,n){var i;i="string"!=typeof e?e instanceof Error?e:new a("operation timed out"):new a(e),r.markAsOriginatingFromRejection(i),t._attachExtraTrace(i),t._reject(i),null!=n&&n.cancel()}(n,e,s)},t));return i.cancellation()?(s=this.then(),(n=s._then(c,u,void 0,l,void 0))._setOnCancel(l)):n=this._then(c,u,void 0,l,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,i,r,a,o){var s=t("./util"),l=t("./errors").TypeError,c=t("./util").inherits,u=s.errorObj,d=s.tryCatch,h={};function f(t){setTimeout(function(){throw t},0)}function _(t,n){var r=0,o=t.length,s=new e(a);return function a(){if(r>=o)return s._fulfill();var l=function(t){var e=i(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[r++]);if(l instanceof e&&l._isDisposable()){try{l=i(l._getDisposer().tryDispose(n),t.promise)}catch(t){return f(t)}if(l instanceof e)return l._then(a,f,null,null,null)}a()}(),s}function g(t,e,n){this._data=t,this._promise=e,this._context=n}function p(t,e,n){this.constructor$(t,e,n)}function v(t){return g.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}g.prototype.data=function(){return this._data},g.prototype.promise=function(){return this._promise},g.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},g.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var i=e!==h?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,i},g.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(p,g),p.prototype.doDispose=function(t,e){return this.data().call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var i=this[n];i instanceof e&&i.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var r,a=arguments[t-1];if("function"!=typeof a)return n("expecting a function but got "+s.classString(a));var l=!0;2===t&&Array.isArray(arguments[0])?(t=(r=arguments[0]).length,l=!1):(r=arguments,t--);for(var c=new m(t),h=0;h<t;++h){var f=r[h];if(g.isDisposer(f)){var p=f;(f=f.promise())._setDisposable(p)}else{var y=i(f);y instanceof e&&(f=y._then(v,null,null,{resources:c,index:h},void 0))}c[h]=f}var k=new Array(c.length);for(h=0;h<k.length;++h)k[h]=e.resolve(c[h]).reflect();var b=e.all(k).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return u.e=n.error(),u;if(!n.isFulfilled())return void b.cancel();t[e]=n.value()}x._pushContext(),a=d(a);var i=l?a.apply(void 0,t):a(t),r=x._popContext();return o.checkForgottenReturns(i,r,"Promise.using",x),i}),x=b.lastly(function(){var t=new e.PromiseInspection(b);return _(c,t)});return c.promise=x,x._setOnCancel(c),x},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,r());throw new l}}},{"./errors":12,"./util":36}],36:[function(t,e,r){"use strict";var a=t("./es5"),o="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==i?i:void 0!==this?this:null;function d(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function h(t){return c=t,d}var f=function(t,e){var n={}.hasOwnProperty;function i(){for(var i in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,i)&&"$"!==i.charAt(i.length-1)&&(this[i+"$"]=e.prototype[i])}return i.prototype=e.prototype,t.prototype=new i,t.prototype};function _(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function g(t){return"function"==typeof t||"object"===l(t)&&null!==t}function p(t){return _(t)?new Error(E(t)):t}function v(t,e){var n,i=t.length,r=new Array(i+1);for(n=0;n<i;++n)r[n]=t[n];return r[n]=e,r}function m(t,e,n){if(!a.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var i=Object.getOwnPropertyDescriptor(t,e);return null!=i?null==i.get&&null==i.set?i.value:n:void 0}function y(t,e,n){if(_(t))return t;var i={value:n,configurable:!0,enumerable:!1,writable:!0};return a.defineProperty(t,e,i),t}function k(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(a.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var i=[],r=Object.create(null);null!=t&&!e(t);){var o;try{o=n(t)}catch(t){return i}for(var s=0;s<o.length;++s){var l=o[s];if(!r[l]){r[l]=!0;var c=Object.getOwnPropertyDescriptor(t,l);null!=c&&null==c.get&&null==c.set&&i.push(l)}}t=a.getPrototypeOf(t)}return i}}var i={}.hasOwnProperty;return function(n){if(e(n))return[];var r=[];t:for(var a in n)if(i.call(n,a))r.push(a);else{for(var o=0;o<t.length;++o)if(i.call(t[o],a))continue t;r.push(a)}return r}}(),x=/this\s*\.\s*\S+\s*=/;function w(t){try{if("function"==typeof t){var e=a.names(t.prototype),n=a.isES5&&e.length>1,i=e.length>0&&!(1===e.length&&"constructor"===e[0]),r=x.test(t+"")&&a.names(t).length>0;if(n||i||r)return!0}return!1}catch(t){return!1}}function S(t){function e(){}e.prototype=t;var n=new e;function i(){return l(n.foo)}return i(),i(),t}var T=/^[a-z$_][a-z$_0-9]*$/i;function $(t){return T.test(t)}function C(t,e,n){for(var i=new Array(t),r=0;r<t;++r)i[r]=e+r+n;return i}function E(t){try{return t+""}catch(t){return"[no string representation]"}}function A(t){return t instanceof Error||null!==t&&"object"===l(t)&&"string"==typeof t.message&&"string"==typeof t.name}function D(t){try{y(t,"isOperational",!0)}catch(t){}}function M(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function I(t){return A(t)&&a.propertyIsWritable(t,"stack")}var P="stack"in new Error?function(t){return I(t)?t:new Error(E(t))}:function(t){if(I(t))return t;try{throw new Error(E(t))}catch(t){return t}};function N(t){return{}.toString.call(t)}function O(t,e,n){for(var i=a.names(t),r=0;r<i.length;++r){var o=i[r];if(n(o))try{a.defineProperty(e,o,a.getDescriptor(t,o))}catch(t){}}}var L=function(t){return a.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var R="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],i=t[Symbol.iterator]();!(e=i.next()).done;)n.push(e.value);return n};L=function(t){return a.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?R(t):null}}var j=void 0!==n&&"[object process]"===N(n).toLowerCase(),H=void 0!==n&&void 0!==n.env;function F(t){return H?n.env[t]:void 0}function B(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function z(t,e){return t.bind(e)}var U={isClass:w,isIdentifier:$,inheritedDataKeys:b,getDataPropertyOrDefault:m,thrower:k,isArray:a.isArray,asArray:L,notEnumerableProp:y,isPrimitive:_,isObject:g,isError:A,canEvaluate:o,errorObj:s,tryCatch:h,inherits:f,withAppended:v,maybeWrapAsError:p,toFastProperties:S,filledRange:C,toString:E,canAttachTrace:I,ensureErrorObject:P,originatesFromRejection:M,markAsOriginatingFromRejection:D,classString:N,copyDescriptors:O,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:j,hasEnvVariables:H,env:F,global:u,getNativePromise:B,domainBind:z};U.isRecentNode=U.isNode&&function(){var t;return n.versions&&n.versions.node?t=n.versions.node.split(".").map(Number):n.version&&(t=n.version.split(".").map(Number)),0===t[0]&&t[1]>10||t[0]>0}(),U.isNode&&U.toFastProperties(n);try{throw new Error}catch(t){U.lastLineError=t}e.exports=U},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(9),n(4),n(57).setImmediate)},function(t,e,n){t.exports=n(233)},function(t,e,n){var i=n(0);t.exports=function(){var t={};return{getState:function(e){if(t[e])return t[e].method();var n={};for(var r in t)t[r].internal||i.mixin(n,t[r].method(),!0);return n},registerProvider:function(e,n,i){t[e]={method:n,internal:i}},unregisterProvider:function(e){delete t[e]}}}},function(t,e){t.exports=function(t){var e={};function n(n,i,r){r=r||n;var a=t.config,o=t.templates;t.config[n]&&e[r]!=a[n]&&(i&&o[r]||(o[r]=t.date.date_to_str(a[n]),e[r]=a[n]))}return{initTemplates:function(){var e=t.locale.labels;e.gantt_save_btn=e.icon_save,e.gantt_cancel_btn=e.icon_cancel,e.gantt_delete_btn=e.icon_delete;var i=t.date,r=i.date_to_str,a=t.config,o=r(a.xml_date||a.date_format,a.server_utc),s=i.str_to_date(a.xml_date||a.date_format,a.server_utc);n("date_scale",!0,void 0,t.config,t.templates),n("date_grid",!0,"grid_date_format",t.config,t.templates),n("task_date",!0,void 0,t.config,t.templates),t.mixin(t.templates,{xml_format:void 0,format_date:o,xml_date:void 0,parse_date:s,progress_text:function(t,e,n){return""},grid_header_class:function(t,e){return""},task_text:function(t,e,n){return n.text},task_class:function(t,e,n){return""},task_end_date:function(e){return t.templates.task_date(e)},grid_row_class:function(t,e,n){return""},task_row_class:function(t,e,n){return""},timeline_cell_class:function(t,e){return""},timeline_cell_content:function(t,e){return""},scale_cell_class:function(t){return""},scale_row_class:function(t){return""},grid_indent:function(t){return"<div class='gantt_tree_indent'></div>"},grid_folder:function(t){return"<div class='gantt_tree_icon gantt_folder_"+(t.$open?"open":"closed")+"'></div>"},grid_file:function(t){return"<div class='gantt_tree_icon gantt_file'></div>"},grid_open:function(t){return"<div class='gantt_tree_icon gantt_"+(t.$open?"close":"open")+"'></div>"},grid_blank:function(t){return"<div class='gantt_tree_icon gantt_blank'></div>"},date_grid:function(e,n,i){return n&&t.isUnscheduledTask(n)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(n):t.templates.grid_date_format(e,i)},task_time:function(e,n,i){return t.isUnscheduledTask(i)&&t.config.show_unscheduled?t.templates.task_unscheduled_time(i):t.templates.task_date(e)+" - "+t.templates.task_end_date(n)},task_unscheduled_time:function(t){return""},time_picker:r(a.time_picker),link_class:function(t){return""},link_description:function(e){var n=t.getTask(e.source),i=t.getTask(e.target);return"<b>"+n.text+"</b> – <b>"+i.text+"</b>"},drag_link:function(e,n,i,r){e=t.getTask(e);var a=t.locale.labels,o="<b>"+e.text+"</b> "+(n?a.link_start:a.link_end)+"<br/>";return i&&(o+="<b> "+(i=t.getTask(i)).text+"</b> "+(r?a.link_start:a.link_end)+"<br/>"),o},drag_link_class:function(e,n,i,r){var a="";return e&&i&&(a=" "+(t.isLinkAllowed(e,i,n,r)?"gantt_link_allow":"gantt_link_deny")),"gantt_link_tooltip"+a},tooltip_date_format:i.date_to_str("%Y-%m-%d"),tooltip_text:function(e,n,i){return"<b>Task:</b> "+i.text+"<br/><b>Start date:</b> "+t.templates.tooltip_date_format(e)+"<br/><b>End date:</b> "+t.templates.tooltip_date_format(n)}})},initTemplate:n}}},function(t,e,n){var i=n(5),r=n(0),a=n(50),o=n(21),s=n(1);t.exports=function(t){function e(t){return{target:t.target||t.srcElement,pageX:t.pageX,pageY:t.pageY,clientX:t.clientX,clientY:t.clientY,metaKey:t.metaKey,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,altKey:t.altKey}}function n(n,a){this._obj=n,this._settings=a||{},i(this);var o=this.getInputMethods();this._drag_start_timer=null,t.attachEvent("onGanttScroll",r.bind(function(t,e){this.clearDragTimer()},this));for(var l={passive:!1},c=0;c<o.length;c++)r.bind(function(i){t.event(n,i.down,r.bind(function(o){i.accessor(o)&&(a.preventDefault&&a.selector&&s.closest(o.target,a.selector)&&o.preventDefault(),t.config.touch&&o.timeStamp&&o.timeStamp-0<300||(this._settings.original_target=e(o),t.config.touch?(this.clearDragTimer(),this._drag_start_timer=setTimeout(r.bind(function(){t.getState().lightbox||this.dragStart(n,o,i)},this),t.config.touch_drag)):this.dragStart(n,o,i)))},this),l);var o=document.body;t.event(o,i.up,r.bind(function(t){i.accessor(t)&&this.clearDragTimer()},this),l)},this)(o[c])}return n.prototype={traceDragEvents:function(e,n){var i=r.bind(function(t){return this.dragMove(e,t,n.accessor)},this);r.bind(function(t){return this.dragScroll(e,t)},this);var o=r.bind(function(t){if(!this.config.started||!r.defined(this.config.updates_per_second)||a(this,this.config.updates_per_second)){var e=i(t);if(e)try{t&&t.preventDefault&&t.cancelable&&t.preventDefault()}catch(t){}return e}},this),l=s.getRootNode(t.$root),c=this.config.mousemoveContainer||s.getRootNode(t.$root),u={passive:!1},d=r.bind(function(i){return t.eventRemove(c,n.move,o),t.eventRemove(l,n.up,d,u),this.dragEnd(e)},this);t.event(c,n.move,o,u),t.event(l,n.up,d,u)},checkPositionChange:function(t){var e=t.x-this.config.pos.x,n=t.y-this.config.pos.y;return Math.sqrt(Math.pow(Math.abs(e),2)+Math.pow(Math.abs(n),2))>this.config.sensitivity},initDnDMarker:function(){var t=this.config.marker=document.createElement("div");t.className="gantt_drag_marker",t.innerHTML="",document.body.appendChild(t)},backupEventTarget:function(n,i){if(t.config.touch){var r=i(n),a=r.target||r.srcElement,o=a.cloneNode(!0);this.config.original_target=e(r),this.config.original_target.target=o,this.config.backup_element=a,a.parentNode.appendChild(o),a.style.display="none",(this.config.mousemoveContainer||document.body).appendChild(a)}},getInputMethods:function(){var e=[];if(e.push({move:"mousemove",down:"mousedown",up:"mouseup",accessor:function(t){return t}}),t.config.touch){var n=!0;try{document.createEvent("TouchEvent")}catch(t){n=!1}n?e.push({move:"touchmove",down:"touchstart",up:"touchend",accessor:function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:document.elementFromPoint(t.touches[0].clientX,t.touches[0].clientY),pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t}}):o.navigator.pointerEnabled?e.push({move:"pointermove",down:"pointerdown",up:"pointerup",accessor:function(t){return"mouse"==t.pointerType?null:t}}):o.navigator.msPointerEnabled&&e.push({move:"MSPointerMove",down:"MSPointerDown",up:"MSPointerUp",accessor:function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t}})}return e},clearDragTimer:function(){this._drag_start_timer&&(clearTimeout(this._drag_start_timer),this._drag_start_timer=null)},dragStart:function(e,n,i){this.config&&this.config.started||(this.config={obj:e,marker:null,started:!1,pos:this.getPosition(n),sensitivity:4},this._settings&&r.mixin(this.config,this._settings,!0),this.traceDragEvents(e,i),t._prevent_touch_scroll=!0,document.body.className+=" gantt_noselect",t.config.touch&&this.dragMove(e,n,i.accessor))},dragMove:function(e,n,i){var r=i(n);if(!r)return!1;if(!this.config.marker&&!this.config.started){var a=this.getPosition(r);if(t.config.touch||this.checkPositionChange(a)){if(this.config.started=!0,this.config.ignore=!1,t._touch_drag=!0,!1===this.callEvent("onBeforeDragStart",[e,this.config.original_target]))return this.config.ignore=!0,!1;this.backupEventTarget(n,i),this.initDnDMarker(),t._touch_feedback(),this.callEvent("onAfterDragStart",[e,this.config.original_target])}else this.config.ignore=!0}if(!this.config.ignore){if(n.targetTouches&&!r.target)return;return r.pos=this.getPosition(r),this.config.marker.style.left=r.pos.x+"px",this.config.marker.style.top=r.pos.y+"px",this.callEvent("onDragMove",[e,r]),!0}return!1},dragEnd:function(e){var n=this.config.backup_element;n&&n.parentNode&&n.parentNode.removeChild(n),t._prevent_touch_scroll=!1,this.config.marker&&(this.config.marker.parentNode.removeChild(this.config.marker),this.config.marker=null,this.callEvent("onDragEnd",[])),this.config.started=!1,t._touch_drag=!1,document.body.className=document.body.className.replace(" gantt_noselect","")},getPosition:function(t){var e=0,n=0;return t.pageX||t.pageY?(e=t.pageX,n=t.pageY):(t.clientX||t.clientY)&&(e=t.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,n=t.clientY+document.body.scrollTop+document.documentElement.scrollTop),{x:e,y:n}}},n}},function(t,e,n){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}n.r(e),n.d(e,"Client",function(){return r});var r=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var n=e.url,i=e.token;this._url=n,this._token=i,this._mode=1,this._seed=1,this._queue=[],this.data={},this.api={},this._events={}}return function(t,e,n){e&&i(t.prototype,e),n&&i(t,n)}(t,[{key:"headers",value:function(){return{Accept:"application/json","Content-Type":"application/json","Remote-Token":this._token}}},{key:"fetch",value:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t,e){var n={credentials:"include",headers:this.headers()};return e&&(n.method="POST",n.body=e),fetch(t,n).then(function(t){return t.json()})})},{key:"load",value:function(t){var e=this;return t&&(this._url=t),this.fetch(this._url).then(function(t){return e.parse(t)})}},{key:"parse",value:function(t){var e=t.key,n=t.websocket;for(var i in e&&(this._token=t.key),t.data)this.data[i]=t.data[i];for(var r in t.api){var a=this.api[r]={},o=t.api[r];for(var s in o)a[s]=this._wrapper(r+"."+s)}return n&&this.connect(),this}},{key:"connect",value:function(){var t=this,e=this._socket;e&&(this._socket=null,e.onclose=function(){},e.close()),this._mode=2,this._socket=function(e,n,i,r){var a=n;"/"===a[0]&&(a=document.location.protocol+"//"+document.location.host+n);var o=-1!=(a=a.replace(/^http(s|):/,"ws$1:")).indexOf("?")?"&":"?";a="".concat(a).concat(o,"token=").concat(i,"&ws=1");var s=new WebSocket(a);return s.onclose=function(){return setTimeout(function(){return e.connect()},2e3)},s.onmessage=function(n){var i=JSON.parse(n.data);switch(i.action){case"result":e.result(i.body,[]);break;case"event":e.fire(i.body.name,i.body.value);break;case"start":t._mode=3,t._send(),t._resubscribe();break;default:e.onError(i.data)}},s}(this,this._url,this._token)}},{key:"_wrapper",value:function(t){return function(){var e=this,n=[].slice.call(arguments),i=null,r=new Promise(function(r,a){i={data:{id:e._uid(),name:t,args:n},status:1,resolve:r,reject:a},e._queue.push(i)});return this.onCall(i,r),3===this._mode?this._send(i):setTimeout(function(){return e._send()},1),r}.bind(this)}},{key:"_uid",value:function(){return(this._seed++).toString()}},{key:"_send",value:function(t){var e=this;if(2!=this._mode){var n=t?[t]:this._queue.filter(function(t){return 1===t.status});if(n.length){var i=n.map(function(t){return t.status=2,t.data});3!==this._mode?this.fetch(this._url,JSON.stringify(i)).catch(function(t){return e.onError(t)}).then(function(t){return e.result(t,i)}):this._socket.send(JSON.stringify({action:"call",body:i}))}}else setTimeout(function(){return e._send()},100)}},{key:"result",value:function(t,e){var n={};if(t)for(var i=0;i<t.length;i++)n[t[i].id]=t[i];else for(var r=0;r<e.length;r++)n[e[r].id]={id:e[r].id,error:"Network Error",data:null};for(var a=this._queue.length-1;a>=0;a--){var o=this._queue[a],s=n[o.data.id];s&&(this.onResponse(o,s),s.error?o.reject(s.error):o.resolve(s.data),this._queue.splice(a,1))}}},{key:"on",value:function(t,e){var n=this._uid(),i=this._events[t],r=!!i;return r||(i=this._events[t]=[]),i.push({id:n,handler:e}),r||3!=this._mode||this._socket.send(JSON.stringify({action:"subscribe",name:t})),{name:t,id:n}}},{key:"_resubscribe",value:function(){if(3==this._mode)for(var t in this._events)this._socket.send(JSON.stringify({action:"subscribe",name:t}))}},{key:"detach",value:function(t){if(t){var e=t.id,n=t.name,i=this._events[n];if(i){var r=i.filter(function(t){return t.id!=e});r.length?this._events[n]=r:(delete this._events[n],3==this._mode&&this._socket.send(JSON.stringify({action:"unsubscribe",name:n})))}}else{if(3==this._mode)for(var a in this._events)this._socket.send(JSON.stringify({action:"unsubscribe",key:a}));this._events={}}}},{key:"fire",value:function(t,e){var n=this._events[t];if(n)for(var i=0;i<n.length;i++)n[i].handler(e)}},{key:"onError",value:function(t){return null}},{key:"onCall",value:function(t,e){}},{key:"onResponse",value:function(t,e){}}]),t}()},function(t,e,n){var i=n(238);t.exports={remoteEvents:function(t,e){var n=this,r=new i.Client({url:t,token:e});r.fetch=function(t,e){var n={headers:this.headers()};return e&&(n.method="POST",n.body=e),fetch(t,n).then(function(t){return t.json()})},this._ready=r.load().then(function(t){return n._remote=t}),this.ready=function(){return this._ready},this.on=function(t,e){this.ready().then(function(n){if("string"==typeof t)n.on(t,e);else for(var i in t)n.on(i,t[i])})}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={date_to_str:function(t,e,n){return function(i){return t.replace(/%[a-zA-Z]/g,function(t){switch(t){case"%d":return e?n.date.to_fixed(i.getUTCDate()):n.date.to_fixed(i.getDate());case"%m":return e?n.date.to_fixed(i.getUTCMonth()+1):n.date.to_fixed(i.getMonth()+1);case"%j":return e?i.getUTCDate():i.getDate();case"%n":return e?i.getUTCMonth()+1:i.getMonth()+1;case"%y":return e?n.date.to_fixed(i.getUTCFullYear()%100):n.date.to_fixed(i.getFullYear()%100);case"%Y":return e?i.getUTCFullYear():i.getFullYear();case"%D":return e?n.locale.date.day_short[i.getUTCDay()]:n.locale.date.day_short[i.getDay()];case"%l":return e?n.locale.date.day_full[i.getUTCDay()]:n.locale.date.day_full[i.getDay()];case"%M":return e?n.locale.date.month_short[i.getUTCMonth()]:n.locale.date.month_short[i.getMonth()];case"%F":return e?n.locale.date.month_full[i.getUTCMonth()]:n.locale.date.month_full[i.getMonth()];case"%h":return e?n.date.to_fixed((i.getUTCHours()+11)%12+1):n.date.to_fixed((i.getHours()+11)%12+1);case"%g":return e?(i.getUTCHours()+11)%12+1:(i.getHours()+11)%12+1;case"%G":return e?i.getUTCHours():i.getHours();case"%H":return e?n.date.to_fixed(i.getUTCHours()):n.date.to_fixed(i.getHours());case"%i":return e?n.date.to_fixed(i.getUTCMinutes()):n.date.to_fixed(i.getMinutes());case"%a":return e?i.getUTCHours()>11?"pm":"am":i.getHours()>11?"pm":"am";case"%A":return e?i.getUTCHours()>11?"PM":"AM":i.getHours()>11?"PM":"AM";case"%s":return e?n.date.to_fixed(i.getUTCSeconds()):n.date.to_fixed(i.getSeconds());case"%W":return e?n.date.to_fixed(n.date.getUTCISOWeek(i)):n.date.to_fixed(n.date.getISOWeek(i));default:return t}})}},str_to_date:function(t,e,n){return function(i){for(var r=[0,0,1,0,0,0],a=i.match(/[a-zA-Z]+|[0-9]+/g),o=t.match(/%[a-zA-Z]/g),s=0;s<o.length;s++)switch(o[s]){case"%j":case"%d":r[2]=a[s]||1;break;case"%n":case"%m":r[1]=(a[s]||1)-1;break;case"%y":r[0]=1*a[s]+(a[s]>50?1900:2e3);break;case"%g":case"%G":case"%h":case"%H":r[3]=a[s]||0;break;case"%i":r[4]=a[s]||0;break;case"%Y":r[0]=a[s]||0;break;case"%a":case"%A":r[3]=r[3]%12+("am"===(a[s]||"").toLowerCase()?0:12);break;case"%s":r[5]=a[s]||0;break;case"%M":r[1]=n.locale.date.month_short_hash[a[s]]||0;break;case"%F":r[1]=n.locale.date.month_full_hash[a[s]]||0}return e?new Date(Date.UTC(r[0],r[1],r[2],r[3],r[4],r[5])):new Date(r[0],r[1],r[2],r[3],r[4],r[5])}}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={date_to_str:function(t,e,n){t=t.replace(/%[a-zA-Z]/g,function(t){switch(t){case"%d":return'"+to_fixed(date.get'+(e?"UTC":"")+'Date())+"';case"%m":return'"+to_fixed((date.get'+(e?"UTC":"")+'Month()+1))+"';case"%j":return'"+date.get'+(e?"UTC":"")+'Date()+"';case"%n":return'"+(date.get'+(e?"UTC":"")+'Month()+1)+"';case"%y":return'"+to_fixed(date.get'+(e?"UTC":"")+'FullYear()%100)+"';case"%Y":return'"+date.get'+(e?"UTC":"")+'FullYear()+"';case"%D":return'"+locale.date.day_short[date.get'+(e?"UTC":"")+'Day()]+"';case"%l":return'"+locale.date.day_full[date.get'+(e?"UTC":"")+'Day()]+"';case"%M":return'"+locale.date.month_short[date.get'+(e?"UTC":"")+'Month()]+"';case"%F":return'"+locale.date.month_full[date.get'+(e?"UTC":"")+'Month()]+"';case"%h":return'"+to_fixed((date.get'+(e?"UTC":"")+'Hours()+11)%12+1)+"';case"%g":return'"+((date.get'+(e?"UTC":"")+'Hours()+11)%12+1)+"';case"%G":return'"+date.get'+(e?"UTC":"")+'Hours()+"';case"%H":return'"+to_fixed(date.get'+(e?"UTC":"")+'Hours())+"';case"%i":return'"+to_fixed(date.get'+(e?"UTC":"")+'Minutes())+"';case"%a":return'"+(date.get'+(e?"UTC":"")+'Hours()>11?"pm":"am")+"';case"%A":return'"+(date.get'+(e?"UTC":"")+'Hours()>11?"PM":"AM")+"';case"%s":return'"+to_fixed(date.get'+(e?"UTC":"")+'Seconds())+"';case"%W":return'"+to_fixed(getISOWeek(date))+"';case"%w":return'"+to_fixed(getWeek(date))+"';default:return t}});var i=new Function("date","to_fixed","locale","getISOWeek","getWeek",'return "'+t+'";');return function(t){return i(t,n.date.to_fixed,n.locale,n.date.getISOWeek,n.date.getWeek)}},str_to_date:function(t,e,n){for(var i="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",r=t.match(/%[a-zA-Z]/g),a=0;a<r.length;a++)switch(r[a]){case"%j":case"%d":i+="set[2]=temp["+a+"]||1;";break;case"%n":case"%m":i+="set[1]=(temp["+a+"]||1)-1;";break;case"%y":i+="set[0]=temp["+a+"]*1+(temp["+a+"]>50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":i+="set[3]=temp["+a+"]||0;";break;case"%i":i+="set[4]=temp["+a+"]||0;";break;case"%Y":i+="set[0]=temp["+a+"]||0;";break;case"%a":case"%A":i+="set[3]=set[3]%12+((temp["+a+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":i+="set[5]=temp["+a+"]||0;";break;case"%M":i+="set[1]=locale.date.month_short_hash[temp["+a+"]]||0;";break;case"%F":i+="set[1]=locale.date.month_full_hash[temp["+a+"]]||0;"}var o="set[0],set[1],set[2],set[3],set[4],set[5]";e&&(o=" Date.UTC("+o+")");var s=new Function("date","locale","var set=[0,0,1,0,0,0]; "+i+" return new Date("+o+");");return function(t){return s(t,n.locale)}}};e.default=i},function(t,e,n){var i=n(241).default,r=n(240).default;t.exports=function(t){var e=null;function n(){var n=!1;return"auto"===t.config.csp?(null===e&&function(){try{new Function("canUseCsp = false;")}catch(t){e=!0}}(),n=e):n=t.config.csp,n}return{init:function(){for(var e=t.locale,n=e.date.month_short,i=e.date.month_short_hash={},r=0;r<n.length;r++)i[n[r]]=r;for(n=e.date.month_full,i=e.date.month_full_hash={},r=0;r<n.length;r++)i[n[r]]=r},date_part:function(t){var e=new Date(t);return t.setHours(0),this.hour_start(t),t.getHours()&&(t.getDate()<e.getDate()||t.getMonth()<e.getMonth()||t.getFullYear()<e.getFullYear())&&t.setTime(t.getTime()+36e5*(24-t.getHours())),t},time_part:function(t){return(t.valueOf()/1e3-60*t.getTimezoneOffset())%86400},week_start:function(e){var n=e.getDay();return t.config.start_on_monday&&(0===n?n=6:n--),this.date_part(this.add(e,-1*n,"day"))},month_start:function(t){return t.setDate(1),this.date_part(t)},quarter_start:function(t){this.month_start(t);var e,n=t.getMonth();return e=n>=9?9:n>=6?6:n>=3?3:0,t.setMonth(e),t},year_start:function(t){return t.setMonth(0),this.month_start(t)},day_start:function(t){return this.date_part(t)},hour_start:function(t){return t.getMinutes()&&t.setMinutes(0),this.minute_start(t),t},minute_start:function(t){return t.getSeconds()&&t.setSeconds(0),t.getMilliseconds()&&t.setMilliseconds(0),t},_add_days:function(t,e,n){t.setDate(t.getDate()+e);var i=e>=0,r=!n.getHours()&&t.getHours(),a=t.getDate()<=n.getDate()||t.getMonth()<n.getMonth()||t.getFullYear()<n.getFullYear();return i&&r&&a&&t.setTime(t.getTime()+36e5*(24-t.getHours())),e>1&&r&&t.setHours(0),t},add:function(t,e,n){var i=new Date(t.valueOf());switch(n){case"day":i=this._add_days(i,e,t);break;case"week":i=this._add_days(i,7*e,t);break;case"month":i.setMonth(i.getMonth()+e);break;case"year":i.setYear(i.getFullYear()+e);break;case"hour":i.setTime(i.getTime()+60*e*60*1e3);break;case"minute":i.setTime(i.getTime()+60*e*1e3);break;default:return this["add_"+n](t,e,n)}return i},add_quarter:function(t,e){return this.add(t,3*e,"month")},to_fixed:function(t){return t<10?"0"+t:t},copy:function(t){return new Date(t.valueOf())},date_to_str:function(e,a){var o=i;return n()&&(o=r),o.date_to_str(e,a,t)},str_to_date:function(e,a){var o=i;return n()&&(o=r),o.str_to_date(e,a,t)},getISOWeek:function(e){return t.date._getWeekNumber(e,!0)},_getWeekNumber:function(t,e){if(!t)return!1;var n=t.getDay();e&&0===n&&(n=7);var i=new Date(t.valueOf());i.setDate(t.getDate()+(4-n));var r=i.getFullYear(),a=Math.round((i.getTime()-new Date(r,0,1).getTime())/864e5);return 1+Math.floor(a/7)},getWeek:function(e){return t.date._getWeekNumber(e,t.config.start_on_monday)},getUTCISOWeek:function(e){return t.date.getISOWeek(e)},convert_to_utc:function(t){return new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())},parseDate:function(e,n){return e&&!e.getFullYear&&("function"!=typeof n&&(n="string"==typeof n?"parse_date"===n||"xml_date"===n?t.defined(t.templates.xml_date)?t.templates.xml_date:t.templates.parse_date:t.defined(t.templates[n])?t.templates[n]:t.date.str_to_date(n):t.defined(t.templates.xml_date)?t.templates.xml_date:t.templates.parse_date),e=e?n(e):null),e}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if("string"==typeof t||"number"==typeof t)return t;var e="";for(var n in t){var i="";t.hasOwnProperty(n)&&(i=n+"="+(i="string"==typeof t[n]?encodeURIComponent(t[n]):"number"==typeof t[n]?t[n]:encodeURIComponent(JSON.stringify(t[n]))),e.length&&(i="&"+i),e+=i)}return e}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=n(11),a=n(21),o=n(243).default;function s(t,e){var n={method:t};if(0===e.length)throw new Error("Arguments list of query is wrong.");if(1===e.length)return"string"==typeof e[0]?(n.url=e[0],n.async=!0):(n.url=e[0].url,n.async=e[0].async||!0,n.callback=e[0].callback,n.headers=e[0].headers),e[0].data?"string"!=typeof e[0].data?n.data=o(e[0].data):n.data=e[0].data:n.data="",n;switch(n.url=e[0],t){case"GET":case"DELETE":n.callback=e[1],n.headers=e[2];break;case"POST":case"PUT":e[1]?"string"!=typeof e[1]?n.data=o(e[1]):n.data=e[1]:n.data="",n.callback=e[2],n.headers=e[3]}return n}t.exports=function(t){return{cache:!0,method:"get",parse:function(t){return"string"!=typeof t?t:(t=t.replace(/^[\s]+/,""),"undefined"==typeof DOMParser||r.isIE?void 0!==a.ActiveXObject&&((e=new a.ActiveXObject("Microsoft.XMLDOM")).async="false",e.loadXML(t)):e=(new DOMParser).parseFromString(t,"text/xml"),e);var e},xmltop:function(e,n,i){if(void 0===n.status||n.status<400){var r=n.responseXML?n.responseXML||n:this.parse(n.responseText||n);if(r&&null!==r.documentElement&&!r.getElementsByTagName("parsererror").length)return r.getElementsByTagName(e)[0]}return-1!==i&&t.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],i]),document.createElement("DIV")},xpath:function(t,e){if(e.nodeName||(e=e.responseXML||e),r.isIE)return e.selectNodes(t)||[];for(var n,i=[],a=(e.ownerDocument||e).evaluate(t,e,null,XPathResult.ANY_TYPE,null);n=a.iterateNext();)i.push(n);return i},query:function(t){return this._call(t.method||"GET",t.url,t.data||"",t.async||!0,t.callback,t.headers)},get:function(t,e,n){var i=s("GET",arguments);return this.query(i)},getSync:function(t,e){var n=s("GET",arguments);return n.async=!1,this.query(n)},put:function(t,e,n,i){var r=s("PUT",arguments);return this.query(r)},del:function(t,e,n){var i=s("DELETE",arguments);return this.query(i)},post:function(t,e,n,i){1==arguments.length?e="":2==arguments.length&&"function"==typeof e&&(e,e="");var r=s("POST",arguments);return this.query(r)},postSync:function(t,e,n){e=null===e?"":String(e);var i=s("POST",arguments);return i.async=!1,this.query(i)},_call:function(e,n,r,o,s,l){return new t.Promise(function(c,u){var d=void 0!==("undefined"==typeof XMLHttpRequest?"undefined":i(XMLHttpRequest))?new XMLHttpRequest:new a.ActiveXObject("Microsoft.XMLHTTP"),h=null!==navigator.userAgent.match(/AppleWebKit/)&&null!==navigator.userAgent.match(/Qt/)&&null!==navigator.userAgent.match(/Safari/);o&&(d.onreadystatechange=function(){if(4==d.readyState||h&&3==d.readyState){if((200!=d.status||""===d.responseText)&&!t.callEvent("onAjaxError",[d]))return;setTimeout(function(){"function"==typeof s&&s.apply(a,[{xmlDoc:d,filePath:n}]),c(d),"function"==typeof s&&(s=null,d=null)},0)}});var f=!this||!this.cache;if("GET"==e&&f&&(n+=(n.indexOf("?")>=0?"&":"?")+"dhxr"+(new Date).getTime()+"=1"),d.open(e,n,o),l)for(var _ in l)d.setRequestHeader(_,l[_]);else"POST"==e.toUpperCase()||"PUT"==e||"DELETE"==e?d.setRequestHeader("Content-Type","application/x-www-form-urlencoded"):"GET"==e&&(r=null);if(d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.send(r),!o)return{xmlDoc:d,filePath:n}})},urlSeparator:function(t){return-1!=t.indexOf("?")?"&":"?"}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),t.exports=function(){return{layout:{css:"gantt_container",rows:[{cols:[{view:"grid",scrollX:"scrollHor",scrollY:"scrollVer"},{resizer:!0,width:1},{view:"timeline",scrollX:"scrollHor",scrollY:"scrollVer"},{view:"scrollbar",id:"scrollVer"}]},{view:"scrollbar",id:"scrollHor",height:20}]},links:{finish_to_start:"0",start_to_start:"1",finish_to_finish:"2",start_to_finish:"3"},types:{task:"task",project:"project",milestone:"milestone"},auto_types:!1,duration_unit:"day",work_time:!1,correct_work_time:!1,skip_off_time:!1,cascade_delete:!0,autosize:!1,autosize_min_width:0,autoscroll:!0,autoscroll_speed:30,deepcopy_on_parse:!1,show_links:!0,show_task_cells:!0,static_background:!1,static_background_cells:!0,branch_loading:!1,branch_loading_property:"$has_child",show_loading:!1,show_chart:!0,show_grid:!0,min_duration:36e5,date_format:"%d-%m-%Y %H:%i",xml_date:void 0,start_on_monday:!0,server_utc:!1,show_progress:!0,fit_tasks:!1,select_task:!0,scroll_on_click:!0,smart_rendering:!0,preserve_scroll:!0,readonly:!1,container_resize_timeout:20,date_grid:"%Y-%m-%d",drag_links:!0,drag_progress:!0,drag_resize:!0,drag_project:!1,drag_move:!0,drag_mode:{resize:"resize",progress:"progress",move:"move",ignore:"ignore"},round_dnd_dates:!0,link_wrapper_width:20,root_id:0,autofit:!1,columns:[{name:"text",tree:!0,width:"*",resize:!0},{name:"start_date",align:"center",resize:!0},{name:"duration",align:"center"},{name:"add",width:44}],scale_offset_minimal:!0,inherit_scale_class:!1,scales:[{unit:"day",step:1,date:"%d %M"}],time_step:60,duration_step:1,task_date:"%d %F %Y",time_picker:"%H:%i",task_attribute:"data-task-id",link_attribute:"data-link-id",layer_attribute:"data-layer",buttons_left:["gantt_save_btn","gantt_cancel_btn"],_migrate_buttons:{dhx_save_btn:"gantt_save_btn",dhx_cancel_btn:"gantt_cancel_btn",dhx_delete_btn:"gantt_delete_btn"},buttons_right:["gantt_delete_btn"],lightbox:{sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"time",type:"duration",map_to:"auto"}],project_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",readonly:!0,map_to:"auto"}],milestone_sections:[{name:"description",height:70,map_to:"text",type:"textarea",focus:!0},{name:"type",type:"typeselect",map_to:"type"},{name:"time",type:"duration",single_date:!0,map_to:"auto"}]},drag_lightbox:!0,sort:!1,details_on_create:!0,details_on_dblclick:!0,initial_scroll:!0,task_scroll_offset:100,order_branch:!1,order_branch_free:!1,task_height:void 0,bar_height:"full",min_column_width:70,min_grid_column_width:70,grid_resizer_column_attribute:"data-column-index",keep_grid_width:!1,grid_resize:!1,grid_elastic_columns:!1,show_tasks_outside_timescale:!1,show_unscheduled:!0,resize_rows:!1,task_grid_row_resizer_attribute:"data-row-index",min_task_grid_row_height:30,readonly_property:"readonly",editable_property:"editable",calendar_property:"calendar_id",resource_calendars:{},dynamic_resource_calendars:!1,inherit_calendar:!1,type_renderers:{},open_tree_initially:!1,optimize_render:!0,prevent_default_scroll:!1,show_errors:!0,wai_aria_attributes:!0,smart_scales:!0,rtl:!1,placeholder_task:!1,horizontal_scroll_key:"shiftKey",drag_timeline:{useKey:void 0,ignore:".gantt_task_line, .gantt_task_link"},drag_multiple:!0,csp:"auto"}}},function(t,e){t.exports=function(){var t={};return{services:{},setService:function(e,n){t[e]=n},getService:function(e){return t[e]?t[e]():null},dropService:function(e){t[e]&&delete t[e]},destructor:function(){for(var e in t)if(t[e]){var n=t[e];n&&n.destructor&&n.destructor()}t=null}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){return function(t){var e=this;for(var n in this.addExtension=function(t,n){e._extensions[t]=n},this.getExtension=function(t){return e._extensions[t]},this._extensions={},t)this._extensions[n]=t[n]}}();e.default=i},function(t,e){t.exports={KEY_CODES:{UP:38,DOWN:40,LEFT:37,RIGHT:39,SPACE:32,ENTER:13,DELETE:46,ESC:27,TAB:9}}},function(t,e,n){function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){var e=new function(){this.constants=n(248),this.version="8.0.7",this.license="gpl",this.templates={},this.ext={},this.keys={edit_save:this.constants.KEY_CODES.ENTER,edit_cancel:this.constants.KEY_CODES.ESC}},r=new(0,n(247).default)(t),a={};e.plugins=function(t){for(var n in t)if(t[n]&&!a[n]){var i=r.getExtension(n);i&&(i(e),a[n]=!0)}return a},e.$services=n(246)(),e.config=n(245)(),e.ajax=n(244)(e),e.date=n(242)(e),e.RemoteEvents=n(239).remoteEvents;var o=n(237)(e);e.$services.setService("dnd",function(){return o});var s=n(236)(e);e.$services.setService("templateLoader",function(){return s}),n(5)(e);var l=new(n(235));l.registerProvider("global",function(){var t={min_date:e._min_date,max_date:e._max_date,selected_task:null};return e.$data&&e.$data.tasksStore&&(t.selected_task=e.$data.tasksStore.getSelectedId()),t}),e.getState=l.getState,e.$services.setService("state",function(){return l});var c=n(0);c.mixin(e,c),e.Promise=n(234),e.env=n(11),n(232)(e);var u=n(226);e.dataProcessor=u.DEPRECATED_api,e.createDataProcessor=u.createDataProcessor,n(221)(e),n(211)(e),n(210)(e),n(202)(e),n(201)(e),n(200)(e),n(187)(e),n(186).default(e),n(185)(e),n(184)(e),n(183)(e),n(180)(e),n(179).default(e);var d=n(178).default();return e.i18n={addLocale:d.addLocale,setLocale:function(t){if("string"==typeof t){var n=d.getLocale(t);n||(n=d.getLocale("en")),e.locale=n}else if(t)if(e.locale)for(var r in t)t[r]&&"object"===i(t[r])?(e.locale[r]||(e.locale[r]={}),e.mixin(e.locale[r],t[r],!0)):e.locale[r]=t[r];else e.locale=t},getLocale:d.getLocale},e.i18n.setLocale("en"),e}},function(t,e,n){n(35);var i=n(249);t.exports=function(t){var e=i(t);return e.env.isNode||n(144)(e),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=100,r=function(){function t(t){var e=this;this.maxSteps=i,this.undoEnabled=!0,this.redoEnabled=!0,this.action={create:function(t){return{commands:t?t.slice():[]}},invert:function(t){for(var n,i=e._gantt.copy(t),r=e.command,a=0;a<t.commands.length;a++){var o=i.commands[a]=r.invert(i.commands[a]);o.type!==r.type.update&&o.type!==r.type.move||(n=[o.oldValue,o.value],o.value=n[0],o.oldValue=n[1])}return i}},this.command={entity:null,type:null,create:function(t,n,i,r){var a=e._gantt;return{entity:r,type:i,value:a.copy(t),oldValue:a.copy(n||t)}},invert:function(t){var n=e._gantt.copy(t);return n.type=e.command.inverseCommands(t.type),n},inverseCommands:function(t){var n=e._gantt,i=e.command.type;switch(t){case i.update:return i.update;case i.remove:return i.add;case i.add:return i.remove;case i.move:return i.move;default:return n.assert(!1,"Invalid command "+t),null}}},this._undoStack=[],this._redoStack=[],this._gantt=t}return t.prototype.getUndoStack=function(){return this._undoStack},t.prototype.setUndoStack=function(t){this._undoStack=t},t.prototype.getRedoStack=function(){return this._redoStack},t.prototype.setRedoStack=function(t){this._redoStack=t},t.prototype.clearUndoStack=function(){this._undoStack=[]},t.prototype.clearRedoStack=function(){this._redoStack=[]},t.prototype.updateConfigs=function(){var t=this._gantt;this.maxSteps=t.config.undo_steps||i,this.command.entity=t.config.undo_types,this.command.type=t.config.undo_actions,this.undoEnabled=!!t.config.undo,this.redoEnabled=!!t.config.redo},t.prototype.undo=function(){var t=this._gantt;if(this.updateConfigs(),this.undoEnabled){var e=this._pop(this._undoStack);if(e&&this._reorderCommands(e),!1!==t.callEvent("onBeforeUndo",[e])&&e)return this._applyAction(this.action.invert(e)),this._push(this._redoStack,t.copy(e)),void t.callEvent("onAfterUndo",[e]);t.callEvent("onAfterUndo",[null])}},t.prototype.redo=function(){var t=this._gantt;if(this.updateConfigs(),this.redoEnabled){var e=this._pop(this._redoStack);if(e&&this._reorderCommands(e),!1!==t.callEvent("onBeforeRedo",[e])&&e)return this._applyAction(e),this._push(this._undoStack,t.copy(e)),void t.callEvent("onAfterRedo",[e]);t.callEvent("onAfterRedo",[null])}},t.prototype.logAction=function(t){this._push(this._undoStack,t),this._redoStack=[]},t.prototype._push=function(t,e){var n=this._gantt;if(e.commands.length){var i=t===this._undoStack?"onBeforeUndoStack":"onBeforeRedoStack";if(!1!==n.callEvent(i,[e])&&e.commands.length){for(t.push(e);t.length>this.maxSteps;)t.shift();return e}}},t.prototype._pop=function(t){return t.pop()},t.prototype._reorderCommands=function(t){var e={any:0,link:1,task:2},n={move:1,any:0};t.commands.sort(function(t,i){if("task"===t.entity&&"task"===i.entity)return t.type!==i.type?(n[i.type]||0)-(n[t.type]||0):"move"===t.type&&t.oldValue&&i.oldValue&&i.oldValue.parent===t.oldValue.parent?t.oldValue.$index-i.oldValue.$index:0;var r=e[t.entity]||e.any;return(e[i.entity]||e.any)-r})},t.prototype._applyAction=function(t){var e=null,n=this.command.entity,i=this.command.type,r=this._gantt,a={};a[n.task]={add:"addTask",get:"getTask",update:"updateTask",remove:"deleteTask",move:"moveTask",isExists:"isTaskExists"},a[n.link]={add:"addLink",get:"getLink",update:"updateLink",remove:"deleteLink",isExists:"isLinkExists"},r.batchUpdate(function(){for(var n=0;n<t.commands.length;n++){e=t.commands[n];var o=a[e.entity][e.type],s=a[e.entity].get,l=a[e.entity].isExists;if(e.type===i.add)r[o](e.oldValue,e.oldValue.parent,e.oldValue.$local_index);else if(e.type===i.remove)r[l](e.value.id)&&r[o](e.value.id);else if(e.type===i.update){var c=r[s](e.value.id);for(var u in e.value)u.startsWith("$")||u.startsWith("_")||(c[u]=e.value[u]);r[o](e.value.id)}else e.type===i.move&&(r[o](e.value.id,e.value.$local_index,e.value.parent),r.callEvent("onRowDragEnd",[e.value.id]))}})},t}();e.Undo=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i={onBeforeUndo:"onAfterUndo",onBeforeRedo:"onAfterRedo"},r=["onTaskDragStart","onAfterTaskUpdate","onAfterTaskDelete","onBeforeBatchUpdate"],a=function(){function t(t,e){this._batchAction=null,this._batchMode=!1,this._ignore=!1,this._ignoreMoveEvents=!1,this._initialTasks={},this._initialLinks={},this._nestedTasks={},this._nestedLinks={},this._undo=t,this._gantt=e,this._attachEvents()}return t.prototype.store=function(t,e,n){return void 0===n&&(n=!1),e===this._gantt.config.undo_types.task?this._storeTask(t,n):e===this._gantt.config.undo_types.link&&this._storeLink(t,n)},t.prototype.isMoveEventsIgnored=function(){return this._ignoreMoveEvents},t.prototype.toggleIgnoreMoveEvents=function(t){this._ignoreMoveEvents=t||!1},t.prototype.startIgnore=function(){this._ignore=!0},t.prototype.stopIgnore=function(){this._ignore=!1},t.prototype.startBatchAction=function(){var t=this;this._timeout||(this._timeout=setTimeout(function(){t.stopBatchAction(),t._timeout=null},10)),this._ignore||this._batchMode||(this._batchMode=!0,this._batchAction=this._undo.action.create())},t.prototype.stopBatchAction=function(){if(!this._ignore){var t=this._undo;this._batchAction&&t.logAction(this._batchAction),this._batchMode=!1,this._batchAction=null}},t.prototype.onTaskAdded=function(t){this._ignore||this._storeTaskCommand(t,this._undo.command.type.add)},t.prototype.onTaskUpdated=function(t){this._ignore||this._storeTaskCommand(t,this._undo.command.type.update)},t.prototype.onTaskMoved=function(t){if(!this._ignore){t.$local_index=this._gantt.getTaskIndex(t.id);var e=this.getInitialTask(t.id);if(t.$local_index===e.$local_index&&this._gantt.getParent(t)===this._gantt.getParent(e))return;this._storeEntityCommand(t,this.getInitialTask(t.id),this._undo.command.type.move,this._undo.command.entity.task)}},t.prototype.onTaskDeleted=function(t){if(!this._ignore){if(this._storeTaskCommand(t,this._undo.command.type.remove),this._nestedTasks[t.id])for(var e=this._nestedTasks[t.id],n=0;n<e.length;n++)this._storeTaskCommand(e[n],this._undo.command.type.remove);if(this._nestedLinks[t.id]){var i=this._nestedLinks[t.id];for(n=0;n<i.length;n++)this._storeLinkCommand(i[n],this._undo.command.type.remove)}}},t.prototype.onLinkAdded=function(t){this._ignore||this._storeLinkCommand(t,this._undo.command.type.add)},t.prototype.onLinkUpdated=function(t){this._ignore||this._storeLinkCommand(t,this._undo.command.type.update)},t.prototype.onLinkDeleted=function(t){this._ignore||this._storeLinkCommand(t,this._undo.command.type.remove)},t.prototype.setNestedTasks=function(t,e){for(var n=this._gantt,i=null,r=[],a=this._getLinks(n.getTask(t)),o=0;o<e.length;o++)i=this.setInitialTask(e[o]),a=a.concat(this._getLinks(i)),r.push(i);var s={};for(o=0;o<a.length;o++)s[a[o]]=!0;var l=[];for(var o in s)l.push(this.setInitialLink(o));this._nestedTasks[t]=r,this._nestedLinks[t]=l},t.prototype.setInitialTask=function(t,e){var n=this._gantt;if(e||!this._initialTasks[t]||!this._batchMode){var i=n.copy(n.getTask(t));i.$index=n.getGlobalTaskIndex(t),i.$local_index=n.getTaskIndex(t),this.setInitialTaskObject(t,i)}return this._initialTasks[t]},t.prototype.getInitialTask=function(t){return this._initialTasks[t]},t.prototype.clearInitialTasks=function(){this._initialTasks={}},t.prototype.setInitialTaskObject=function(t,e){this._initialTasks[t]=e},t.prototype.setInitialLink=function(t,e){return this._initialLinks[t]&&this._batchMode||(this._initialLinks[t]=this._gantt.copy(this._gantt.getLink(t))),this._initialLinks[t]},t.prototype.getInitialLink=function(t){return this._initialLinks[t]},t.prototype.clearInitialLinks=function(){this._initialLinks={}},t.prototype._attachEvents=function(){var t=this,e=null,n=this._gantt,a=function(){e||(e=setTimeout(function(){e=null}),t.clearInitialTasks(),n.eachTask(function(e){t.setInitialTask(e.id)}),t.clearInitialLinks(),n.getLinks().forEach(function(e){t.setInitialLink(e.id)}))},o=function(t){return n.copy(n.getTask(t))};for(var s in i)n.attachEvent(s,function(){return t.startIgnore(),!0}),n.attachEvent(i[s],function(){return t.stopIgnore(),!0});for(s=0;s<r.length;s++)n.attachEvent(r[s],function(){return t.startBatchAction(),!0});n.attachEvent("onParse",function(){t._undo.clearUndoStack(),t._undo.clearRedoStack(),a()}),n.attachEvent("onAfterTaskAdd",function(e,n){t.setInitialTask(e,!0),t.onTaskAdded(n)}),n.attachEvent("onAfterTaskUpdate",function(e,n){t.onTaskUpdated(n)}),n.attachEvent("onAfterTaskDelete",function(e,n){t.onTaskDeleted(n)}),n.attachEvent("onAfterLinkAdd",function(e,n){t.setInitialLink(e,!0),t.onLinkAdded(n)}),n.attachEvent("onAfterLinkUpdate",function(e,n){t.onLinkUpdated(n)}),n.attachEvent("onAfterLinkDelete",function(e,n){t.onLinkDeleted(n)}),n.attachEvent("onRowDragEnd",function(e,n){return t.onTaskMoved(o(e)),t.toggleIgnoreMoveEvents(),!0}),n.attachEvent("onBeforeTaskDelete",function(e){t.store(e,n.config.undo_types.task);var i=[];return a(),n.eachTask(function(t){i.push(t.id)},e),t.setNestedTasks(e,i),!0});var l=n.getDatastore("task");l.attachEvent("onBeforeItemMove",function(e,n,i){return t.isMoveEventsIgnored()||a(),!0}),l.attachEvent("onAfterItemMove",function(e,n,i){return t.isMoveEventsIgnored()||t.onTaskMoved(o(e)),!0}),n.attachEvent("onRowDragStart",function(e,n,i){return t.toggleIgnoreMoveEvents(!0),a(),!0}),n.attachEvent("onBeforeTaskDrag",function(e){return t.store(e,n.config.undo_types.task)}),n.attachEvent("onLightbox",function(e){return t.store(e,n.config.undo_types.task)}),n.attachEvent("onBeforeTaskAutoSchedule",function(e){return t.store(e.id,n.config.undo_types.task),!0}),n.ext.inlineEditors&&n.ext.inlineEditors.attachEvent("onEditStart",function(e){t.store(e.id,n.config.undo_types.task)})},t.prototype._storeCommand=function(t){var e=this._undo;if(e.updateConfigs(),e.undoEnabled)if(this._batchMode)this._batchAction.commands.push(t);else{var n=e.action.create([t]);e.logAction(n)}},t.prototype._storeEntityCommand=function(t,e,n,i){var r=this._undo.command.create(t,e,n,i);this._storeCommand(r)},t.prototype._storeTaskCommand=function(t,e){this._gantt.isTaskExists(t.id)&&(t.$local_index=this._gantt.getTaskIndex(t.id)),this._storeEntityCommand(t,this.getInitialTask(t.id),e,this._undo.command.entity.task)},t.prototype._storeLinkCommand=function(t,e){this._storeEntityCommand(t,this.getInitialLink(t.id),e,this._undo.command.entity.link)},t.prototype._getLinks=function(t){return t.$source.concat(t.$target)},t.prototype._storeTask=function(t,e){var n=this;void 0===e&&(e=!1);var i=this._gantt;return this.setInitialTask(t,e),i.eachTask(function(t){n.setInitialTask(t.id)},t),!0},t.prototype._storeLink=function(t,e){return void 0===e&&(e=!1),this.setInitialLink(t,e),!0},t}();e.Monitor=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(252),r=n(251);e.default=function(t){var e=new r.Undo(t),n=new i.Monitor(e,t);function a(t,e,n){t&&(t.id===e&&(t.id=n),t.parent===e&&(t.parent=n))}function o(t,e,n){a(t.value,e,n),a(t.oldValue,e,n)}function s(t,e,n){t&&(t.source===e&&(t.source=n),t.target===e&&(t.target=n))}function l(t,e,n){s(t.value,e,n),s(t.oldValue,e,n)}function c(t,n,i){for(var r=e,a=0;a<t.length;a++)for(var s=t[a],c=0;c<s.commands.length;c++)s.commands[c].entity===r.command.entity.task?o(s.commands[c],n,i):s.commands[c].entity===r.command.entity.link&&l(s.commands[c],n,i)}function u(t,n,i){for(var r=e,a=0;a<t.length;a++)for(var o=t[a],s=0;s<o.commands.length;s++){var l=o.commands[s];l.entity===r.command.entity.link&&(l.value&&l.value.id===n&&(l.value.id=i),l.oldValue&&l.oldValue.id===n&&(l.oldValue.id=i))}}t.config.undo=!0,t.config.redo=!0,t.config.undo_types={link:"link",task:"task"},t.config.undo_actions={update:"update",remove:"remove",add:"add",move:"move"},t.ext||(t.ext={}),t.ext.undo={undo:function(){return e.undo()},redo:function(){return e.redo()},getUndoStack:function(){return e.getUndoStack()},setUndoStack:function(t){return e.setUndoStack(t)},getRedoStack:function(){return e.getRedoStack()},setRedoStack:function(t){return e.setRedoStack(t)},clearUndoStack:function(){return e.clearUndoStack()},clearRedoStack:function(){return e.clearRedoStack()},saveState:function(t,e){return n.store(t,e,!0)},getInitialState:function(e,i){return i===t.config.undo_types.link?n.getInitialLink(e):n.getInitialTask(e)}},t.undo=t.ext.undo.undo,t.redo=t.ext.undo.redo,t.getUndoStack=t.ext.undo.getUndoStack,t.getRedoStack=t.ext.undo.getRedoStack,t.clearUndoStack=t.ext.undo.clearUndoStack,t.clearRedoStack=t.ext.undo.clearRedoStack,t.attachEvent("onTaskIdChange",function(t,n){var i=e;c(i.getUndoStack(),t,n),c(i.getRedoStack(),t,n)}),t.attachEvent("onLinkIdChange",function(t,n){var i=e;u(i.getUndoStack(),t,n),u(i.getRedoStack(),t,n)}),t.attachEvent("onGanttReady",function(){e.updateConfigs()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),r=function(){function t(t){this._gantt=t}return t.prototype.getNode=function(){var t=this._gantt;return this._tooltipNode||(this._tooltipNode=document.createElement("div"),this._tooltipNode.className="gantt_tooltip",t._waiAria.tooltipAttr(this._tooltipNode)),this._tooltipNode},t.prototype.setViewport=function(t){return this._root=t,this},t.prototype.show=function(t,e){var n=this._gantt,r=document.body,a=this.getNode();if(i.isChildOf(a,r)||(this.hide(),r.appendChild(a)),this._isLikeMouseEvent(t)){var o=this._calculateTooltipPosition(t);e=o.top,t=o.left}return a.style.top=e+"px",a.style.left=t+"px",n._waiAria.tooltipVisibleAttr(a),this},t.prototype.hide=function(){var t=this._gantt,e=this.getNode();return e&&e.parentNode&&e.parentNode.removeChild(e),t._waiAria.tooltipHiddenAttr(e),this},t.prototype.setContent=function(t){return this.getNode().innerHTML=t,this},t.prototype._isLikeMouseEvent=function(t){return!(!t||"object"!=typeof t)&&("clientX"in t&&"clientY"in t)},t.prototype._getViewPort=function(){return this._root||document.body},t.prototype._calculateTooltipPosition=function(t){var e=this._gantt,n=this._getViewPortSize(),r=this.getNode(),a={top:0,left:0,width:r.offsetWidth,height:r.offsetHeight,bottom:0,right:0},o=e.config.tooltip_offset_x,s=e.config.tooltip_offset_y,l=document.body,c=i.getRelativeEventPosition(t,l),u=i.getNodePosition(l);c.y+=u.y,a.top=c.y,a.left=c.x,a.top+=s,a.left+=o,a.bottom=a.top+a.height,a.right=a.left+a.width;var d=window.scrollY+l.scrollTop;return a.top<n.top-d?(a.top=n.top,a.bottom=a.top+a.height):a.bottom>n.bottom&&(a.bottom=n.bottom,a.top=a.bottom-a.height),a.left<n.left?(a.left=n.left,a.right=n.left+a.width):a.right>n.right&&(a.right=n.right,a.left=a.right-a.width),c.x>=a.left&&c.x<=a.right&&(a.left=c.x-a.width-o,a.right=a.left+a.width),c.y>=a.top&&c.y<=a.bottom&&(a.top=c.y-a.height-s,a.bottom=a.top+a.height),a},t.prototype._getViewPortSize=function(){var t,e=this._gantt,n=this._getViewPort(),r=n,a=window.scrollY+document.body.scrollTop,o=window.scrollX+document.body.scrollLeft;return n===e.$task_data?(r=e.$task,a=0,o=0,t=i.getNodePosition(e.$task)):t=i.getNodePosition(r),{left:t.x+o,top:t.y+a,width:t.width,height:t.height,bottom:t.y+t.height+a,right:t.x+t.width+o}},t}();e.Tooltip=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(51),r=n(1),a=n(2),o=n(254),s=function(){function t(t){this._listeners={},this.tooltip=new o.Tooltip(t),this._gantt=t,this._domEvents=i(),this._initDelayedFunctions()}return t.prototype.destructor=function(){this.tooltip.hide(),this._domEvents.detachAll()},t.prototype.hideTooltip=function(){this.delayHide()},t.prototype.attach=function(t){var e=this,n=document.body,i=this._gantt;t.global||(n=i.$root);var a=null,o=function(n){var i=r.getTargetNode(n),o=r.closest(i,t.selector);if(!r.isChildOf(i,e.tooltip.getNode())){var s=function(){a=o,t.onmouseenter(n,o)};a?o&&o===a?t.onmousemove(n,o):(t.onmouseleave(n,a),a=null,o&&o!==a&&s()):o&&s()}};this.detach(t.selector),this._domEvents.attach(n,"mousemove",o),this._listeners[t.selector]={node:n,handler:o}},t.prototype.detach=function(t){var e=this._listeners[t];e&&this._domEvents.detach(e.node,"mousemove",e.handler)},t.prototype.tooltipFor=function(t){var e=this,n=function(t){var e=t;return document.createEventObject&&!document.createEvent&&(e=document.createEventObject(t)),e};this._initDelayedFunctions(),this.attach({selector:t.selector,global:t.global,onmouseenter:function(i,r){var a=t.html(i,r);a&&e.delayShow(n(i),a)},onmousemove:function(i,r){var a=t.html(i,r);a?e.delayShow(n(i),a):(e.delayShow.$cancelTimeout(),e.delayHide())},onmouseleave:function(){e.delayShow.$cancelTimeout(),e.delayHide()}})},t.prototype._initDelayedFunctions=function(){var t=this,e=this._gantt;this.delayShow&&this.delayShow.$cancelTimeout(),this.delayHide&&this.delayHide.$cancelTimeout(),this.tooltip.hide(),this.delayShow=a.delay(function(n,i){!1===e.callEvent("onBeforeTooltip",[n])?t.tooltip.hide():(t.tooltip.setContent(i),t.tooltip.show(n))},e.config.tooltip_timeout||1),this.delayHide=a.delay(function(){t.delayShow.$cancelTimeout(),t.tooltip.hide()},e.config.tooltip_hide_timeout||1)},t}();e.TooltipManager=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(255);e.default=function(t){t.config.tooltip_timeout=30,t.config.tooltip_offset_y=20,t.config.tooltip_offset_x=10,t.config.tooltip_hide_timeout=30;var e=new i.TooltipManager(t);t.ext.tooltips=e,t.attachEvent("onGanttReady",function(){e.tooltipFor({selector:"["+t.config.task_attribute+"]:not(.gantt_task_row)",html:function(e){if(!t.config.touch||t.config.touch_tooltip){var n=t.locate(e);if(t.isTaskExists(n)){var i=t.getTask(n);return t.templates.tooltip_text(i.start_date,i.end_date,i)}return null}},global:!1})}),t.attachEvent("onDestroy",function(){e.destructor()}),t.attachEvent("onLightbox",function(){e.hideTooltip()}),t.attachEvent("onBeforeTooltip",function(){if(t.getState().link_source_id)return!1}),t.attachEvent("onGanttScroll",function(){e.hideTooltip()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){var e=this;this.show=function(t,n){void 0===n?e._showForTask(t):e._showAtCoordinates(t,n)},this.hide=function(t){var n=e._gantt,i=e._quickInfoBox;e._quickInfoBoxId=0;var r=e._quickInfoTask;if(e._quickInfoTask=null,i&&i.parentNode){if(n.config.quick_info_detached)return n.callEvent("onAfterQuickInfo",[r]),i.parentNode.removeChild(i);i.className+=" gantt_qi_hidden","auto"===i.style.right?i.style.left="-350px":i.style.right="-350px",t&&(i.style.left=i.style.right="",i.parentNode.removeChild(i)),n.callEvent("onAfterQuickInfo",[r])}},this.getNode=function(){return e._quickInfoBox?e._quickInfoBox:null},this.setContainer=function(t){t&&(e._container="string"==typeof t?document.getElementById(t):t)},this.setContent=function(t){var n=e._gantt,i={taskId:null,header:{title:"",date:""},content:"",buttons:n.config.quickinfo_buttons};t||(t=i),t.taskId||(t.taskId=i.taskId),t.header||(t.header=i.header),t.header.title||(t.header.title=i.header.title),t.header.date||(t.header.date=i.header.date),t.content||(t.content=i.content),t.buttons||(t.buttons=i.buttons);var r=e.getNode();r||(r=e._createQuickInfoElement()),t.taskId&&(e._quickInfoBoxId=t.taskId);var a=r.querySelector(".gantt_cal_qi_title"),o=a.querySelector(".gantt_cal_qi_tcontent"),s=a.querySelector(".gantt_cal_qi_tdate"),l=r.querySelector(".gantt_cal_qi_content"),c=r.querySelector(".gantt_cal_qi_controls");n._waiAria.quickInfoHeader(r,[t.header.title,t.header.date].join(" ")),o.innerHTML=t.header.title,s.innerHTML=t.header.date,t.header.title||t.header.date?a.style.display="":a.style.display="none",l.innerHTML=t.content;var u=t.buttons;u.length?c.style.display="":c.style.display="none";for(var d="",h=0;h<u.length;h++){var f=n._waiAria.quickInfoButtonAttrString(n.locale.labels[u[h]]);d+='<div class="gantt_qi_big_icon '+u[h]+'" title="'+n.locale.labels[u[h]]+'" '+f+"><div class='gantt_menu_icon "+u[h]+"'></div><div>"+n.locale.labels[u[h]]+"</div></div>"}c.innerHTML=d,n.eventRemove(r,"click",e._qiButtonClickHandler),n.eventRemove(r,"keypress",e._qiKeyPressHandler),n.event(r,"click",e._qiButtonClickHandler),n.event(r,"keypress",e._qiKeyPressHandler)},this._qiButtonClickHandler=function(t){t=t||event,e._qi_button_click(t.target||t.srcElement)},this._qiKeyPressHandler=function(t){var n=(t=t||event).which||event.keyCode;13!==n&&32!==n||setTimeout(function(){e._qi_button_click(t.target||t.srcElement)},1)},this._gantt=t}return t.prototype._showAtCoordinates=function(t,e){this.hide(!0),this._quickInfoBoxId=0,this._quickInfoTask=null,this._quickInfoBox||(this._createQuickInfoElement(),this.setContent()),this._appendAtCoordinates(t,e),this._gantt.callEvent("onQuickInfo",[null])},t.prototype._showForTask=function(t){var e=this._gantt;if((t!==this._quickInfoBoxId||!e.utils.dom.isChildOf(this._quickInfoBox,document.body))&&e.config.show_quick_info){this.hide(!0);var n=this._getContainer(),i=this._get_event_counter_part(t,6,n.xViewport,n.yViewport);i&&(this._quickInfoBox=this._init_quick_info(t),this._quickInfoTask=t,this._quickInfoBox.className=this._prepare_quick_info_classname(t),this._fill_quick_data(t),this._show_quick_info(i,6),e.callEvent("onQuickInfo",[t]))}},t.prototype._get_event_counter_part=function(t,e,n,i){var r=this._gantt,a=r.getTaskNode(t);if(!a&&!(a=r.getTaskRowNode(t)))return null;var o=0,s=e+a.offsetTop+a.offsetHeight,l=a;if(r.utils.dom.isChildOf(l,n))for(;l&&l!==n;)o+=l.offsetLeft,l=l.offsetParent;var c=r.getScrollState();return l?{left:o,top:s,dx:o+a.offsetWidth/2-c.x>n.offsetWidth/2?1:0,dy:s+a.offsetHeight/2-c.y>i.offsetHeight/2?1:0,width:a.offsetWidth,height:a.offsetHeight}:null},t.prototype._createQuickInfoElement=function(){var t=this,e=this._gantt,n=document.createElement("div");n.className+="gantt_cal_quick_info",e._waiAria.quickInfoAttr(n);var i='<div class="gantt_cal_qi_title" '+e._waiAria.quickInfoHeaderAttrString()+'><div class="gantt_cal_qi_tcontent"></div><div class="gantt_cal_qi_tdate"></div></div><div class="gantt_cal_qi_content"></div>';if(i+='<div class="gantt_cal_qi_controls">',i+="</div>",n.innerHTML=i,e.config.quick_info_detached){var r=this._getContainer();e.event(r.parent,"scroll",function(){t.hide()})}return this._quickInfoBox=n,n},t.prototype._init_quick_info=function(t){var e=this._gantt,n=e.getTask(t);return"boolean"==typeof this._quickInfoReadonly&&e.isReadonly(n)!==this._quickInfoReadonly&&(this.hide(!0),this._quickInfoBox=null),this._quickInfoReadonly=e.isReadonly(n),this._quickInfoBox||(this._quickInfoBox=this._createQuickInfoElement()),this._quickInfoBox},t.prototype._prepare_quick_info_classname=function(t){var e=this._gantt,n=e.getTask(t),i="gantt_cal_quick_info",r=e.templates.quick_info_class(n.start_date,n.end_date,n);return r&&(i+=" "+r),i},t.prototype._fill_quick_data=function(t){var e=this._gantt,n=e.getTask(t);this._quickInfoBoxId=t;var i=[];if(this._quickInfoReadonly)for(var r=e.config.quickinfo_buttons,a={icon_delete:!0,icon_edit:!0},o=0;o<r.length;o++)this._quickInfoReadonly&&a[r[o]]||i.push(r[o]);else i=e.config.quickinfo_buttons;this.setContent({header:{title:e.templates.quick_info_title(n.start_date,n.end_date,n),date:e.templates.quick_info_date(n.start_date,n.end_date,n)},content:e.templates.quick_info_content(n.start_date,n.end_date,n),buttons:i})},t.prototype._appendAtCoordinates=function(t,e){var n=this._quickInfoBox,i=this._getContainer();n.parentNode&&"#document-fragment"!==n.parentNode.nodeName.toLowerCase()||i.parent.appendChild(n),n.style.left=t+"px",n.style.top=e+"px"},t.prototype._show_quick_info=function(t,e){var n=this._gantt,i=this._quickInfoBox;if(n.config.quick_info_detached){var r=this._getContainer();i.parentNode&&"#document-fragment"!==i.parentNode.nodeName.toLowerCase()||r.parent.appendChild(i);var a=i.offsetWidth,o=i.offsetHeight,s=n.getScrollState(),l=r.xViewport,c=r.yViewport,u=l.offsetWidth+s.x-a,d=t.top-s.y+o,h=t.top;d>c.offsetHeight/2&&(h=t.top-(o+t.height+2*e))<s.y&&d<=c.offsetHeight&&(h=t.top),h<s.y&&(h=s.y);var f=Math.min(Math.max(s.x,t.left-t.dx*(a-t.width)),u),_=h;this._appendAtCoordinates(f,_)}else i.style.top="20px",1===t.dx?(i.style.right="auto",i.style.left="-300px",setTimeout(function(){i.style.left="10px"},1)):(i.style.left="auto",i.style.right="-300px",setTimeout(function(){i.style.right="10px"},1)),i.className+=" gantt_qi_"+(1===t.dx?"left":"right"),n.$root.appendChild(i)},t.prototype._qi_button_click=function(t){var e=this._gantt,n=this._quickInfoBox;if(t&&t!==n){var i=t.className;if(-1!==i.indexOf("_icon")){var r=this._quickInfoBoxId;e.$click.buttons[i.split(" ")[1].replace("icon_","")](r)}else this._qi_button_click(t.parentNode)}},t.prototype._getContainer=function(){var t=this._gantt,e=this._container?this._container:t.$task_data;return e&&e.offsetHeight&&e.offsetWidth?{parent:e,xViewport:t.$task,yViewport:t.$task_data}:(e=this._container?this._container:t.$grid_data)&&e.offsetHeight&&e.offsetWidth?{parent:e,xViewport:t.$grid,yViewport:t.$grid_data}:{parent:this._container?this._container:t.$layout,xViewport:t.$layout,yViewport:t.$layout}},t}();e.QuickInfo=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(257);e.default=function(t){t.ext||(t.ext={}),t.ext.quickInfo=new i.QuickInfo(t),t.config.quickinfo_buttons=["icon_delete","icon_edit"],t.config.quick_info_detached=!0,t.config.show_quick_info=!0,t.templates.quick_info_title=function(t,e,n){return n.text.substr(0,50)},t.templates.quick_info_content=function(t,e,n){return n.details||n.text},t.templates.quick_info_date=function(e,n,i){return t.templates.task_time(e,n,i)},t.templates.quick_info_class=function(t,e,n){return""},t.attachEvent("onTaskClick",function(e,n){return t.utils.dom.closest(n.target,".gantt_add")||setTimeout(function(){t.ext.quickInfo.show(e)},0),!0});for(var e=["onViewChange","onLightbox","onBeforeTaskDelete","onBeforeDrag"],n=function(){return t.ext.quickInfo.hide(),!0},r=0;r<e.length;r++)t.attachEvent(e[r],n);function a(){return t.ext.quickInfo.hide(),t.ext.quickInfo._quickInfoBox=null,!0}t.attachEvent("onEmptyClick",function(e){var i=!0,r=document.querySelector(".gantt_cal_quick_info");r&&t.utils.dom.isChildOf(e.target,r)&&(i=!1),i&&n()}),t.attachEvent("onGanttReady",a),t.attachEvent("onDestroy",a),t.event(window,"keydown",function(e){27===e.keyCode&&t.ext.quickInfo.hide()})}},function(t,e,n){var i=n(2).replaceValidZeroId;t.exports=function(t){t.config.multiselect=!0,t.config.multiselect_one_level=!1,t._multiselect={_selected:{},_one_level:!1,_active:!0,_first_selected_when_shift:null,getDefaultSelected:function(){var t=this.getSelected();return t.length?t[t.length-1]:null},setFirstSelected:function(t){this._first_selected_when_shift=t},getFirstSelected:function(){return this._first_selected_when_shift},isActive:function(){return this.updateState(),this._active},updateState:function(){this._one_level=t.config.multiselect_one_level;var e=this._active;this._active=t.config.select_task,this._active!=e&&this.reset()},reset:function(){this._selected={}},setLastSelected:function(e){t.$data.tasksStore.silent(function(){var n=t.$data.tasksStore;e?n.select(e+""):n.unselect(null)})},getLastSelected:function(){var e=t.$data.tasksStore.getSelectedId();return e&&t.isTaskExists(e)?e:null},select:function(e,n){return!!(e&&t.callEvent("onBeforeTaskMultiSelect",[e,!0,n])&&t.callEvent("onBeforeTaskSelected",[e]))&&(this._selected[e]=!0,this.setLastSelected(e),this.afterSelect(e),t.callEvent("onTaskMultiSelect",[e,!0,n]),t.callEvent("onTaskSelected",[e]),!0)},toggle:function(t,e){this._selected[t]?this.unselect(t,e):this.select(t,e)},unselect:function(e,n){e&&t.callEvent("onBeforeTaskMultiSelect",[e,!1,n])&&(this._selected[e]=!1,this.getLastSelected()==e&&this.setLastSelected(this.getDefaultSelected()),this.afterSelect(e),t.callEvent("onTaskMultiSelect",[e,!1,n]),t.callEvent("onTaskUnselected",[e]))},isSelected:function(e){return!(!t.isTaskExists(e)||!this._selected[e])},getSelected:function(){var e=[];for(var n in this._selected)this._selected[n]&&t.isTaskExists(n)?e.push(n):this._selected[n]=!1;return e.sort(function(e,n){return t.getGlobalTaskIndex(e)>t.getGlobalTaskIndex(n)?1:-1}),e},forSelected:function(t){for(var e=this.getSelected(),n=0;n<e.length;n++)t(e[n])},isSameLevel:function(e){if(!this._one_level)return!0;var n=this.getLastSelected();return!n||(!t.isTaskExists(n)||!t.isTaskExists(e)||!(t.calculateTaskLevel(t.getTask(n))!=t.calculateTaskLevel(t.getTask(e))))},afterSelect:function(e){t.isTaskExists(e)&&t._quickRefresh(function(){t.refreshTask(e)})},doSelection:function(e){if(!this.isActive())return!1;if(t._is_icon_open_click(e))return!1;var n=t.locate(e);if(!n)return!1;if(!t.callEvent("onBeforeMultiSelect",[e]))return!1;var i=this.getSelected(),r=this.getFirstSelected(),a=!1,o=this.getLastSelected(),s=t.config.multiselect,l=function(){var r=t.ext.inlineEditors,a=r.getState(),o=r.locateCell(e.target);t.config.inline_editors_multiselect_open&&o&&r.getEditorConfig(o.columnName)&&(r.isVisible()&&a.id==o.id&&a.columnName==o.columnName||r.startEdit(o.id,o.columnName)),this.setFirstSelected(n),this.isSelected(n)||this.select(n,e),i=this.getSelected();for(var s=0;s<i.length;s++)i[s]!==n&&this.unselect(i[s],e)}.bind(this),c=function(){if(o){if(n){for(var i=t.getGlobalTaskIndex(this.getFirstSelected()),s=t.getGlobalTaskIndex(n),l=t.getGlobalTaskIndex(o),c=o;t.getGlobalTaskIndex(c)!==i;)this.unselect(c,e),c=i>l?t.getNext(c):t.getPrev(c);for(c=n;t.getGlobalTaskIndex(c)!==i;)this.select(c,e)&&!a&&(a=!0,r=c),c=i>s?t.getNext(c):t.getPrev(c)}}else o=n}.bind(this);return s&&(e.ctrlKey||e.metaKey)?(this.isSelected(n)||this.setFirstSelected(n),n&&this.toggle(n,e)):s&&e.shiftKey?(t.isTaskExists(this.getFirstSelected())&&null!==this.getFirstSelected()||this.setFirstSelected(n),i.length?c():l()):l(),this.isSelected(n)?this.setLastSelected(n):r?n==o&&this.setLastSelected(e.shiftKey?r:this.getDefaultSelected()):this.setLastSelected(null),this.getSelected().length||this.setLastSelected(null),this.getLastSelected()&&this.isSelected(this.getFirstSelected())||this.setFirstSelected(this.getLastSelected()),!0}},function(){var e=t.selectTask;t.selectTask=function(n){if(!(n=i(n,this.config.root_id)))return!1;var r=t._multiselect,a=n;return r.isActive()?(r.select(n,null)&&r.setLastSelected(n),r.setFirstSelected(r.getLastSelected())):a=e.call(this,n),a};var n=t.unselectTask;t.unselectTask=function(e){var i=t._multiselect,r=i.isActive();(e=e||i.getLastSelected())&&r&&(i.unselect(e,null),e==i.getLastSelected()&&i.setLastSelected(null),t.refreshTask(e),i.setFirstSelected(i.getLastSelected()));var a=e;return r||(a=n.call(this,e)),a},t.toggleTaskSelection=function(e){var n=t._multiselect;e&&n.isActive()&&(n.toggle(e),n.setFirstSelected(n.getLastSelected()))},t.getSelectedTasks=function(){var e=t._multiselect;return e.isActive(),e.getSelected()},t.eachSelectedTask=function(t){return this._multiselect.forSelected(t)},t.isSelectedTask=function(t){return this._multiselect.isSelected(t)},t.getLastSelectedTask=function(){return this._multiselect.getLastSelected()},t.attachEvent("onGanttReady",function(){var e=t.$data.tasksStore.isSelected;t.$data.tasksStore.isSelected=function(n){return t._multiselect.isActive()?t._multiselect.isSelected(n):e.call(this,n)}})}(),t.attachEvent("onTaskIdChange",function(e,n){var i=t._multiselect;if(!i.isActive())return!0;t.isSelectedTask(e)&&(i.unselect(e,null),i.select(n,null))}),t.attachEvent("onAfterTaskDelete",function(e,n){var i=t._multiselect;if(!i.isActive())return!0;i._selected[e]&&(i._selected[e]=!1,i.setLastSelected(i.getDefaultSelected())),i.forSelected(function(e){t.isTaskExists(e)||i.unselect(e,null)})}),t.attachEvent("onBeforeTaskMultiSelect",function(e,n,i){var r=t._multiselect;return!(n&&r.isActive()&&r._one_level)||r.isSameLevel(e)}),t.attachEvent("onTaskClick",function(e,n){return t._multiselect.doSelection(n)&&t.callEvent("onMultiSelect",[n]),!0})}},function(t,e){t.exports=function(t){function e(e){if(!t.config.show_markers)return!1;if(!e.start_date)return!1;var n=t.getState();if(!(+e.start_date>+n.max_date||(!e.end_date||+e.end_date<+n.min_date)&&+e.start_date<+n.min_date)){var i=document.createElement("div");i.setAttribute("data-marker-id",e.id);var r="gantt_marker";t.templates.marker_class&&(r+=" "+t.templates.marker_class(e)),e.css&&(r+=" "+e.css),e.title&&(i.title=e.title),i.className=r;var a=t.posFromDate(e.start_date);i.style.left=a+"px";var o=Math.max(t.getRowTop(t.getVisibleTaskCount()),0)+"px";if(t.config.timeline_placeholder&&(o=t.$container.scrollHeight+"px"),i.style.height=o,e.end_date){var s=t.posFromDate(e.end_date);i.style.width=Math.max(s-a,0)+"px"}return e.text&&(i.innerHTML="<div class='gantt_marker_content' >"+e.text+"</div>"),i}}function n(){if(t.$task_data){var e=document.createElement("div");e.className="gantt_marker_area",t.$task_data.appendChild(e),t.$marker_area=e}}t._markers||(t._markers=t.createDatastore({name:"marker",initItem:function(e){return e.id=e.id||t.uid(),e}})),t.config.show_markers=!0,t.attachEvent("onBeforeGanttRender",function(){t.$marker_area||n()}),t.attachEvent("onDataRender",function(){t.$marker_area||(n(),t.renderMarkers())}),t.attachEvent("onGanttLayoutReady",function(){t.attachEvent("onBeforeGanttRender",function(){n(),t.$services.getService("layers").createDataRender({name:"marker",defaultContainer:function(){return t.$marker_area}}).addLayer(e)},{once:!0})}),t.getMarker=function(t){return this._markers?this._markers.getItem(t):null},t.addMarker=function(t){return this._markers.addItem(t)},t.deleteMarker=function(t){return!!this._markers.exists(t)&&(this._markers.removeItem(t),!0)},t.updateMarker=function(t){this._markers.refresh(t)},t._getMarkers=function(){return this._markers.getItems()},t.renderMarkers=function(){this._markers.refresh()}}},function(t,e){t.exports=function(t){t.$keyboardNavigation.dispatcher={isActive:!1,activeNode:null,globalNode:new t.$keyboardNavigation.GanttNode,enable:function(){this.isActive=!0,this.setActiveNode(this.getActiveNode())},disable:function(){this.isActive=!1},isEnabled:function(){return!!this.isActive},getDefaultNode:function(){var e;return(e=t.config.keyboard_navigation_cells?new t.$keyboardNavigation.TaskCell:new t.$keyboardNavigation.TaskRow).isValid()||(e=e.fallback()),e},setDefaultNode:function(){this.setActiveNode(this.getDefaultNode())},getActiveNode:function(){var t=this.activeNode;return t&&!t.isValid()&&(t=t.fallback()),t},fromDomElement:function(e){for(var n=[t.$keyboardNavigation.TaskRow,t.$keyboardNavigation.TaskCell,t.$keyboardNavigation.HeaderCell],i=0;i<n.length;i++)if(n[i].prototype.fromDomElement){var r=n[i].prototype.fromDomElement(e);if(r)return r}return null},focusGlobalNode:function(){this.blurNode(this.globalNode),this.focusNode(this.globalNode)},setActiveNode:function(t){var e=!0;this.activeNode&&this.activeNode.compareTo(t)&&(e=!1),this.isEnabled()&&(e&&this.blurNode(this.activeNode),this.activeNode=t,this.focusNode(this.activeNode,!e))},focusNode:function(t,e){t&&t.focus&&t.focus(e)},blurNode:function(t){t&&t.blur&&t.blur()},keyDownHandler:function(e){if(!t.$keyboardNavigation.isModal()&&this.isEnabled()&&!e.defaultPrevented){var n=this.globalNode,i=t.$keyboardNavigation.shortcuts.getCommandFromEvent(e),r=this.getActiveNode();!1!==t.$keyboardNavigation.facade.callEvent("onKeyDown",[i,e])&&(r?r.findHandler(i)?r.doAction(i,e):n.findHandler(i)&&n.doAction(i,e):this.setDefaultNode())}},_timeout:null,awaitsFocus:function(){return null!==this._timeout},delay:function(e,n){clearTimeout(this._timeout),this._timeout=setTimeout(t.bind(function(){this._timeout=null,e()},this),n||1)},clearDelay:function(){clearTimeout(this._timeout)}}}},function(t,e){t.exports=function(t){!function(){var e=[];function n(){return!!e.length}function i(e){setTimeout(function(){n()||t.$destroyed||t.focus()},1)}function r(n){t.eventRemove(n,"keydown",o),t.event(n,"keydown",o),e.push(n)}function a(){var n=e.pop();n&&t.eventRemove(n,"keydown",o),i()}function o(n){var i=n.currentTarget;(function(t){return t==e[e.length-1]})(i)&&t.$keyboardNavigation.trapFocus(i,n)}function s(){r(t.getLightbox())}t.attachEvent("onLightbox",s),t.attachEvent("onAfterLightbox",a),t.attachEvent("onLightboxChange",function(){a(),s()}),t.attachEvent("onAfterQuickInfo",function(){i()}),t.attachEvent("onMessagePopup",function(e){l=t.utils.dom.getActiveElement(),r(e)}),t.attachEvent("onAfterMessagePopup",function(){a(),setTimeout(function(){l&&(l.focus(),l=null)},1)});var l=null;t.$keyboardNavigation.isModal=n}()}},function(t,e,n){t.exports=function(t){var e=n(1),i=n(2).replaceValidZeroId;t.$keyboardNavigation.TaskCell=function(e,n){if(!(e=i(e,t.config.root_id))){var r=t.getChildren(t.config.root_id);r[0]&&(e=r[0])}this.taskId=e,this.columnIndex=n||0,t.isTaskExists(this.taskId)&&(this.index=t.getTaskIndex(this.taskId),this.globalIndex=t.getGlobalTaskIndex(this.taskId))},t.$keyboardNavigation.TaskCell.prototype=t._compose(t.$keyboardNavigation.TaskRow,{_handlers:null,isValid:function(){return t.$keyboardNavigation.TaskRow.prototype.isValid.call(this)&&!!t.getGridColumns()[this.columnIndex]},fallback:function(){var e=t.$keyboardNavigation.TaskRow.prototype.fallback.call(this),n=e;if(e instanceof t.$keyboardNavigation.TaskRow){for(var i=t.getGridColumns(),r=this.columnIndex;r>=0&&!i[r];)r--;i[r]&&(n=new t.$keyboardNavigation.TaskCell(e.taskId,r))}return n},fromDomElement:function(n){if(!t.config.keyboard_navigation_cells)return null;var i=t.locate(n);if(t.isTaskExists(i)){var r=0,a=e.locateAttribute(n,"data-column-index");return a&&(r=1*a.getAttribute("data-column-index")),new t.$keyboardNavigation.TaskCell(i,r)}return null},getNode:function(){if(t.isTaskExists(this.taskId)&&t.isTaskVisible(this.taskId)){if(t.config.show_grid){var e=t.$grid.querySelector(".gantt_row["+t.config.task_attribute+"='"+this.taskId+"']");return e?e.querySelector("[data-column-index='"+this.columnIndex+"']"):null}return t.getTaskNode(this.taskId)}},keys:{up:function(){var e=null,n=t.getPrev(this.taskId);e=t.isTaskExists(n)?new t.$keyboardNavigation.TaskCell(n,this.columnIndex):new t.$keyboardNavigation.HeaderCell(this.columnIndex),this.moveTo(e)},down:function(){var e=t.getNext(this.taskId);t.isTaskExists(e)&&this.moveTo(new t.$keyboardNavigation.TaskCell(e,this.columnIndex))},left:function(){this.columnIndex>0&&this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,this.columnIndex-1))},right:function(){var e=t.getGridColumns();this.columnIndex<e.length-1&&this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,this.columnIndex+1))},end:function(){var e=t.getGridColumns();this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,e.length-1))},home:function(){this.moveTo(new t.$keyboardNavigation.TaskCell(this.taskId,0))},pagedown:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskCell(t.getTaskByIndex(t.getVisibleTaskCount()-1).id,this.columnIndex))},pageup:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskCell(t.getTaskByIndex(0).id,this.columnIndex))}}}),t.$keyboardNavigation.TaskCell.prototype.bindAll(t.$keyboardNavigation.TaskRow.prototype.keys),t.$keyboardNavigation.TaskCell.prototype.bindAll(t.$keyboardNavigation.TaskCell.prototype.keys)}},function(t,e){t.exports=function(t){t.$keyboardNavigation.TaskRow=function(e){if(!e){var n=t.getChildren(t.config.root_id);n[0]&&(e=n[0])}this.taskId=e,t.isTaskExists(this.taskId)&&(this.index=t.getTaskIndex(this.taskId),this.globalIndex=t.getGlobalTaskIndex(this.taskId))},t.$keyboardNavigation.TaskRow.prototype=t._compose(t.$keyboardNavigation.KeyNavNode,{_handlers:null,isValid:function(){return t.isTaskExists(this.taskId)&&t.getTaskIndex(this.taskId)>-1},fallback:function(){if(!t.getVisibleTaskCount()){var e=new t.$keyboardNavigation.HeaderCell;return e.isValid()?e:null}var n=-1;if(t.getTaskByIndex(this.globalIndex-1))n=this.globalIndex-1;else if(t.getTaskByIndex(this.globalIndex+1))n=this.globalIndex+1;else for(var i=this.globalIndex;i>=0;){if(t.getTaskByIndex(i)){n=i;break}i--}if(n>-1)return new t.$keyboardNavigation.TaskRow(t.getTaskByIndex(n).id)},fromDomElement:function(e){if(t.config.keyboard_navigation_cells)return null;var n=t.locate(e);return t.isTaskExists(n)?new t.$keyboardNavigation.TaskRow(n):null},getNode:function(){if(t.isTaskExists(this.taskId)&&t.isTaskVisible(this.taskId))return t.config.show_grid?t.$grid.querySelector(".gantt_row["+t.config.task_attribute+"='"+this.taskId+"']"):t.getTaskNode(this.taskId)},focus:function(e){if(!e){var n,i,r=t.getTaskPosition(t.getTask(this.taskId)),a=t.getTaskHeight(this.taskId),o=t.getScrollState();n=t.$task?t.$task.offsetWidth:o.inner_width,i=t.$grid_data||t.$task_data?(t.$grid_data||t.$task_data).offsetHeight:o.inner_height,r.top<o.y||r.top+a>o.y+i?t.scrollTo(null,r.top-5*a):t.config.scroll_on_click&&t.config.show_chart&&(r.left>o.x+n?t.scrollTo(r.left-t.config.task_scroll_offset):r.left+r.width<o.x&&t.scrollTo(r.left+r.width-t.config.task_scroll_offset))}t.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this,[e]),function(){var e=t.$ui.getView("grid"),n=parseInt(e.$grid.scrollLeft),i=parseInt(e.$grid_data.scrollTop),r=e.$config.scrollX;if(r&&e.$config.scrollable){var a=t.$ui.getView(r);a&&a.scrollTo(n,i)}var o=e.$config.scrollY;if(o){var s=t.$ui.getView(o);s&&s.scrollTo(n,i)}}()},keys:{pagedown:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskRow(t.getTaskByIndex(t.getVisibleTaskCount()-1).id))},pageup:function(){t.getVisibleTaskCount()&&this.moveTo(new t.$keyboardNavigation.TaskRow(t.getTaskByIndex(0).id))},up:function(){var e=null,n=t.getPrev(this.taskId);e=t.isTaskExists(n)?new t.$keyboardNavigation.TaskRow(n):new t.$keyboardNavigation.HeaderCell,this.moveTo(e)},down:function(){var e=t.getNext(this.taskId);t.isTaskExists(e)&&this.moveTo(new t.$keyboardNavigation.TaskRow(e))},"shift+down":function(){t.hasChild(this.taskId)&&!t.getTask(this.taskId).$open&&t.open(this.taskId)},"shift+up":function(){t.hasChild(this.taskId)&&t.getTask(this.taskId).$open&&t.close(this.taskId)},"shift+right":function(){if(!t.isReadonly(this)){var e=t.getPrevSibling(this.taskId);if(t.isTaskExists(e)&&!t.isChildOf(this.taskId,e))t.getTask(e).$open=!0,!1!==t.moveTask(this.taskId,-1,e)&&t.updateTask(this.taskId)}},"shift+left":function(){if(!t.isReadonly(this)){var e=t.getParent(this.taskId);if(t.isTaskExists(e))!1!==t.moveTask(this.taskId,t.getTaskIndex(e)+1,t.getParent(e))&&t.updateTask(this.taskId)}},space:function(e){t.isSelectedTask(this.taskId)?t.unselectTask(this.taskId):t.selectTask(this.taskId)},"ctrl+left":function(e){t.close(this.taskId)},"ctrl+right":function(e){t.open(this.taskId)},delete:function(e){t.isReadonly(this)||t.$click.buttons.delete(this.taskId)},enter:function(){t.isReadonly(this)||t.showLightbox(this.taskId)},"ctrl+enter":function(){t.isReadonly(this)||t.createTask({},this.taskId)}}}),t.$keyboardNavigation.TaskRow.prototype.bindAll(t.$keyboardNavigation.TaskRow.prototype.keys)}},function(t,e,n){t.exports=function(t){var e=n(1);t.$keyboardNavigation.HeaderCell=function(t){this.index=t||0},t.$keyboardNavigation.HeaderCell.prototype=t._compose(t.$keyboardNavigation.KeyNavNode,{_handlers:null,isValid:function(){return!(!t.config.show_grid&&t.getVisibleTaskCount())&&(!!t.getGridColumns()[this.index]||!t.getVisibleTaskCount())},fallback:function(){if(!t.config.show_grid)return t.getVisibleTaskCount()?new t.$keyboardNavigation.TaskRow:null;for(var e=t.getGridColumns(),n=this.index;n>=0&&!e[n];)n--;return e[n]?new t.$keyboardNavigation.HeaderCell(n):null},fromDomElement:function(n){var i=e.locateClassName(n,"gantt_grid_head_cell");if(i){for(var r=0;i&&i.previousSibling;)i=i.previousSibling,r+=1;return new t.$keyboardNavigation.HeaderCell(r)}return null},getNode:function(){return t.$grid_scale.childNodes[this.index]},keys:{left:function(){this.index>0&&this.moveTo(new t.$keyboardNavigation.HeaderCell(this.index-1))},right:function(){var e=t.getGridColumns();this.index<e.length-1&&this.moveTo(new t.$keyboardNavigation.HeaderCell(this.index+1))},down:function(){var e,n=t.getChildren(t.config.root_id);t.isTaskExists(n[0])&&(e=n[0]),e&&(t.config.keyboard_navigation_cells?this.moveTo(new t.$keyboardNavigation.TaskCell(e,this.index)):this.moveTo(new t.$keyboardNavigation.TaskRow(e)))},end:function(){var e=t.getGridColumns();this.moveTo(new t.$keyboardNavigation.HeaderCell(e.length-1))},home:function(){this.moveTo(new t.$keyboardNavigation.HeaderCell(0))},"enter, space":function(){e.getActiveElement().click()},"ctrl+enter":function(){t.isReadonly(this)||t.createTask({},this.taskId)}}}),t.$keyboardNavigation.HeaderCell.prototype.bindAll(t.$keyboardNavigation.HeaderCell.prototype.keys)}},function(t,e){t.exports=function(t){t.$keyboardNavigation.KeyNavNode=function(){},t.$keyboardNavigation.KeyNavNode.prototype=t._compose(t.$keyboardNavigation.EventHandler,{isValid:function(){return!0},fallback:function(){return null},moveTo:function(e){t.$keyboardNavigation.dispatcher.setActiveNode(e)},compareTo:function(t){if(!t)return!1;for(var e in this){if(!!this[e]!=!!t[e])return!1;var n=!(!this[e]||!this[e].toString),i=!(!t[e]||!t[e].toString);if(i!=n)return!1;if(i&&n){if(t[e].toString()!=this[e].toString())return!1}else if(t[e]!=this[e])return!1}return!0},getNode:function(){},focus:function(){var e=this.getNode();if(e){var n=t.$keyboardNavigation.facade;!1!==n.callEvent("onBeforeFocus",[e])&&e&&(e.setAttribute("tabindex","-1"),e.$eventAttached||(e.$eventAttached=!0,t.event(e,"focus",function(t){return t.preventDefault(),!1},!1)),t.utils.dom.isChildOf(document.activeElement,e)&&(e=document.activeElement),e.focus&&e.focus(),n.callEvent("onFocus",[this.getNode()]))}},blur:function(){var e=this.getNode();e&&(t.$keyboardNavigation.facade.callEvent("onBlur",[e]),e.setAttribute("tabindex","-1"))}})}},function(t,e){t.exports=function(t){t.$keyboardNavigation.GanttNode=function(){},t.$keyboardNavigation.GanttNode.prototype=t._compose(t.$keyboardNavigation.EventHandler,{focus:function(){t.focus()},blur:function(){},isEnabled:function(){return t.$container.hasAttribute("tabindex")},scrollHorizontal:function(e){var n=t.dateFromPos(t.getScrollState().x),i=t.getScale(),r=e<0?-i.step:i.step;n=t.date.add(n,r,i.unit),t.scrollTo(t.posFromDate(n))},scrollVertical:function(e){var n=t.getScrollState().y,i=t.config.row_height;t.scrollTo(null,n+(e<0?-1:1)*i)},keys:{"alt+left":function(t){this.scrollHorizontal(-1)},"alt+right":function(t){this.scrollHorizontal(1)},"alt+up":function(t){this.scrollVertical(-1)},"alt+down":function(t){this.scrollVertical(1)},"ctrl+z":function(){t.undo&&t.undo()},"ctrl+r":function(){t.redo&&t.redo()}}}),t.$keyboardNavigation.GanttNode.prototype.bindAll(t.$keyboardNavigation.GanttNode.prototype.keys)}},function(t,e,n){t.exports=function(t){!function(){var e=n(1);t.$keyboardNavigation.getFocusableNodes=e.getFocusableNodes,t.$keyboardNavigation.trapFocus=function(n,i){if(9!=i.keyCode)return!1;for(var r=t.$keyboardNavigation.getFocusableNodes(n),a=e.getActiveElement(),o=-1,s=0;s<r.length;s++)if(r[s]==a){o=s;break}if(i.shiftKey){if(o<=0){var l=r[r.length-1];if(l)return l.focus(),i.preventDefault(),!0}}else if(o>=r.length-1){var c=r[0];if(c)return c.focus(),i.preventDefault(),!0}return!1}}()}},function(t,e){t.exports=function(t){t.$keyboardNavigation.EventHandler={_handlers:null,findHandler:function(e){this._handlers||(this._handlers={});var n=t.$keyboardNavigation.shortcuts.getHash(e);return this._handlers[n]},doAction:function(e,n){var i=this.findHandler(e);if(i){if(!1===t.$keyboardNavigation.facade.callEvent("onBeforeAction",[e,n]))return;i.call(this,n),n.preventDefault?n.preventDefault():n.returnValue=!1}},bind:function(e,n){this._handlers||(this._handlers={});for(var i=t.$keyboardNavigation.shortcuts,r=i.parse(e),a=0;a<r.length;a++)this._handlers[i.getHash(r[a])]=n},unbind:function(e){for(var n=t.$keyboardNavigation.shortcuts,i=n.parse(e),r=0;r<i.length;r++)this._handlers[n.getHash(i[r])]&&delete this._handlers[n.getHash(i[r])]},bindAll:function(t){for(var e in t)this.bind(e,t[e])},initKeys:function(){this._handlers||(this._handlers={}),this.keys&&this.bindAll(this.keys)}}}},function(t,e){t.exports=function(t){t.$keyboardNavigation.shortcuts={createCommand:function(){return{modifiers:{shift:!1,alt:!1,ctrl:!1,meta:!1},keyCode:null}},parse:function(t){for(var e=[],n=this.getExpressions(this.trim(t)),i=0;i<n.length;i++){for(var r=this.getWords(n[i]),a=this.createCommand(),o=0;o<r.length;o++)this.commandKeys[r[o]]?a.modifiers[r[o]]=!0:this.specialKeys[r[o]]?a.keyCode=this.specialKeys[r[o]]:a.keyCode=r[o].charCodeAt(0);e.push(a)}return e},getCommandFromEvent:function(t){var e=this.createCommand();e.modifiers.shift=!!t.shiftKey,e.modifiers.alt=!!t.altKey,e.modifiers.ctrl=!!t.ctrlKey,e.modifiers.meta=!!t.metaKey,e.keyCode=t.which||t.keyCode,e.keyCode>=96&&e.keyCode<=105&&(e.keyCode-=48);var n=String.fromCharCode(e.keyCode);return n&&(e.keyCode=n.toLowerCase().charCodeAt(0)),e},getHashFromEvent:function(t){return this.getHash(this.getCommandFromEvent(t))},getHash:function(t){var e=[];for(var n in t.modifiers)t.modifiers[n]&&e.push(n);return e.push(t.keyCode),e.join(this.junctionChar)},getExpressions:function(t){return t.split(this.junctionChar)},getWords:function(t){return t.split(this.combinationChar)},trim:function(t){return t.replace(/\s/g,"")},junctionChar:",",combinationChar:"+",commandKeys:{shift:16,alt:18,ctrl:17,meta:!0},specialKeys:{backspace:8,tab:9,enter:13,esc:27,space:32,up:38,down:40,left:37,right:39,home:36,end:35,pageup:33,pagedown:34,delete:46,insert:45,plus:107,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123}}}},function(t,e,n){t.exports=function(t){var e=n(5);!function(t){t.config.keyboard_navigation=!0,t.config.keyboard_navigation_cells=!1,t.$keyboardNavigation={},t._compose=function(){for(var t=Array.prototype.slice.call(arguments,0),e={},n=0;n<t.length;n++){var i=t[n];for(var r in"function"==typeof i&&(i=new i),i)e[r]=i[r]}return e},n(270)(t),n(269)(t),n(268)(t),n(267)(t),n(266)(t),n(265)(t),n(264)(t),n(263)(t),n(262)(t),n(261)(t);var i=n(1);!function(){var n=t.$keyboardNavigation.dispatcher;n.isTaskFocused=function(e){var i=n.activeNode;return(i instanceof t.$keyboardNavigation.TaskRow||i instanceof t.$keyboardNavigation.TaskCell)&&i.taskId==e};var r=function(e){if(t.config.keyboard_navigation&&(t.config.keyboard_navigation_cells||!s(e))&&!l(e)&&!function(t){return!!i.closest(t.target,".gantt_cal_light")}(e))return n.keyDownHandler(e)},a=function(e){if(n.$preventDefault)return e.preventDefault(),t.$container.blur(),!1;n.awaitsFocus()||n.focusGlobalNode()},o=function(){if(n.isEnabled()){var e=!i.isChildOf(document.activeElement,t.$container)&&"body"!=document.activeElement.localName,r=n.getActiveNode();if(r&&!e){var a,o,s=r.getNode();s&&s.parentNode&&(a=s.parentNode.scrollTop,o=s.parentNode.scrollLeft),r.focus(!0),s&&s.parentNode&&(s.parentNode.scrollTop=a,s.parentNode.scrollLeft=o)}}};function s(t){return!!i.closest(t.target,".gantt_grid_editor_placeholder")}function l(t){return!!i.closest(t.target,".no_keyboard_navigation")}function c(e){if(!t.config.keyboard_navigation)return!0;if(!t.config.keyboard_navigation_cells&&s(e))return!0;if(!l(e)){var r,a=n.fromDomElement(e);a&&(n.activeNode instanceof t.$keyboardNavigation.TaskCell&&i.isChildOf(e.target,t.$task)&&(a=new t.$keyboardNavigation.TaskCell(a.taskId,n.activeNode.columnIndex)),r=a),r?n.isEnabled()?n.delay(function(){n.setActiveNode(r)}):n.activeNode=r:(n.$preventDefault=!0,setTimeout(function(){n.$preventDefault=!1},300))}}t.attachEvent("onDataRender",function(){t.config.keyboard_navigation&&o()}),t.attachEvent("onGanttRender",function(){t.eventRemove(t.$root,"keydown",r),t.eventRemove(t.$container,"focus",a),t.eventRemove(t.$container,"mousedown",c),t.config.keyboard_navigation?(t.event(t.$root,"keydown",r),t.event(t.$container,"focus",a),t.event(t.$container,"mousedown",c),t.$container.setAttribute("tabindex","0")):t.$container.removeAttribute("tabindex")});var u=t.attachEvent("onGanttReady",function(){if(t.detachEvent(u),t.$data.tasksStore.attachEvent("onStoreUpdated",function(e){if(t.config.keyboard_navigation&&n.isEnabled()){var i=n.getActiveNode();i&&i.taskId==e&&o()}}),t._smart_render){var e=t._smart_render._redrawTasks;t._smart_render._redrawTasks=function(i,r){if(t.config.keyboard_navigation&&n.isEnabled()){var a=n.getActiveNode();if(a&&void 0!==a.taskId){for(var o=!1,s=0;s<r.length;s++)if(r[s].id==a.taskId&&r[s].start_date){o=!0;break}o||r.push(t.getTask(a.taskId))}}return e.apply(this,arguments)}}}),d=null,h=!1;t.attachEvent("onTaskCreated",function(t){return d=t.id,!0}),t.attachEvent("onAfterTaskAdd",function(e,i){if(!t.config.keyboard_navigation)return!0;if(n.isEnabled()){if(e==d&&(h=!0,setTimeout(function(){h=!1,d=null})),h&&i.type==t.config.types.placeholder)return;var r=0,a=n.activeNode;a instanceof t.$keyboardNavigation.TaskCell&&(r=a.columnIndex);var o=t.config.keyboard_navigation_cells?t.$keyboardNavigation.TaskCell:t.$keyboardNavigation.TaskRow;i.type==t.config.types.placeholder&&!1===t.config.placeholder_task.focusOnCreate||n.setActiveNode(new o(e,r))}}),t.attachEvent("onTaskIdChange",function(e,i){if(!t.config.keyboard_navigation)return!0;var r=n.activeNode;return n.isTaskFocused(e)&&(r.taskId=i),!0});var f=setInterval(function(){t.config.keyboard_navigation&&(n.isEnabled()||n.enable())},500);function _(e){var n={gantt:t.$keyboardNavigation.GanttNode,headerCell:t.$keyboardNavigation.HeaderCell,taskRow:t.$keyboardNavigation.TaskRow,taskCell:t.$keyboardNavigation.TaskCell};return n[e]||n.gantt}function g(e){for(var n=t.getGridColumns(),i=0;i<n.length;i++)if(n[i].name==e)return i;return 0}t.attachEvent("onDestroy",function(){clearInterval(f)});var p={};e(p),t.mixin(p,{addShortcut:function(t,e,n){var i=_(n);i&&i.prototype.bind(t,e)},getShortcutHandler:function(e,n){var i=t.$keyboardNavigation.shortcuts.parse(e);if(i.length)return p.getCommandHandler(i[0],n)},getCommandHandler:function(t,e){var n=_(e);if(n&&t)return n.prototype.findHandler(t)},removeShortcut:function(t,e){var n=_(e);n&&n.prototype.unbind(t)},focus:function(t){var e,i=t?t.type:null,r=_(i);switch(i){case"taskCell":e=new r(t.id,g(t.column));break;case"taskRow":e=new r(t.id);break;case"headerCell":e=new r(g(t.column))}n.delay(function(){e?n.setActiveNode(e):(n.enable(),n.getActiveNode()?n.awaitsFocus()||n.enable():n.setDefaultNode())})},getActiveNode:function(){if(n.isEnabled()){var e=n.getActiveNode(),i=function(e){return e instanceof t.$keyboardNavigation.GanttNode?"gantt":e instanceof t.$keyboardNavigation.HeaderCell?"headerCell":e instanceof t.$keyboardNavigation.TaskRow?"taskRow":e instanceof t.$keyboardNavigation.TaskCell?"taskCell":null}(e),r=t.getGridColumns();switch(i){case"taskCell":return{type:"taskCell",id:e.taskId,column:r[e.columnIndex].name};case"taskRow":return{type:"taskRow",id:e.taskId};case"headerCell":return{type:"headerCell",column:r[e.index].name}}}return null}}),t.$keyboardNavigation.facade=p,t.ext.keyboardNavigation=p,t.focus=function(){p.focus()},t.addShortcut=p.addShortcut,t.getShortcutHandler=p.getShortcutHandler,t.removeShortcut=p.removeShortcut}()}(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(){var t=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;return!(!t||t!==document.body)}function n(){try{return document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled}catch(t){console.error("Fullscreen is not available:",t)}}t.$services.getService("state").registerProvider("fullscreen",function(){return n()?{fullscreen:e()}:void 0});var i={overflow:null,padding:null,paddingTop:null,paddingRight:null,paddingBottom:null,paddingLeft:null},r={width:null,height:null,top:null,left:null,position:null,zIndex:null,modified:!1},a=null;function o(t,e){e.width=t.width,e.height=t.height,e.top=t.top,e.left=t.left,e.position=t.position,e.zIndex=t.zIndex}var s=!1;function l(){var n;t.$container&&(e()?s&&(n="onExpand",function(){var e=t.ext.fullscreen.getFullscreenElement(),n=document.body;o(e.style,r),i={overflow:n.style.overflow,padding:n.style.padding?n.style.padding:null,paddingTop:n.style.paddingTop?n.style.paddingTop:null,paddingRight:n.style.paddingRight?n.style.paddingRight:null,paddingBottom:n.style.paddingBottom?n.style.paddingBottom:null,paddingLeft:n.style.paddingLeft?n.style.paddingLeft:null},n.style.padding&&(n.style.padding="0"),n.style.paddingTop&&(n.style.paddingTop="0"),n.style.paddingRight&&(n.style.paddingRight="0"),n.style.paddingBottom&&(n.style.paddingBottom="0"),n.style.paddingLeft&&(n.style.paddingLeft="0"),n.style.overflow="hidden",e.style.width="100vw",e.style.height="100vh",e.style.top="0px",e.style.left="0px",e.style.position="absolute",e.style.zIndex=1,r.modified=!0,a=function(t){for(var e=t.parentNode,n=[];e&&e.style;)n.push({element:e,originalPositioning:e.style.position}),e.style.position="static",e=e.parentNode;return n}(e)}()):s&&(s=!1,n="onCollapse",function(){var e=t.ext.fullscreen.getFullscreenElement(),n=document.body;r.modified&&(i.padding&&(n.style.padding=i.padding),i.paddingTop&&(n.style.paddingTop=i.paddingTop),i.paddingRight&&(n.style.paddingRight=i.paddingRight),i.paddingBottom&&(n.style.paddingBottom=i.paddingBottom),i.paddingLeft&&(n.style.paddingLeft=i.paddingLeft),n.style.overflow=i.overflow,i={overflow:null,padding:null,paddingTop:null,paddingRight:null,paddingBottom:null,paddingLeft:null},o(r,e.style),r.modified=!1),function(t){t.forEach(function(t){t.element.style.position=t.originalPositioning})}(a),a=null}()),setTimeout(function(){t.render()}),setTimeout(function(){t.callEvent(n,[t.ext.fullscreen.getFullscreenElement()])}))}function c(){return!t.$container||!t.ext.fullscreen.getFullscreenElement()||!n()&&((console.warning||console.log)("The `fullscreen` feature not being allowed, or full-screen mode not being supported"),!0)}t.ext.fullscreen={expand:function(){if(!c()&&!e()&&t.callEvent("onBeforeExpand",[this.getFullscreenElement()])){s=!0;var n=document.body,i=n.webkitRequestFullscreen?[Element.ALLOW_KEYBOARD_INPUT]:[],r=n.msRequestFullscreen||n.mozRequestFullScreen||n.webkitRequestFullscreen||n.requestFullscreen;r&&r.apply(n,i)}},collapse:function(){if(!c()&&e()&&t.callEvent("onBeforeCollapse",[this.getFullscreenElement()])){var n=document.msExitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen||document.exitFullscreen;n&&n.apply(document)}},toggle:function(){c()||(e()?this.collapse():this.expand())},getFullscreenElement:function(){return t.$root}},t.expand=function(){t.ext.fullscreen.expand()},t.collapse=function(){t.ext.fullscreen.collapse()},t.attachEvent("onGanttReady",function(){t.event(document,"webkitfullscreenchange",l),t.event(document,"mozfullscreenchange",l),t.event(document,"MSFullscreenChange",l),t.event(document,"fullscreenChange",l),t.event(document,"fullscreenchange",l)})}},function(t,e,n){"use strict";function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(t){switch(i(t)){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,l){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"===i(t)?o(s(t),function(i){var s=encodeURIComponent(r(i))+n;return a(t[i])?o(t[i],function(t){return s+encodeURIComponent(r(t))}).join(e):s+encodeURIComponent(r(t[i]))}).join(e):l?encodeURIComponent(r(l))+n+encodeURIComponent(r(t)):""};var a=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,e){if(t.map)return t.map(e);for(var n=[],i=0;i<t.length;i++)n.push(e(t[i],i));return n}var s=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,a){e=e||"&",n=n||"=";var o={};if("string"!=typeof t||0===t.length)return o;var s=/\+/g;t=t.split(e);var l=1e3;a&&"number"==typeof a.maxKeys&&(l=a.maxKeys);var c=t.length;l>0&&c>l&&(c=l);for(var u=0;u<c;++u){var d,h,f,_,g=t[u].replace(s,"%20"),p=g.indexOf(n);p>=0?(d=g.substr(0,p),h=g.substr(p+1)):(d=g,h=""),f=decodeURIComponent(d),_=decodeURIComponent(h),i(o,f)?r(o[f])?o[f].push(_):o[f]=[o[f],_]:o[f]=_}return o};var r=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";e.decode=e.parse=n(274),e.encode=e.stringify=n(273)},function(t,e,n){"use strict";function i(t){"@babel/helpers - typeof";return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"===i(t)&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){(function(t,i){var r;function a(t){"@babel/helpers - typeof";return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)} /*! https://mths.be/punycode v1.4.1 by @mathias */!function(o){var s="object"==a(e)&&e&&!e.nodeType&&e,l="object"==a(t)&&t&&!t.nodeType&&t,c="object"==(void 0===i?"undefined":a(i))&&i;c.global!==c&&c.window!==c&&c.self!==c||(o=c);var u,d,h=2147483647,f=36,_=1,g=26,p=38,v=700,m=72,y=128,k="-",b=/^xn--/,x=/[^\x20-\x7E]/,w=/[\x2E\u3002\uFF0E\uFF61]/g,S={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},T=f-_,$=Math.floor,C=String.fromCharCode;function E(t){throw new RangeError(S[t])}function A(t,e){for(var n=t.length,i=[];n--;)i[n]=e(t[n]);return i}function D(t,e){var n=t.split("@"),i="";return n.length>1&&(i=n[0]+"@",t=n[1]),i+A((t=t.replace(w,".")).split("."),e).join(".")}function M(t){for(var e,n,i=[],r=0,a=t.length;r<a;)(e=t.charCodeAt(r++))>=55296&&e<=56319&&r<a?56320==(64512&(n=t.charCodeAt(r++)))?i.push(((1023&e)<<10)+(1023&n)+65536):(i.push(e),r--):i.push(e);return i}function I(t){return A(t,function(t){var e="";return t>65535&&(e+=C((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=C(t)}).join("")}function P(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:f}function N(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function O(t,e,n){var i=0;for(t=n?$(t/v):t>>1,t+=$(t/e);t>T*g>>1;i+=f)t=$(t/T);return $(i+(T+1)*t/(t+p))}function L(t){var e,n,i,r,a,o,s,l,c,u,d=[],p=t.length,v=0,b=y,x=m;for((n=t.lastIndexOf(k))<0&&(n=0),i=0;i<n;++i)t.charCodeAt(i)>=128&&E("not-basic"),d.push(t.charCodeAt(i));for(r=n>0?n+1:0;r<p;){for(a=v,o=1,s=f;r>=p&&E("invalid-input"),((l=P(t.charCodeAt(r++)))>=f||l>$((h-v)/o))&&E("overflow"),v+=l*o,!(l<(c=s<=x?_:s>=x+g?g:s-x));s+=f)o>$(h/(u=f-c))&&E("overflow"),o*=u;x=O(v-a,e=d.length+1,0==a),$(v/e)>h-b&&E("overflow"),b+=$(v/e),v%=e,d.splice(v++,0,b)}return I(d)}function R(t){var e,n,i,r,a,o,s,l,c,u,d,p,v,b,x,w=[];for(p=(t=M(t)).length,e=y,n=0,a=m,o=0;o<p;++o)(d=t[o])<128&&w.push(C(d));for(i=r=w.length,r&&w.push(k);i<p;){for(s=h,o=0;o<p;++o)(d=t[o])>=e&&d<s&&(s=d);for(s-e>$((h-n)/(v=i+1))&&E("overflow"),n+=(s-e)*v,e=s,o=0;o<p;++o)if((d=t[o])<e&&++n>h&&E("overflow"),d==e){for(l=n,c=f;!(l<(u=c<=a?_:c>=a+g?g:c-a));c+=f)x=l-u,b=f-u,w.push(C(N(u+x%b,0))),l=$(x/b);w.push(C(N(l,0))),a=O(n,v,i==r),n=0,++i}++n,++e}return w.join("")}if(u={version:"1.4.1",ucs2:{decode:M,encode:I},decode:L,encode:R,toASCII:function(t){return D(t,function(t){return x.test(t)?"xn--"+R(t):t})},toUnicode:function(t){return D(t,function(t){return b.test(t)?L(t.slice(4).toLowerCase()):t})}},"object"==a(n(53))&&n(53))void 0===(r=function(){return u}.call(e,n,e,t))||(t.exports=r);else if(s&&l)if(t.exports==s)l.exports=u;else for(d in u)u.hasOwnProperty(d)&&(s[d]=u[d]);else o.punycode=u}(this)}).call(this,n(277)(t),n(4))},function(t,e){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},function(t,e){t.exports=function(){for(var t={},e=0;e<arguments.length;e++){var i=arguments[e];for(var r in i)n.call(i,r)&&(t[r]=i[r])}return t};var n=Object.prototype.hasOwnProperty},function(t,e,n){var i=n(13).Buffer;t.exports=function(t){if(t instanceof Uint8Array){if(0===t.byteOffset&&t.byteLength===t.buffer.byteLength)return t.buffer;if("function"==typeof t.buffer.slice)return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(i.isBuffer(t)){for(var e=new Uint8Array(t.length),n=t.length,r=0;r<n;r++)e[r]=t[r];return e.buffer}throw new Error("Argument must be a Buffer")}},function(t,e,n){"use strict";t.exports=a;var i=n(55),r=n(17);function a(t){if(!(this instanceof a))return new a(t);i.call(this,t)}r.inherits=n(8),r.inherits(a,i),a.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){(function(e){function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=function(t,e){if(n("noDeprecation"))return t;var i=!1;return function(){if(!i){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}}}).call(this,n(4))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var i,r=1,a={},o=!1,s=t.document,l=Object.getPrototypeOf&&Object.getPrototypeOf(t);l=l&&l.setTimeout?l:t,"[object process]"==={}.toString.call(t.process)?i=function(t){e.nextTick(function(){u(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&u(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),i=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){u(t.data)},i=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;i=function(e){var n=s.createElement("script");n.onreadystatechange=function(){u(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():i=function(t){setTimeout(u,0,t)},l.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return a[r]=o,i(r),r++},l.clearImmediate=c}function c(t){delete a[t]}function u(t){if(o)setTimeout(u,0,t);else{var e=a[t];if(e){o=!0;try{!function(t){var e=t.callback,i=t.args;switch(i.length){case 0:e();break;case 1:e(i[0]);break;case 2:e(i[0],i[1]);break;case 3:e(i[0],i[1],i[2]);break;default:e.apply(n,i)}}(e)}finally{c(t),o=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(4),n(9))},function(t,e){},function(t,e,n){"use strict";var i=n(22).Buffer,r=n(285);function a(t,e,n){t.copy(e,n)}t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e=i.allocUnsafe(t>>>0),n=this.head,r=0;n;)a(n.data,e,r),r+=n.data.length,n=n.next;return e},t}(),r&&r.inspect&&r.inspect.custom&&(t.exports.prototype[r.inspect.custom]=function(){var t=r.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,n){(function(e,i,r){var a=n(65),o=n(8),s=n(64),l=n(63),c=n(281),u=s.IncomingMessage,d=s.readyStates;var h=t.exports=function(t){var n,i=this;l.Writable.call(i),i._opts=t,i._body=[],i._headers={},t.auth&&i.setHeader("Authorization","Basic "+new e(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){i.setHeader(e,t.headers[e])});var r=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!a.abortController)r=!1,n=!0;else if("prefer-streaming"===t.mode)n=!1;else if("allow-wrong-content-type"===t.mode)n=!a.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");n=!0}i._mode=function(t,e){return a.fetch&&e?"fetch":a.mozchunkedarraybuffer?"moz-chunked-arraybuffer":a.msstream?"ms-stream":a.arraybuffer&&t?"arraybuffer":a.vbArray&&t?"text:vbarray":"text"}(n,r),i._fetchTimer=null,i.on("finish",function(){i._onFinish()})};o(h,l.Writable),h.prototype.setHeader=function(t,e){var n=t.toLowerCase();-1===f.indexOf(n)&&(this._headers[n]={name:t,value:e})},h.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},h.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},h.prototype._onFinish=function(){var t=this;if(!t._destroyed){var n=t._opts,o=t._headers,s=null;"GET"!==n.method&&"HEAD"!==n.method&&(s=a.arraybuffer?c(e.concat(t._body)):a.blobConstructor?new i.Blob(t._body.map(function(t){return c(t)}),{type:(o["content-type"]||{}).value||""}):e.concat(t._body).toString());var l=[];if(Object.keys(o).forEach(function(t){var e=o[t].name,n=o[t].value;Array.isArray(n)?n.forEach(function(t){l.push([e,t])}):l.push([e,n])}),"fetch"===t._mode){var u=null;if(a.abortController){var h=new AbortController;u=h.signal,t._fetchAbortController=h,"requestTimeout"in n&&0!==n.requestTimeout&&(t._fetchTimer=i.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},n.requestTimeout))}i.fetch(t._opts.url,{method:t._opts.method,headers:l,body:s||void 0,mode:"cors",credentials:n.withCredentials?"include":"same-origin",signal:u}).then(function(e){t._fetchResponse=e,t._connect()},function(e){i.clearTimeout(t._fetchTimer),t._destroyed||t.emit("error",e)})}else{var f=t._xhr=new i.XMLHttpRequest;try{f.open(t._opts.method,t._opts.url,!0)}catch(e){return void r.nextTick(function(){t.emit("error",e)})}"responseType"in f&&(f.responseType=t._mode.split(":")[0]),"withCredentials"in f&&(f.withCredentials=!!n.withCredentials),"text"===t._mode&&"overrideMimeType"in f&&f.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in n&&(f.timeout=n.requestTimeout,f.ontimeout=function(){t.emit("requestTimeout")}),l.forEach(function(t){f.setRequestHeader(t[0],t[1])}),t._response=null,f.onreadystatechange=function(){switch(f.readyState){case d.LOADING:case d.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(f.onprogress=function(){t._onXHRProgress()}),f.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{f.send(s)}catch(e){return void r.nextTick(function(){t.emit("error",e)})}}}},h.prototype._onXHRProgress=function(){(function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}})(this._xhr)&&!this._destroyed&&(this._response||this._connect(),this._response._onXHRProgress())},h.prototype._connect=function(){var t=this;t._destroyed||(t._response=new u(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},h.prototype._write=function(t,e,n){this._body.push(t),n()},h.prototype.abort=h.prototype.destroy=function(){this._destroyed=!0,i.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},h.prototype.end=function(t,e,n){"function"==typeof t&&(n=t,t=void 0),l.Writable.prototype.end.call(this,t,e,n)},h.prototype.flushHeaders=function(){},h.prototype.setTimeout=function(){},h.prototype.setNoDelay=function(){},h.prototype.setSocketKeepAlive=function(){};var f=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}).call(this,n(13).Buffer,n(4),n(9))},function(t,e,n){var i=n(66),r=n(54),a=t.exports;for(var o in i)i.hasOwnProperty(o)&&(a[o]=i[o]);function s(t){if("string"==typeof t&&(t=r.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}a.request=function(t,e){return t=s(t),i.request.call(this,t,e)},a.get=function(t,e){return t=s(t),i.get.call(this,t,e)}},function(t,e){e.read=function(t,e,n,i,r){var a,o,s=8*r-i-1,l=(1<<s)-1,c=l>>1,u=-7,d=n?r-1:0,h=n?-1:1,f=t[e+d];for(d+=h,a=f&(1<<-u)-1,f>>=-u,u+=s;u>0;a=256*a+t[e+d],d+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=i;u>0;o=256*o+t[e+d],d+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,i),a-=c}return(f?-1:1)*o*Math.pow(2,a-i)},e.write=function(t,e,n,i,r,a){var o,s,l,c=8*a-r-1,u=(1<<c)-1,d=u>>1,h=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:a-1,_=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+d>=1?h/l:h*Math.pow(2,1-d))*l>=2&&(o++,l/=2),o+d>=u?(s=0,o=u):o+d>=1?(s=(e*l-1)*Math.pow(2,r),o+=d):(s=e*Math.pow(2,d-1)*Math.pow(2,r),o=0));r>=8;t[n+f]=255&s,f+=_,s/=256,r-=8);for(o=o<<r|s,c+=r;c>0;t[n+f]=255&o,f+=_,o/=256,c-=8);t[n+f-_]|=128*g}},function(t,e,n){"use strict";e.byteLength=function(t){var e=c(t),n=e[0],i=e[1];return 3*(n+i)/4-i},e.toByteArray=function(t){for(var e,n=c(t),i=n[0],o=n[1],s=new a(function(t,e,n){return 3*(e+n)/4-n}(0,i,o)),l=0,u=o>0?i-4:i,d=0;d<u;d+=4)e=r[t.charCodeAt(d)]<<18|r[t.charCodeAt(d+1)]<<12|r[t.charCodeAt(d+2)]<<6|r[t.charCodeAt(d+3)],s[l++]=e>>16&255,s[l++]=e>>8&255,s[l++]=255&e;2===o&&(e=r[t.charCodeAt(d)]<<2|r[t.charCodeAt(d+1)]>>4,s[l++]=255&e);1===o&&(e=r[t.charCodeAt(d)]<<10|r[t.charCodeAt(d+1)]<<4|r[t.charCodeAt(d+2)]>>2,s[l++]=e>>8&255,s[l++]=255&e);return s},e.fromByteArray=function(t){for(var e,n=t.length,r=n%3,a=[],o=0,s=n-r;o<s;o+=16383)a.push(d(t,o,o+16383>s?s:o+16383));1===r?(e=t[n-1],a.push(i[e>>2]+i[e<<4&63]+"==")):2===r&&(e=(t[n-2]<<8)+t[n-1],a.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+"="));return a.join("")};for(var i=[],r=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=o.length;s<l;++s)i[s]=o[s],r[o.charCodeAt(s)]=s;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function u(t){return i[t>>18&63]+i[t>>12&63]+i[t>>6&63]+i[63&t]}function d(t,e,n){for(var i,r=[],a=e;a<n;a+=3)i=(t[a]<<16&16711680)+(t[a+1]<<8&65280)+(255&t[a+2]),r.push(u(i));return r.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){e.ext=e.ext||{},e.ext.export_api=e.ext.export_api||{_apiUrl:"https://export.dhtmlx.com/gantt",getNodeJSTransport:function(t){var e,i,r=t.split("://")[0];switch(r){case"https":e=n(289),i=443;break;case"http":e=n(66),i=80;break;default:throw new Error("Unsupported protocol: "+r+", url: "+t)}return{module:e,defaultPort:i}},_prepareConfigPDF:function(t,n){if(t&&t.raw){var i=null;t.start&&t.end&&(i={start_date:e.config.start_date,end_date:e.config.end_date},e.config.start_date=e.date.str_to_date(e.config.date_format)(t.start),e.config.end_date=e.date.str_to_date(e.config.date_format)(t.end)),t=e.mixin(t,{name:"gantt."+n,data:e.ext.export_api._serializeHtml()}),i&&(e.config.start_date=i.start_date,e.config.end_date=i.end_date)}else t=e.mixin(t||{},{name:"gantt."+n,data:e.ext.export_api._serializeAll(),config:e.config}),e.ext.export_api._fixColumns(t.config.columns);t.version=e.version,e.ext.export_api._sendToExport(t,n)},exportToPDF:function(t){e.ext.export_api._prepareConfigPDF(t,"pdf")},exportToPNG:function(t){e.ext.export_api._prepareConfigPDF(t,"png")},exportToICal:function(t){t=e.mixin(t||{},{name:"gantt.ical",data:e.ext.export_api._serializePlain().data,version:e.version}),e.ext.export_api._sendToExport(t,"ical")},exportToExcel:function(t){var n,i,r,a;t=t||{};var o=e.config.smart_rendering;if("base-colors"===t.visual&&(e.config.smart_rendering=!1),t.start||t.end){r=e.getState(),i=[e.config.start_date,e.config.end_date],a=e.getScrollState();var s=e.date.str_to_date(e.config.date_format);n=e.eachTask,t.start&&(e.config.start_date=s(t.start)),t.end&&(e.config.end_date=s(t.end)),e.render(),e.config.smart_rendering=o,e.eachTask=e.ext.export_api._eachTaskTimed(e.config.start_date,e.config.end_date)}else"base-colors"===t.visual&&(e.render(),e.config.smart_rendering=o);e._no_progress_colors="base-colors"===t.visual;var l=null;e.env.isNode||(l=e.ext.export_api._serializeTable(t).data),(t=e.mixin(t,{name:"gantt.xlsx",title:"Tasks",data:l,columns:e.ext.export_api._serializeColumns({rawDates:!0}),version:e.version})).visual&&(t.scales=e.ext.export_api._serializeScales(t)),e.ext.export_api._sendToExport(t,"excel"),(t.start||t.end)&&(e.config.start_date=r.min_date,e.config.end_date=r.max_date,e.eachTask=n,e.render(),e.scrollTo(a.x,a.y),e.config.start_date=i[0],e.config.end_date=i[1])},exportToJSON:function(t){t=e.mixin(t||{},{name:"gantt.json",data:e.ext.export_api._serializeAll(),config:e.config,columns:e.ext.export_api._serializeColumns(),worktime:e.ext.export_api._getWorktimeSettings(),version:e.version}),e.ext.export_api._sendToExport(t,"json")},importFromExcel:function(t){try{var n=t.data;if(n instanceof FormData);else if(n instanceof File){var i=new FormData;i.append("file",n),t.data=i}}catch(t){}e.env.isNode?e.ext.export_api._nodejsImportExcel(t):e.ext.export_api._sendImportAjaxExcel(t)},importFromMSProject:function(t){var n=t.data;try{if(n instanceof FormData);else if(n instanceof File){var i=new FormData;i.append("file",n),t.data=i}}catch(t){}e.env.isNode?e.ext.export_api._nodejsImportMSP(t):e.ext.export_api._sendImportAjaxMSP(t)},importFromPrimaveraP6:function(t){return t.type="primaveraP6-parse",e.importFromMSProject(t)},exportToMSProject:function(t){(t=t||{}).skip_circular_links=void 0===t.skip_circular_links||!!t.skip_circular_links;var n=e.templates.xml_format,i=e.templates.format_date,r=e.config.xml_date,a=e.config.date_format;e.config.xml_date="%d-%m-%Y %H:%i:%s",e.config.date_format="%d-%m-%Y %H:%i:%s",e.templates.xml_format=e.date.date_to_str("%d-%m-%Y %H:%i:%s"),e.templates.format_date=e.date.date_to_str("%d-%m-%Y %H:%i:%s");var o=e.ext.export_api._serializeAll();e.ext.export_api._customProjectProperties(o,t),e.ext.export_api._customTaskProperties(o,t),t.skip_circular_links&&e.ext.export_api._clearRecLinks(o),t=e.ext.export_api._exportConfig(o,t),e.ext.export_api._sendToExport(t,t.type||"msproject"),e.config.xml_date=r,e.config.date_format=a,e.templates.xml_format=n,e.templates.format_date=i,e.config.$custom_data=null,e.config.custom=null},exportToPrimaveraP6:function(t){return(t=t||{}).type="primaveraP6",e.exportToMSProject(t)},_nodejsImportExcel:function(t){var i=n(52),r=t.server||e.ext.export_api._apiUrl,a=e.ext.export_api.getNodeJSTransport(r),o=r.split("://")[1],s=o.split("/")[0].split(":"),l=o.split("/"),c={hostname:s[0],port:s[1]||a.defaultPort,path:"/"+l.slice(1).join("/"),method:"POST",headers:{"X-Requested-With":"XMLHttpRequest"}},u=new i;u.append("file",t.data),u.append("type","excel-parse"),u.append("data",JSON.stringify({sheet:t.sheet||0})),c.headers["Content-Type"]=u.getHeaders()["content-type"];var d=a.module.request(c,function(e){var n="";e.on("data",function(t){n+=t}),e.on("end",function(e){t.callback(n.toString())})});d.on("error",function(t){console.error(t)}),u.pipe(d)},_nodejsImportMSP:function(t){var i=n(52),r=t.server||e.ext.export_api._apiUrl,a=e.ext.export_api.getNodeJSTransport(r),o=r.split("://")[1],s=o.split("/")[0].split(":"),l=o.split("/"),c={hostname:s[0],port:s[1]||a.defaultPort,path:"/"+l.slice(1).join("/"),method:"POST",headers:{"X-Requested-With":"XMLHttpRequest"}},u={durationUnit:t.durationUnit||void 0,projectProperties:t.projectProperties||void 0,taskProperties:t.taskProperties||void 0},d=new i;d.append("file",t.data),d.append("type",t.type||"msproject-parse"),d.append("data",JSON.stringify(u),c),c.headers["Content-Type"]=d.getHeaders()["content-type"];var h=a.module.request(c,function(e){var n="";e.on("data",function(t){n+=t}),e.on("end",function(e){t.callback(n.toString())})});h.on("error",function(t){console.error(t)}),d.pipe(h)},_fixColumns:function(t){for(var n=0;n<t.length;n++)t[n].label=t[n].label||e.locale.labels["column_"+t[n].name],"string"==typeof t[n].width&&(t[n].width=1*t[n].width)},_xdr:function(t,n,i){e.env.isNode?e.ext.export_api._nodejsPostRequest(t,n,i):e.ajax.post(t,n,i)},_nodejsPostRequest:function(n,i,r){var a=e.ext.export_api.getNodeJSTransport(n),o=n.split("://")[1],s=o.split("/")[0].split(":"),l=o.split("/"),c={hostname:s[0],port:s[1]||a.defaultPort,path:"/"+l.slice(1).join("/"),method:"POST",headers:{"Content-Type":"application/json","Content-Length":JSON.stringify(i).length}},u=a.module.request(c,function(e){var n=[];e.on("data",function(t){n.push(t)}),e.on("end",function(e){r(t.concat(n))})});u.on("error",function(t){console.error(t)}),u.write(JSON.stringify(i)),u.end()},_markColumns:function(t){var e=t.config.columns;if(e)for(var n=0;n<e.length;n++)e[n].template&&(e[n].$template=!0)},_sendImportAjaxExcel:function(t){var n=t.server||e.ext.export_api._apiUrl,i=t.store||0,r=t.data,a=t.callback;r.append("type","excel-parse"),r.append("data",JSON.stringify({sheet:t.sheet||0})),i&&r.append("store",i);var o=new XMLHttpRequest;o.onreadystatechange=function(t){4===o.readyState&&0===o.status&&a&&a(null)},o.onload=function(){var t=null;if(!(o.status>400))try{t=JSON.parse(o.responseText)}catch(t){}a&&a(t)},o.open("POST",n,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.send(r)},_ajaxToExport:function(t,n,i){delete t.callback;var r=t.server||e.ext.export_api._apiUrl,a="type="+n+"&store=1&data="+encodeURIComponent(JSON.stringify(t));e.ext.export_api._xdr(r,a,function(t){var e=t.xmlDoc||t,n=null;if(!(e.status>400))try{n=JSON.parse(e.responseText)}catch(t){}i(n)})},_serializableGanttConfig:function(t){var n=e.mixin({},t);return n.columns&&(n.columns=n.columns.map(function(t){var n=e.mixin({},t);return delete n.editor,n})),delete n.editor_types,n},_sendToExport:function(t,n){var i=e.date.date_to_str(e.config.date_format||e.config.xml_date);if(t.config&&(t.config=e.copy(e.ext.export_api._serializableGanttConfig(t.config)),e.ext.export_api._markColumns(t,n),t.config.start_date&&t.config.end_date&&(t.config.start_date instanceof Date&&(t.config.start_date=i(t.config.start_date)),t.config.end_date instanceof Date&&(t.config.end_date=i(t.config.end_date)))),e.env.isNode){var r=t.server||e.ext.export_api._apiUrl,a={type:n,store:0,data:JSON.stringify(t)},o=t.callback||function(t){console.log(t)};return e.ext.export_api._xdr(r,a,o)}if(t.callback)return e.ext.export_api._ajaxToExport(t,n,t.callback);var s=e.ext.export_api._createHiddenForm();s.firstChild.action=t.server||e.ext.export_api._apiUrl,s.firstChild.childNodes[0].value=JSON.stringify(t),s.firstChild.childNodes[1].value=n,s.firstChild.submit()},_createHiddenForm:function(){if(!e.ext.export_api._hidden_export_form){var t=e.ext.export_api._hidden_export_form=document.createElement("div");t.style.display="none",t.innerHTML="<form method='POST' target='_blank'><textarea name='data' style='width:0px; height:0px;' readonly='true'></textarea><input type='hidden' name='type' value=''></form>",document.body.appendChild(t)}return e.ext.export_api._hidden_export_form},_copyObjectBase:function(t){var n={start_date:void 0,end_date:void 0};for(var i in t)"$"!==i.charAt(0)&&(n[i]=t[i]);var r=e.templates.xml_format||e.templates.format_date;return n.start_date=r(n.start_date),n.end_date&&(n.end_date=r(n.end_date)),n},_color_box:null,_color_hash:{},_getStyles:function(t){if(e.ext.export_api._color_box||(e.ext.export_api._color_box=document.createElement("DIV"),e.ext.export_api._color_box.style.cssText="position:absolute; display:none;",document.body.appendChild(e.ext.export_api._color_box)),e.ext.export_api._color_hash[t])return e.ext.export_api._color_hash[t];e.ext.export_api._color_box.className=t;var n=e.ext.export_api._getColor(e.ext.export_api._color_box,"color"),i=e.ext.export_api._getColor(e.ext.export_api._color_box,"backgroundColor");return e.ext.export_api._color_hash[t]=n+";"+i},_getMinutesWorktimeSettings:function(t){var e=[];return t.forEach(function(t){e.push(t.startMinute),e.push(t.endMinute)}),e},_getWorktimeSettings:function(){var t,n={hours:[0,24],minutes:null,dates:{0:!0,1:!0,2:!0,3:!0,4:!0,5:!0,6:!0}};if(e.config.work_time){var i=e._working_time_helper;if(i&&i.get_calendar)t=i.get_calendar();else if(i)t={hours:i.hours,minutes:null,dates:i.dates};else if(e.config.worktimes&&e.config.worktimes.global){var r=e.config.worktimes.global;if(r.parsed){var a=e.ext.export_api._getMinutesWorktimeSettings(r.parsed.hours);for(var o in t={hours:null,minutes:a,dates:{}},r.parsed.dates)Array.isArray(r.parsed.dates[o])?t.dates[o]=e.ext.export_api._getMinutesWorktimeSettings(r.parsed.dates[o]):t.dates[o]=r.parsed.dates[o]}else t={hours:r.hours,minutes:null,dates:r.dates}}else t=n}else t=n;return t},_eachTaskTimed:function(t,n){return function(i,r,a){r=r||e.config.root_id,a=a||e;var o=e.getChildren(r);if(o)for(var s=0;s<o.length;s++){var l=e._pull[o[s]];(!t||l.end_date>t)&&(!n||l.start_date<n)&&i.call(a,l),e.hasChild(l.id)&&e.eachTask(i,l.id,a)}}},_originalCopyObject:e.json._copyObject,_copyObjectPlain:function(t){var n=e.templates.task_text(t.start_date,t.end_date,t),i=e.ext.export_api._copyObjectBase(t);return i.text=n||i.text,i},_getColor:function(t,e){var n=t.currentStyle?t.currentStyle[e]:getComputedStyle(t,null)[e],i=n.replace(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+)/i);return(i&&4===i.length?("0"+parseInt(i[1],10).toString(16)).slice(-2)+("0"+parseInt(i[2],10).toString(16)).slice(-2)+("0"+parseInt(i[3],10).toString(16)).slice(-2):n).replace("#","")},_copyObjectTable:function(t){var n=e.date.date_to_str("%Y-%m-%dT%H:%i:%s.000Z"),i=e.ext.export_api._copyObjectColumns(t,e.ext.export_api._copyObjectPlain(t));i.start_date&&(i.start_date=n(t.start_date)),i.end_date&&(i.end_date=n(t.end_date));var r=e._day_index_by_date?e._day_index_by_date:e.columnIndexByDate;i.$start=r.call(e,t.start_date),i.$end=r.call(e,t.end_date);var a=0,o=e.getScale().width;if(o.indexOf(0)>-1){for(var s=0;s<i.$start;s++)o[s]||a++;for(i.$start-=a;s<i.$end;s++)o[s]||a++;i.$end-=a}i.$level=t.$level,i.$type=t.$rendered_type;var l=e.templates;return i.$text=l.task_text(t.start,t.end_date,t),i.$left=l.leftside_text?l.leftside_text(t.start,t.end_date,t):"",i.$right=l.rightside_text?l.rightside_text(t.start,t.end_date,t):"",i},_copyObjectColors:function(t){var n=e.ext.export_api._copyObjectTable(t),i=e.getTaskNode(t.id);if(i&&i.firstChild){var r=e.ext.export_api._getColor(e._no_progress_colors?i:i.firstChild,"backgroundColor");"363636"===r&&(r=e.ext.export_api._getColor(i,"backgroundColor")),n.$color=r}else t.color&&(n.$color=t.color);return n},_copyObjectColumns:function(t,n){for(var i=0;i<e.config.columns.length;i++){var r=e.config.columns[i].template;if(r){var a=r(t);a instanceof Date&&(a=e.templates.date_grid(a,t)),n["_"+i]=a}}return n},_copyObjectAll:function(t){for(var n=e.ext.export_api._copyObjectBase(t),i=["leftside_text","rightside_text","task_text","progress_text","task_class"],r=0;r<i.length;r++){var a=e.templates[i[r]];a&&(n["$"+r]=a(t.start_date,t.end_date,t))}return e.ext.export_api._copyObjectColumns(t,n),n.open=t.$open,n},_serializeHtml:function(){var t=e.config.smart_scales,n=e.config.smart_rendering;(t||n)&&(e.config.smart_rendering=!1,e.config.smart_scales=!1,e.render());var i=e.$container.parentNode.innerHTML;return(t||n)&&(e.config.smart_scales=t,e.config.smart_rendering=n,e.render()),i},_serializeAll:function(){e.json._copyObject=e.ext.export_api._copyObjectAll;var t=e.ext.export_api._exportSerialize();return e.json._copyObject=e.ext.export_api._originalCopyObject,t},_serializePlain:function(){var t=e.templates.xml_format,n=e.templates.format_date;e.templates.xml_format=e.date.date_to_str("%Y%m%dT%H%i%s",!0),e.templates.format_date=e.date.date_to_str("%Y%m%dT%H%i%s",!0),e.json._copyObject=e.ext.export_api._copyObjectPlain;var i=e.ext.export_api._exportSerialize();return e.templates.xml_format=t,e.templates.format_date=n,e.json._copyObject=e.ext.export_api._originalCopyObject,delete i.links,i},_getRaw:function(){if(e._scale_helpers){var t=e._get_scales(),n=e.config.min_column_width,i=e._get_resize_options().x?Math.max(e.config.autosize_min_width,0):e.config.$task.offsetWidth,r=e.config.config.scale_height-1;return e._scale_helpers.prepareConfigs(t,n,i,r)}var a=e.$ui.getView("timeline");if(a){var o=a.$config.width;"x"!==e.config.autosize&&"xy"!==e.config.autosize||(o=Math.max(e.config.autosize_min_width,0));var s=e.getState(),l=(t=a._getScales(),n=e.config.min_column_width,r=e.config.scale_height-1,e.config.rtl);return a.$scaleHelper.prepareConfigs(t,n,o,r,s.min_date,s.max_date,l)}},_serializeTable:function(t){e.json._copyObject=t.visual?e.ext.export_api._copyObjectColors:e.ext.export_api._copyObjectTable;var n=e.ext.export_api._exportSerialize();if(e.json._copyObject=e.ext.export_api._originalCopyObject,delete n.links,t.cellColors){var i=e.templates.timeline_cell_class||e.templates.task_cell_class;if(i){for(var r=e.ext.export_api._getRaw(),a=r[0].trace_x,o=1;o<r.length;o++)r[o].trace_x.length>a.length&&(a=r[o].trace_x);for(o=0;o<n.data.length;o++){n.data[o].styles=[];for(var s=e.getTask(n.data[o].id),l=0;l<a.length;l++){var c=i(s,a[l]);c&&n.data[o].styles.push({index:l,styles:e.ext.export_api._getStyles(c)})}}}}return n},_serializeScales:function(t){for(var n=[],i=e.ext.export_api._getRaw(),r=1/0,a=0,o=0;o<i.length;o++)r=Math.min(r,i[o].col_width);for(o=0;o<i.length;o++){var s=0,l=0,c=[];n.push(c);var u=i[o];a=Math.max(a,u.trace_x.length);for(var d=u.format||u.template||(u.date?e.date.date_to_str(u.date):e.config.date_scale),h=0;h<u.trace_x.length;h++){var f=u.trace_x[h];l=s+Math.round(u.width[h]/r);var _={text:d(f),start:s,end:l,styles:""};if(t.cellColors){var g=u.css||e.templates.scaleCell_class;if(g){var p=g(f);p&&(_.styles=e.ext.export_api._getStyles(p))}}c.push(_),s=l}}return{width:a,height:n.length,data:n}},_serializeColumns:function(t){e.exportMode=!0;for(var n=[],i=e.config.columns,r=0,a=0;a<i.length;a++)"add"!==i[a].name&&"buttons"!==i[a].name&&(n[r]={id:i[a].template?"_"+a:i[a].name,header:i[a].label||e.locale.labels["column_"+i[a].name],width:i[a].width?Math.floor(i[a].width/4):""},"duration"===i[a].name&&(n[r].type="number"),"start_date"!==i[a].name&&"end_date"!==i[a].name||(n[r].type="date",t&&t.rawDates&&(n[r].id=i[a].name)),r++);return e.exportMode=!1,n},_exportSerialize:function(){e.exportMode=!0;var t=e.templates.xml_format,n=e.templates.format_date;e.templates.xml_format=e.templates.format_date=e.date.date_to_str(e.config.date_format||e.config.xml_date);var i=e.serialize();return e.templates.xml_format=t,e.templates.format_date=n,e.exportMode=!1,i},_setLevel:function(t){for(var e=0;e<t.length;e++){0==t[e].parent&&(t[e]._lvl=1);for(var n=e+1;n<t.length;n++)t[e].id==t[n].parent&&(t[n]._lvl=t[e]._lvl+1)}},_clearLevel:function(t){for(var e=0;e<t.length;e++)delete t[e]._lvl},_clearRecLinks:function(t){e.ext.export_api._setLevel(t.data);for(var n={},i=0;i<t.data.length;i++)n[t.data[i].id]=t.data[i];var r={};for(i=0;i<t.links.length;i++){var a=t.links[i];e.isTaskExists(a.source)&&e.isTaskExists(a.target)&&n[a.source]&&n[a.target]&&(r[a.id]=a)}for(var o in r)e.ext.export_api._makeLinksSameLevel(r[o],n);var s={};for(var o in n)e.ext.export_api._clearCircDependencies(n[o],r,n,{},s,null);for(Object.keys(r)&&e.ext.export_api._clearLinksSameLevel(r,n),i=0;i<t.links.length;i++)r[t.links[i].id]||(t.links.splice(i,1),i--);e.ext.export_api._clearLevel(t.data)},_clearCircDependencies:function(t,n,i,r,a,o){var s=t.$_source;if(s){r[t.id]&&e.ext.export_api._onCircDependencyFind(o,n,r,a),r[t.id]=!0;for(var l={},c=0;c<s.length;c++)if(!a[s[c]]){var u=n[s[c]],d=i[u._target];l[d.id]&&e.ext.export_api._onCircDependencyFind(u,n,r,a),l[d.id]=!0,e.ext.export_api._clearCircDependencies(d,n,i,r,a,u)}r[t.id]=!1}},_onCircDependencyFind:function(t,n,i,r){t&&(e.callEvent("onExportCircularDependency",[t.id,t])&&delete n[t.id],delete i[t._source],delete i[t._target],r[t.id]=!0)},_makeLinksSameLevel:function(t,e){var n,i,r={target:e[t.target],source:e[t.source]};if(r.target._lvl!=r.source._lvl){r.target._lvl<r.source._lvl?(n="source",i=r.target._lvl):(n="target",i=r.source._lvl);do{var a=e[r[n].parent];if(!a)break;r[n]=a}while(r[n]._lvl<i);for(var o=e[r.source.parent],s=e[r.target.parent];o&&s&&o.id!=s.id;)r.source=o,r.target=s,o=e[r.source.parent],s=e[r.target.parent]}t._target=r.target.id,t._source=r.source.id,r.target.$_target||(r.target.$_target=[]),r.target.$_target.push(t.id),r.source.$_source||(r.source.$_source=[]),r.source.$_source.push(t.id)},_clearLinksSameLevel:function(t,e){for(var n in t)delete t[n]._target,delete t[n]._source;for(var i in e)delete e[i].$_source,delete e[i].$_target},_customProjectProperties:function(t,n){if(n&&n.project){for(var i in n.project)e.config.$custom_data||(e.config.$custom_data={}),e.config.$custom_data[i]="function"==typeof n.project[i]?n.project[i](e.config):n.project[i];delete n.project}},_customTaskProperties:function(t,n){n&&n.tasks&&(t.data.forEach(function(t){for(var i in n.tasks)t.$custom_data||(t.$custom_data={}),t.$custom_data[i]="function"==typeof n.tasks[i]?n.tasks[i](t,e.config):n.tasks[i]}),delete n.tasks)},_exportConfig:function(t,n){var i=n.name||"gantt.xml";delete n.name,e.config.custom=n;var r=e.ext.export_api._getWorktimeSettings(),a=e.getSubtaskDates();if(a.start_date&&a.end_date){var o=e.templates.format_date||e.templates.xml_format;e.config.start_end={start_date:o(a.start_date),end_date:o(a.end_date)}}var s=void 0!==n.auto_scheduling&&!!n.auto_scheduling,l={callback:n.callback||null,config:e.config,data:t,manual:s,name:i,worktime:r};for(var c in n)l[c]=n[c];return l},_sendImportAjaxMSP:function(t){var n=t.server||e.ext.export_api._apiUrl,i=t.store||0,r=t.data,a=t.callback,o={durationUnit:t.durationUnit||void 0,projectProperties:t.projectProperties||void 0,taskProperties:t.taskProperties||void 0};r.append("type",t.type||"msproject-parse"),r.append("data",JSON.stringify(o)),i&&r.append("store",i);var s=new XMLHttpRequest;s.onreadystatechange=function(t){4===s.readyState&&0===s.status&&a&&a(null)},s.onload=function(){var t=null;if(!(s.status>400))try{t=JSON.parse(s.responseText)}catch(t){}a&&a(t)},s.open("POST",n,!0),s.setRequestHeader("X-Requested-With","XMLHttpRequest"),s.send(r)}},e.exportToPDF=e.ext.export_api.exportToPDF,e.exportToPNG=e.ext.export_api.exportToPNG,e.exportToICal=e.ext.export_api.exportToICal,e.exportToExcel=e.ext.export_api.exportToExcel,e.exportToJSON=e.ext.export_api.exportToJSON,e.importFromExcel=e.ext.export_api.importFromExcel,e.importFromMSProject=e.ext.export_api.importFromMSProject,e.exportToMSProject=e.ext.export_api.exportToMSProject,e.importFromPrimaveraP6=e.ext.export_api.importFromPrimaveraP6,e.exportToPrimaveraP6=e.ext.export_api.exportToPrimaveraP6}}).call(this,n(13).Buffer)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){var e=this;this._mouseDown=!1,this._calculateDirectionVector=function(){if(e._trace.length>=10){for(var t=e._trace.slice(e._trace.length-10),n=[],i=1;i<t.length;i++)n.push({x:t[i].x-t[i-1].x,y:t[i].y-t[i-1].y});var r={x:0,y:0};return n.forEach(function(t){r.x+=t.x,r.y+=t.y}),{magnitude:Math.sqrt(r.x*r.x+r.y*r.y),angleDegrees:180*Math.atan2(Math.abs(r.y),Math.abs(r.x))/Math.PI}}return null},this._applyDndReadyStyles=function(){e._timeline.$task.classList.add("gantt_timeline_move_available")},this._clearDndReadyStyles=function(){e._timeline.$task.classList.remove("gantt_timeline_move_available")},this._getScrollPosition=function(t){var n=e._gantt;return{x:n.$ui.getView(t.$config.scrollX).getScrollState().position,y:n.$ui.getView(t.$config.scrollY).getScrollState().position}},this._countNewScrollPosition=function(t){var n=e._calculateDirectionVector(),i=e._startPoint.x-t.x,r=e._startPoint.y-t.y;return n&&(n.angleDegrees<15?r=0:n.angleDegrees>75&&(i=0)),{x:e._scrollState.x+i,y:e._scrollState.y+r}},this._setScrollPosition=function(t,n){var i=e._gantt;requestAnimationFrame(function(){i.scrollLayoutCell(t.$id,n.x,n.y)})},this._stopDrag=function(t){var n=e._gantt;if(e._trace=[],n.$root.classList.remove("gantt_noselect"),void 0!==e._originalReadonly&&(n.config.readonly=e._originalReadonly),void 0!==e._originAutoscroll&&(n.config.autoscroll=e._originAutoscroll),n.config.drag_timeline){var i=n.config.drag_timeline.useKey;if(i&&!0!==t[i])return}e._mouseDown=!1},this._startDrag=function(t){var n=e._gantt;e._originAutoscroll=n.config.autoscroll,n.config.autoscroll=!1,n.$root.classList.add("gantt_noselect"),e._originalReadonly=n.config.readonly,n.config.readonly=!0,e._trace=[],e._mouseDown=!0;var i=e._getScrollPosition(e._timeline),r=i.x,a=i.y;e._scrollState={x:r,y:a},e._startPoint={x:t.clientX,y:t.clientY},e._trace.push(e._startPoint)},this._gantt=t,this._domEvents=t._createDomEventScope(),this._trace=[]}return t.create=function(e){return new t(e)},t.prototype.destructor=function(){this._domEvents.detachAll()},t.prototype.attach=function(t){var e=this;this._timeline=t;var n=this._gantt;this._domEvents.attach(t.$task,"mousedown",function(t){if(n.config.drag_timeline){var i=n.config.drag_timeline,r=i.useKey,a=i.ignore;if(!1!==i.enabled){var o=".gantt_task_line, .gantt_task_link";void 0!==a&&(o=a instanceof Array?a.join(", "):a),o&&n.utils.dom.closest(t.target,o)||r&&!0!==t[r]||e._startDrag(t)}}}),this._domEvents.attach(document,"keydown",function(t){if(n.config.drag_timeline){var i=n.config.drag_timeline.useKey;i&&!0===t[i]&&e._applyDndReadyStyles()}}),this._domEvents.attach(document,"keyup",function(t){if(n.config.drag_timeline){var i=n.config.drag_timeline.useKey;i&&!1===t[i]&&(e._clearDndReadyStyles(),e._stopDrag(t))}}),this._domEvents.attach(document,"mouseup",function(t){e._stopDrag(t)}),this._domEvents.attach(n.$root,"mouseup",function(t){e._stopDrag(t)}),this._domEvents.attach(document,"mouseleave",function(t){e._stopDrag(t)}),this._domEvents.attach(n.$root,"mouseleave",function(t){e._stopDrag(t)}),this._domEvents.attach(n.$root,"mousemove",function(i){if(n.config.drag_timeline){var r=n.config.drag_timeline.useKey;if(!r||!0===i[r]){var a=e._gantt.ext.clickDrag,o=(e._gantt.config.click_drag||{}).useKey;if((!a||!o||r||!i[o])&&!0===e._mouseDown){e._trace.push({x:i.clientX,y:i.clientY});var s=e._countNewScrollPosition({x:i.clientX,y:i.clientY});e._setScrollPosition(t,s),e._scrollState=s,e._startPoint={x:i.clientX,y:i.clientY}}}}})},t}();e.EventsManager=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(293);e.default=function(t){t.ext||(t.ext={}),t.ext.dragTimeline={create:function(){return i.EventsManager.create(t)}},t.config.drag_timeline={enabled:!0}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),r=n(2),a=function(){function t(t,e,n){var a=this;this._el=document.createElement("div"),this.defaultRender=function(t,e){a._el||(a._el=document.createElement("div"));var n=a._el,i=Math.min(t.relative.top,e.relative.top),r=Math.max(t.relative.top,e.relative.top),o=Math.min(t.relative.left,e.relative.left),s=Math.max(t.relative.left,e.relative.left);if(a._singleRow){var l=a._getTaskPositionByTop(a._startPoint.relative.top);n.style.height=l.height+"px",n.style.top=l.top+"px"}else n.style.height=Math.abs(r-i)+"px",n.style.top=i+"px";return n.style.width=Math.abs(s-o)+"px",n.style.left=o+"px",n},this._gantt=e,this._view=n,this._viewPort=t.viewPort,this._el.classList.add(t.className),"function"==typeof t.callback&&(this._callback=t.callback),this.render=function(){var e;(e=t.render?t.render(a._startPoint,a._endPoint):a.defaultRender(a._startPoint,a._endPoint))!==a._el&&(a._el&&a._el.parentNode&&a._el.parentNode.removeChild(a._el),a._el=e),""!==t.className&&a._el.classList.add(t.className),a.draw()},r.isEventable(this._viewPort)||i(this._viewPort),this._singleRow=t.singleRow,this._useRequestAnimationFrame=t.useRequestAnimationFrame}return t.prototype.draw=function(){var t=this;if(this._useRequestAnimationFrame)return requestAnimationFrame(function(){t._viewPort.appendChild(t.getElement())});this._viewPort.appendChild(this.getElement())},t.prototype.clear=function(){var t=this;if(this._useRequestAnimationFrame)return requestAnimationFrame(function(){t._el.parentNode&&t._viewPort.removeChild(t._el)});this._el.parentNode&&this._viewPort.removeChild(this._el)},t.prototype.getElement=function(){return this._el},t.prototype.getViewPort=function(){return this._viewPort},t.prototype.setStart=function(t){var e=this._gantt;this._startPoint=t,this._startDate=e.dateFromPos(this._startPoint.relative.left),this._viewPort.callEvent("onBeforeDrag",[this._startPoint])},t.prototype.setEnd=function(t){var e=this._gantt;if(this._endPoint=t,this._singleRow){var n=this._getTaskPositionByTop(this._startPoint.relative.top);this._endPoint.relative.top=n.top}this._endDate=e.dateFromPos(this._endPoint.relative.left),this._startPoint.relative.left>this._endPoint.relative.left&&(this._positionPoint={relative:{left:this._endPoint.relative.left,top:this._positionPoint.relative.top},absolute:{left:this._endPoint.absolute.left,top:this._positionPoint.absolute.top}}),this._startPoint.relative.top>this._endPoint.relative.top&&(this._positionPoint={relative:{left:this._positionPoint.relative.left,top:this._endPoint.relative.top},absolute:{left:this._positionPoint.absolute.left,top:this._endPoint.absolute.top}}),this._viewPort.callEvent("onDrag",[this._startPoint,this._endPoint])},t.prototype.setPosition=function(t){this._positionPoint=t},t.prototype.dragEnd=function(t){var e,n=this._gantt;t.relative.left<0&&(t.relative.left=0),this._viewPort.callEvent("onBeforeDragEnd",[this._startPoint,t]),this.setEnd(t),this._endDate=this._endDate||n.getState().max_date,this._startDate.valueOf()>this._endDate.valueOf()&&(e=[this._endDate,this._startDate],this._startDate=e[0],this._endDate=e[1]),this.clear();var i=n.getTaskByTime(this._startDate,this._endDate),r=this._getTasksByTop(this._startPoint.relative.top,this._endPoint.relative.top);this._viewPort.callEvent("onDragEnd",[this._startPoint,this._endPoint]),this._callback&&this._callback(this._startPoint,this._endPoint,this._startDate,this._endDate,i,r)},t.prototype.getInBounds=function(){return this._singleRow},t.prototype._getTasksByTop=function(t,e){var n=this._gantt,i=t,r=e;t>e&&(i=e,r=t);for(var a=this._getTaskPositionByTop(i).index,o=this._getTaskPositionByTop(r).index,s=[],l=a;l<=o;l++){n.getTaskByIndex(l)&&s.push(n.getTaskByIndex(l))}return s},t.prototype._getTaskPositionByTop=function(t){var e=this._gantt,n=this._view,i=n.getItemIndexByTopPosition(t),r=e.getTaskByIndex(i);if(r){var a=n.getItemHeight(r.id);return{top:n.getItemTop(r.id)||0,height:a||0,index:i}}var o=n.getTotalHeight();return{top:t>o?o:0,height:e.config.row_height,index:t>o?e.getTaskCount():0}},t}();e.SelectedRegion=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),r=function(){function t(t){this._mouseDown=!1,this._gantt=t,this._domEvents=t._createDomEventScope()}return t.prototype.attach=function(t,e,n){var r=this,a=this._gantt,o=t.getViewPort();this._originPosition=window.getComputedStyle(o).display,this._restoreOriginPosition=function(){o.style.position=r._originPosition},"static"===this._originPosition&&(o.style.position="relative");var s=a.$services.getService("state");s.registerProvider("clickDrag",function(){return{autoscroll:!1}});var l=null;this._domEvents.attach(o,"mousedown",function(i){l=null;var o=".gantt_task_line, .gantt_task_link";void 0!==n&&(o=n instanceof Array?n.join(", "):n),o&&a.utils.dom.closest(i.target,o)||(s.registerProvider("clickDrag",function(){return{autoscroll:r._mouseDown}}),e&&!0!==i[e]||(l=r._getCoordinates(i,t)))});var c=i.getRootNode(a.$root)||document.body;this._domEvents.attach(c,"mouseup",function(n){if(l=null,(!e||!0===n[e])&&!0===r._mouseDown){r._mouseDown=!1;var i=r._getCoordinates(n,t);t.dragEnd(i)}}),this._domEvents.attach(o,"mousemove",function(n){if(!e||!0===n[e]){var i=r._gantt.ext.clickDrag,o=(r._gantt.config.drag_timeline||{}).useKey;if(!i||!o||e||!n[o]){var s=null;if(!r._mouseDown&&l)return s=r._getCoordinates(n,t),void(Math.abs(l.relative.left-s.relative.left)>5&&l&&(r._mouseDown=!0,t.setStart(a.copy(l)),t.setPosition(a.copy(l)),t.setEnd(a.copy(l)),l=null));!0===r._mouseDown&&(s=r._getCoordinates(n,t),t.setEnd(s),t.render())}}})},t.prototype.detach=function(){var t=this._gantt;this._domEvents.detachAll(),this._restoreOriginPosition&&this._restoreOriginPosition(),t.$services.getService("state").unregisterProvider("clickDrag")},t.prototype.destructor=function(){this.detach()},t.prototype._getCoordinates=function(t,e){var n=e.getViewPort(),i=n.getBoundingClientRect(),r=t.clientX,a=t.clientY;return{absolute:{left:r,top:a},relative:{left:r-i.left+n.scrollLeft,top:a-i.top+n.scrollTop}}},t}();e.EventsManager=r},function(t,e,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;n<i;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var r=n(296),a=n(295);e.default=function(t){t.ext||(t.ext={});var e={className:"gantt_click_drag_rect",useRequestAnimationFrame:!0,callback:void 0,singleRow:!1},n=new r.EventsManager(t);t.ext.clickDrag=n,t.attachEvent("onGanttReady",function(){var n=i({viewPort:t.$task_data},e);if(t.config.click_drag){var r=t.config.click_drag;n.render=r.render||e.render,n.className=r.className||e.className,n.callback=r.callback||e.callback,n.viewPort=r.viewPort||t.$task_data,n.useRequestAnimationFrame=void 0===r.useRequestAnimationFrame?e.useRequestAnimationFrame:r.useRequestAnimationFrame,n.singleRow=void 0===r.singleRow?e.singleRow:r.singleRow;var o=t.$ui.getView("timeline"),s=new a.SelectedRegion(n,t,o);t.ext.clickDrag.attach(s,r.useKey,r.ignore)}}),t.attachEvent("onDestroy",function(){n.destructor()})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(297),r=n(294),a=n(292),o=n(272),s=n(271),l=n(260),c=n(259),u=n(258),d=n(256),h=n(253);e.default={click_drag:i.default,drag_timeline:r.default,fullscreen:o.default,keyboard_navigation:s,quick_info:u.default,tooltip:d.default,undo:h.default,marker:l,multiselect:c,export_api:a.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(298),r=n(250),a=n(21).gantt=r(i.default);e.gantt=a,e.default=a}])}); //# sourceMappingURL=dhtmlxgantt.js.map \ No newline at end of file diff --git a/codebase/dhtmlxgantt.js.map b/codebase/dhtmlxgantt.js.map index aeb1a57..a2c22b4 100644 --- a/codebase/dhtmlxgantt.js.map +++ b/codebase/dhtmlxgantt.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://dhtmlxgantt/webpack/universalModuleDefinition","webpack://dhtmlxgantt/webpack/bootstrap","webpack://dhtmlxgantt/./sources/utils/utils.js","webpack://dhtmlxgantt/./sources/core/ui/utils/dom_helpers.js","webpack://dhtmlxgantt/./sources/utils/helpers.js","webpack://dhtmlxgantt/./sources/utils/extends.js","webpack://dhtmlxgantt/(webpack)/buildin/global.js","webpack://dhtmlxgantt/./sources/utils/eventable.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_visible_bars_range.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/base_control.js","webpack://dhtmlxgantt/./node_modules/inherits/inherits_browser.js","webpack://dhtmlxgantt/./node_modules/process/browser.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/base.js","webpack://dhtmlxgantt/./sources/utils/env.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://dhtmlxgantt/./node_modules/buffer/index.js","webpack://dhtmlxgantt/./sources/core/ui/layout/cell.js","webpack://dhtmlxgantt/./sources/utils/is_headless.js","webpack://dhtmlxgantt/./sources/utils/placeholder_task.js","webpack://dhtmlxgantt/./node_modules/core-util-is/lib/util.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/select_control.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_bar_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/is_legacy_smart_render.js","webpack://dhtmlxgantt/./sources/utils/global.js","webpack://dhtmlxgantt/./node_modules/safe-buffer/index.js","webpack://dhtmlxgantt/./node_modules/process-nextick-args/index.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/drop_target.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_column_visible.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_visible_cells_range.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_bg_row_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bar_render.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/timeline.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_grid_row_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/mouse_event_container.js","webpack://dhtmlxgantt/./sources/core/ui/grid/grid.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/scales.js","webpack://dhtmlxgantt/./sources/core/ui/utils/html_helpers.js","webpack://dhtmlxgantt/./sources/core/resource_timetable_builder.js","webpack://dhtmlxgantt/./sources/core/ui/layout/layout.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_link_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/factory/get_visible_link_range.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/index.ts","webpack://dhtmlxgantt/./sources/core/worktime/calendar_arguments_helper.js","webpack://dhtmlxgantt/./sources/core/ui/row_position_mixin.js","webpack://dhtmlxgantt/./sources/core/common/duration_formatter_numeric.ts","webpack://dhtmlxgantt/./sources/utils/task_tree_helpers.js","webpack://dhtmlxgantt/./sources/core/gantt_data_range.js","webpack://dhtmlxgantt/./sources/core/datastore/treedatastore.js","webpack://dhtmlxgantt/./sources/core/datastore/power_array.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore.js","webpack://dhtmlxgantt/./sources/utils/timeout.js","webpack://dhtmlxgantt/./sources/core/ui/utils/dom_event_scope.js","webpack://dhtmlxgantt/./node_modules/form-data/lib/browser.js","webpack://dhtmlxgantt/(webpack)/buildin/amd-options.js","webpack://dhtmlxgantt/./node_modules/url/url.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_transform.js","webpack://dhtmlxgantt/./node_modules/string_decoder/lib/string_decoder.js","webpack://dhtmlxgantt/./node_modules/timers-browserify/main.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_writable.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://dhtmlxgantt/./node_modules/events/events.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_readable.js","webpack://dhtmlxgantt/./node_modules/readable-stream/readable-browser.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/response.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/capability.js","webpack://dhtmlxgantt/./node_modules/stream-http/index.js","webpack://dhtmlxgantt/./node_modules/isarray/index.js","webpack://dhtmlxgantt/./sources/core/ui/wai_aria.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/lightbox_optional_time.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/typeselect_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/constraint_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/parent_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/duration_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/radio_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/checkbox_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/time_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/textarea_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/template_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/index.js","webpack://dhtmlxgantt/./sources/core/ui/touch.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/timeline_zoom.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/dhtmlx_hooks.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/jquery_hooks.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/autoscroll.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/index.js","webpack://dhtmlxgantt/./sources/css/skins/contrast_white.js","webpack://dhtmlxgantt/./sources/css/skins/contrast_black.js","webpack://dhtmlxgantt/./sources/css/skins/material.js","webpack://dhtmlxgantt/./sources/css/skins/broadway.js","webpack://dhtmlxgantt/./sources/css/skins/terrace.js","webpack://dhtmlxgantt/./sources/css/skins/meadow.js","webpack://dhtmlxgantt/./sources/css/skins/skyblue.js","webpack://dhtmlxgantt/./sources/core/ui/skin.js","webpack://dhtmlxgantt/./sources/core/facades/layout.js","webpack://dhtmlxgantt/./sources/core/data_task_layers.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/main_layout_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/links_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/tasks_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/main_timeline_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/highlight.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/multi_level.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/locked_level.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/grid/main_grid_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_grid_row_resize_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/resource_histogram_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/resource_matrix_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_grid_line_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/link_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/prerender/task_bg_placeholder.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bg_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_rollup_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_split_task_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_split_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bar_smart_render.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/linked_properties.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/duration.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/predecessor.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/date.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/select.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/number.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/text.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings/keyboard_navigation.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings/default.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/controller.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/tasks_canvas_render.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/layout/scrollbar_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/resizer_cell.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/layout/view_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/view_layout.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_bar_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_link_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/render_factory.js","webpack://dhtmlxgantt/./sources/core/ui/render/layer_engine.js","webpack://dhtmlxgantt/./sources/core/ui/gantt_layers.js","webpack://dhtmlxgantt/./sources/core/ui/mouse.js","webpack://dhtmlxgantt/./sources/core/ui/configurable.js","webpack://dhtmlxgantt/./sources/core/ui/ui_factory.js","webpack://dhtmlxgantt/./sources/core/ui/index.js","webpack://dhtmlxgantt/./sources/core/ui/message.js","webpack://dhtmlxgantt/./sources/core/ui_core.js","webpack://dhtmlxgantt/./sources/locale/locale_ua.ts","webpack://dhtmlxgantt/./sources/locale/locale_tr.ts","webpack://dhtmlxgantt/./sources/locale/locale_sv.ts","webpack://dhtmlxgantt/./sources/locale/locale_sk.ts","webpack://dhtmlxgantt/./sources/locale/locale_si.ts","webpack://dhtmlxgantt/./sources/locale/locale_ru.ts","webpack://dhtmlxgantt/./sources/locale/locale_ro.ts","webpack://dhtmlxgantt/./sources/locale/locale_pt.ts","webpack://dhtmlxgantt/./sources/locale/locale_pl.ts","webpack://dhtmlxgantt/./sources/locale/locale_no.ts","webpack://dhtmlxgantt/./sources/locale/locale_nl.ts","webpack://dhtmlxgantt/./sources/locale/locale_nb.ts","webpack://dhtmlxgantt/./sources/locale/locale_manager.ts","webpack://dhtmlxgantt/./sources/locale/locale_kr.ts","webpack://dhtmlxgantt/./sources/locale/locale_jp.ts","webpack://dhtmlxgantt/./sources/locale/locale_it.ts","webpack://dhtmlxgantt/./sources/locale/locale_id.ts","webpack://dhtmlxgantt/./sources/locale/locale_hu.ts","webpack://dhtmlxgantt/./sources/locale/locale_hr.ts","webpack://dhtmlxgantt/./sources/locale/locale_he.ts","webpack://dhtmlxgantt/./sources/locale/locale_fr.ts","webpack://dhtmlxgantt/./sources/locale/locale_fi.ts","webpack://dhtmlxgantt/./sources/locale/locale_fa.ts","webpack://dhtmlxgantt/./sources/locale/locale_es.ts","webpack://dhtmlxgantt/./sources/locale/locale_en.ts","webpack://dhtmlxgantt/./sources/locale/locale_el.ts","webpack://dhtmlxgantt/./sources/locale/locale_de.ts","webpack://dhtmlxgantt/./sources/locale/locale_da.ts","webpack://dhtmlxgantt/./sources/locale/locale_cs.ts","webpack://dhtmlxgantt/./sources/locale/locale_cn.ts","webpack://dhtmlxgantt/./sources/locale/locale_ca.ts","webpack://dhtmlxgantt/./sources/locale/locale_be.ts","webpack://dhtmlxgantt/./sources/locale/locale_ar.ts","webpack://dhtmlxgantt/./sources/locale/index.ts","webpack://dhtmlxgantt/./sources/publish_helpers/void_script_third.ts","webpack://dhtmlxgantt/./sources/core/destructor.js","webpack://dhtmlxgantt/./sources/core/common/assert.js","webpack://dhtmlxgantt/./sources/core/ui/resize_listener.js","webpack://dhtmlxgantt/./sources/core/gantt_core.js","webpack://dhtmlxgantt/./sources/core/cached_functions.js","webpack://dhtmlxgantt/./sources/core/data_task_types.js","webpack://dhtmlxgantt/./sources/publish_helpers/void_script_second.ts","webpack://dhtmlxgantt/./sources/core/data.js","webpack://dhtmlxgantt/./sources/core/facades/worktime_calendars.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/no_work_time.js","webpack://dhtmlxgantt/./sources/core/worktime/time_calculator.js","webpack://dhtmlxgantt/./sources/core/worktime/dynamic_resource_calendars.js","webpack://dhtmlxgantt/./sources/core/worktime/legacy_resource_config.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/date_duration_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/larger_units_helper.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/workunit_object_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/workunit_map_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/calendar_strategy.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_calendar_merger.js","webpack://dhtmlxgantt/./sources/core/worktime/calendar_manager.js","webpack://dhtmlxgantt/./sources/core/worktime/work_time.js","webpack://dhtmlxgantt/./sources/core/load.js","webpack://dhtmlxgantt/./sources/core/tasks.js","webpack://dhtmlxgantt/./sources/core/grid_column_api.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/scrollable_grid.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/column_grid_dnd.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/index.ts","webpack://dhtmlxgantt/./sources/core/ui/grid/task_grid_row_resize.js","webpack://dhtmlxgantt/./sources/core/ui/row_position_fixed_height.js","webpack://dhtmlxgantt/./sources/core/ui/grid/grid_resize.gpl.js","webpack://dhtmlxgantt/./sources/core/grid_column_api.js","webpack://dhtmlxgantt/./sources/core/dynamic_loading.js","webpack://dhtmlxgantt/./sources/core/plugins/empty_state_screen.ts","webpack://dhtmlxgantt/./sources/core/common/link_formatter_simple.ts","webpack://dhtmlxgantt/./sources/core/plugins/formatters.js","webpack://dhtmlxgantt/./sources/core/plugins/auto_task_types.js","webpack://dhtmlxgantt/./sources/core/plugins/new_task_placeholder.js","webpack://dhtmlxgantt/./sources/core/plugins/resource_assignments.js","webpack://dhtmlxgantt/./sources/core/plugins/resources.js","webpack://dhtmlxgantt/./sources/core/plugins/wbs.js","webpack://dhtmlxgantt/./sources/core/plugins/batch_update.js","webpack://dhtmlxgantt/./sources/core/plugins/index.js","webpack://dhtmlxgantt/./sources/core/dataprocessor/simple_storage.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/extend_gantt.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/data_processor_events.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/data_processor.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/index.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore_render.js","webpack://dhtmlxgantt/./sources/core/datastore/select.js","webpack://dhtmlxgantt/./sources/core/facades/datastore_links.js","webpack://dhtmlxgantt/./sources/core/facades/datastore_tasks.js","webpack://dhtmlxgantt/./sources/core/facades/datastore.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore_hooks.js","webpack://dhtmlxgantt/./node_modules/bluebird/js/browser/bluebird.js","webpack://dhtmlxgantt/./sources/utils/promise.js","webpack://dhtmlxgantt/./sources/core/common/state.js","webpack://dhtmlxgantt/./sources/core/common/templates.js","webpack://dhtmlxgantt/./sources/core/common/dnd.js","webpack://dhtmlxgantt/./node_modules/remote-client/dist/remote.es6.js","webpack://dhtmlxgantt/./sources/core/remote/remote_events.js","webpack://dhtmlxgantt/./sources/core/common/date_parsers/csp_compliant_version.ts","webpack://dhtmlxgantt/./sources/core/common/date_parsers/fast_version.ts","webpack://dhtmlxgantt/./sources/core/common/date.js","webpack://dhtmlxgantt/./sources/core/common/serialize.ts","webpack://dhtmlxgantt/./sources/core/common/ajax.js","webpack://dhtmlxgantt/./sources/core/common/config.ts","webpack://dhtmlxgantt/./sources/core/common/services.js","webpack://dhtmlxgantt/./sources/ext/extension_manager.ts","webpack://dhtmlxgantt/./sources/constants/index.js","webpack://dhtmlxgantt/./sources/factory/make_instance_common.js","webpack://dhtmlxgantt/./sources/factory/make_instance_web.js","webpack://dhtmlxgantt/./sources/ext/undo/undo.ts","webpack://dhtmlxgantt/./sources/ext/undo/monitor.ts","webpack://dhtmlxgantt/./sources/ext/undo/index.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/tooltip.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/tooltipManager.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/index.ts","webpack://dhtmlxgantt/./sources/ext/quick_info/quickInfo.ts","webpack://dhtmlxgantt/./sources/ext/quick_info/index.ts","webpack://dhtmlxgantt/./sources/ext/multiselect.js","webpack://dhtmlxgantt/./sources/ext/marker.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/core.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/modals.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/task_cell.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/task_row.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/header_cell.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/nav_node.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/gantt_node.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/trap_modal_focus.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/eventhandler.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation.js","webpack://dhtmlxgantt/./sources/ext/fullscreen/index.ts","webpack://dhtmlxgantt/./node_modules/querystring-es3/encode.js","webpack://dhtmlxgantt/./node_modules/querystring-es3/decode.js","webpack://dhtmlxgantt/./node_modules/querystring-es3/index.js","webpack://dhtmlxgantt/./node_modules/url/util.js","webpack://dhtmlxgantt/(webpack)/buildin/module.js","webpack://dhtmlxgantt/./node_modules/punycode/punycode.js","webpack://dhtmlxgantt/./node_modules/builtin-status-codes/browser.js","webpack://dhtmlxgantt/./node_modules/xtend/immutable.js","webpack://dhtmlxgantt/./node_modules/to-arraybuffer/index.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://dhtmlxgantt/./node_modules/util-deprecate/browser.js","webpack://dhtmlxgantt/./node_modules/setimmediate/setImmediate.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/request.js","webpack://dhtmlxgantt/./node_modules/https-browserify/index.js","webpack://dhtmlxgantt/./node_modules/ieee754/index.js","webpack://dhtmlxgantt/./node_modules/base64-js/index.js","webpack://dhtmlxgantt/./sources/ext/export_api/index.ts","webpack://dhtmlxgantt/./sources/ext/drag_timeline/eventsManager.ts","webpack://dhtmlxgantt/./sources/ext/drag_timeline/index.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/selectedRegion.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/eventsManager.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/index.ts","webpack://dhtmlxgantt/./sources/ext/extensions_gpl.ts","webpack://dhtmlxgantt/./sources/dhtmlxgantt.gpl.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","obj","iterator","constructor","seed","helpers","plainObjectConstructor","toString","copy","result","isDate","Date","isArray","Array","length","isCustomType","apply","defined","mixin","target","source","force","f","undefined","uid","valueOf","functor","arguments","event","el","handler","capture","addEventListener","attachEvent","eventRemove","removeEventListener","detachEvent","elementPosition","elem","top","left","right","bottom","getBoundingClientRect","box","body","document","docElem","documentElement","parentNode","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","offsetWidth","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","y","Math","round","x","width","height","isVisible","node","display","visibility","getComputedStyle","style","currentStyle","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","a","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","getTargetNode","e","trg","tagName","srcElement","shadowRoot","composedPath","str","String","trim","this","replace","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","element","ShadowRoot","host","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","$position","sort","b","tabIndex","splice","getScrollSize","div","createElement","cssText","appendChild","clientWidth","removeChild","addClassName","removeClassName","split","regEx","RegExp","insertNode","newone","innerHTML","child","firstChild","removeNode","getChildNodes","css","ch","childNodes","len","out","push","toNode","getElementById","querySelector","locateClassName","classname","strict","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","clientX","clientY","isChildOf","parent","hasClass","classList","contains","test","closest","selector","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","console","error","hasShadowParent","getActiveElement","activeElement","getSelection","focusNode","units","second","minute","hour","day","week","month","quarter","year","getFullYear","getMonth","getDate","arrayFilter","arr","callback","filter","checkZeroId","id","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayIncludes","item","includes","arrayFind","find","arrayDifference","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","throttle","timeout","wait","setTimeout","pop","isValidDate","getTime","isStringObject","Function","isNumberObject","isBooleanObject","delay","timer","$cancelTimeout","$pending","args","clearTimeout","$execute","objectKeys","keys","isEventable","replaceValidZeroId","rootId","findBinary","array","prev","low","high","floor","__","g","eval","EventHost","_silent_mode","listeners","_silentStart","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","addEvent","settings","handlerId","once","originalHandler","removeEvent","clear","eventHost","eventName","thisObject","attachAll","callEvent","eventArguments","handlerName","concat","checkEvent","list","eventId","detachAllEvents","gantt","view","config","datastore","viewport","start","getItemIndexByTopPosition","end","y_end","count","max","min","dummy","log","BaseControl","render","set_value","get_value","focus","ctor","superCtor","super_","writable","configurable","TempCtor","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","BaseEditor","show","column","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","isWindowAwailable","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","pna","Duplex","util","inherits","Readable","Writable","v","method","options","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","self","highWaterMark","_readableState","destroyed","set","_destroy","err","cb","global","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","isBuffer","checked","buffer","val","isnan","type","data","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","utils","eventable","domHelpers","Cell","$container","$parent","$config","headerHeight","$gantt","$domEvents","_createDomEventScope","$id","$name","$factory","destructor","$view","$services","getService","detach","_headerClickHandler","detachAll","cell","scrollTo","html","getNode","padding","resize","_final","$preResize","topCont","topSize","getSize","minWidth","maxWidth","minHeight","maxHeight","setSize","_hide","cellIndex","moveView","hidden","$toHTML","content","header","raw","canCollapse","$fill","init","toggle","delegate","collapsed","gravity","getContentSize","$lastSize","contentX","contentY","_getBorderSizes","borders","horizontal","vertical","_currentBorders","_borders","_sizeHeader","_sizeContent","_setBorders","cssHash","xLayout","transform","$root","store","placeholder_task","exists","getItem","types","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isError","isFunction","isPrimitive","__extends","htmlHelpers","_super","SelectControl","sns","getHtmlSelect","_dhx_onchange","onchange","_focus","start_date","end_date","getItemTop","getItemHeight","startCoord","posFromDate","endCoord","x_end","smart_rendering","_smart_render","globalScope","copyProps","SafeBuffer","fn","arg1","arg2","arg3","createDropTargetObject","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","dndTaskId","targetTaskId","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","isLegacyRender","columnIndex","scale","viewPort","cellLeftCoord","cellRightCoord","firstCellIndex","lastCellIndex","_task_default_render","task","_isAllowedUnscheduledTask","_isTaskInTimelineLimits","getItemPosition","cfg","templates","$getTemplates","taskType","getTaskType","getBarHeight","milestone","controlsMargin","padd","item_attribute","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","rtl","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","template","itemId","$getConfig","state","getState","getTask","project","isSummaryTask","isSplitTask","open_split_tasks","$open","select_task","isSelectedTask","drag_id","drag_mode","touch_drag","link_source_id","link_target_id","highlight_critical_path","isCriticalTask","link_landing_area","from_id","from_start","link_from_start","to_start","link_to_start","allowDrag","isLinkAllowed","dragClass","_combine_item_class","task_class","styles","side","margin","_get_link_crossing_css","marginStyle","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","_waiAria","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","cssClass","text","abs","cond","leftside","$source","links","start_to_start","$target","finish_to_start","finish_to_finish","_get_conditions","ln","link","getLink","tp","min_date","marginLeft","max_date","marginRight","renderer","type_renderers","defaultRenderer","ScaleHelper","topPositionMixin","canvasRender","Timeline","$scaleHelper","_posFromDateCache","_timelineDragScroll","container","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","col_width","full_width","trace_x","rendered","attr","linksAttr","bindLinks","link_attribute","layers","_createLayerConfig","tasks","linkLayers","_attachLayers","dragTimeline","attach","dataHeight","scale_height","refresh","backgroundImage","rowStore","getTotalHeight","data_els","contentHeight","contentWidth","scrollHeight","scrollWidth","scrolled","_refreshScales","smart_scales","getViewPort","scales","_scales","_getScaleChunkHtml","taskFilter","expose","$ui","taskBar","hide_bar","taskSplitBar","append","taskRollupBar","taskBg","_taskLayers","_linkLayers","_bindStore","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","update","bar_layer","addLayer","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","getDatastore","linkRenderer","linkLayer","_linkRenderer","staticRender","_staticBgHandler","static_background","timeline_placeholder","staticBgContainer","$task_bg_static","insertBefore","staticBackgroundHeight","getScale","destroy","_clearLayers","removeLayer","_render_tasks_scales","scales_html","outer_width","_getScales","availWidth","autosize","autosize_min_width","cfgs","prepareConfigs","min_column_width","fromPos","toPos","scale_row_class","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","cells","date","format","date_to_str","startIndex","endIndex","inherit_scale_class","scale_cell_class","cssclass","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","dateValue","columnIndexByDate","assert","wholeCells","partCell","roundPos","_getNextVisibleColumn","columns","ignores","visibleDateIndex","_getPrevVisibleColumn","_getClosestVisibleColumn","days","trace_x_ascending","ignore_x","dateIndex","visibleIndex","visibleDate","transition","trace_index_transition","xLeft","xRight","rowHeight","taskId","isMilestoneRender","task_height","bar_height","task_height_offset","sqrt","primaryScale","getSubScales","sortScales","add","step","_timelineCacheAttached","_resetTopPositionHeight","_unbindStore","_resetHeight","events","mouseEvents","h","gridResize","rowResize","ColumnDnd","Grid","$state","gridAriaAttr","gridAttrString","gridDataAriaAttr","gridDataAttrString","_ganttConfig","reorderColumns","reorder_grid_columns","$grid","gridScaleRowAttrString","$grid_scale","$grid_data","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","_columnDND","_validateColumnWidth","numericWidth","outerWidth","getGridColumns","innerWidth","elasticColumns","grid_elastic_columns","scrollable","_setColumnsWidth","columnProperty","newColumnWidth","col","min_grid_column_width","columnsWidth","grid_width","_getGridWidth","_gridCacheAttached","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getColumnIndex","excludeHidden","hiddenIndexShift","getColumn","gridLine","gridTaskRowResizer","resize_rows","_refreshPlaceholderOnStoreUpdate","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","close","open","_getColumnWidth","min_width","new_width","max_width","_checkGridColumnMinWidthLimits","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","share","curExtra","_getColsTotalWidth","cols_width","parseFloat","unknown","gridWidth","autofit","diff","delta","changed","_setContentSize","locale","reverse","labels","lineHeigth","last","colWidth","_sort","direction","grid_header_class","label","gridScaleCellAttrString","lineHeight","dateHelper","services","getSum","sizes","to","setSumWidth","sum_width","parts","adjustSize","splitSize","full","cellSize","_isLegacyMode","scaleConfig","scale_unit","date_scale","subscales","_prepareScaleObject","legacyMode","initTemplate","min_coll_width","container_width","minDate","maxDate","heights","configs","main_scale","initScaleConfig","processIgnores","initColSizes","limitVisibleRange","unshift","alineScaleColumns","reverseScale","setPosSettings","indexes","trace_indexes","_ignore_time_config","skip_off_time","skip","probe","isWorkTime","display_count","min_col_width","line_height","cont_width","column_count","eachColumn","iterateScales","lower_scale","upper_scale","upper_dates","lower_dates","prevUpper","up","target_index","upper_start","upper_end","lower_start","lower_end","targetWidth","curr","tzOffset","getTimezoneOffset","_correct_dst_change","dates","lastDate","outDate","shared","attributes","_this","entry","_attributes","getHtmlOption","_getHtmlContainer","getHtmlButton","getHtmlDiv","getHtmlLabel","getHtmlInput","_getHtmlAttributes","tag","resourceTaskCache","$data","tasksStore","resource","resourceProperty","timeline","cacheKey","items","assignmentsPassed","timegrid","process_resource_assignments","resource_property","$role","getResourceAssignments","$resource_id","$task_id","getTaskBy","assignments","scaleUnit","scaleStep","precalculatedTimes","task_id","firstColumn","currDate","calendar","work_time","getTaskCalendar","cachedTimes","timestamp","calculateResourceLoadFromAssignments","timetable","resource_render_empty_cells","calculateResourceLoad","Layout","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenScrollbars","scrollbarsToHide","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","$scrollbarRepaint","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","newSizeValue","isGravity","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","$originalWidthStored","$originalWidth","$originalHeightStored","$originalHeight","isChild","cellId","alert","rows","cols","views","initUI","getCells","_cleanElSize","_getBoxStyles","computed","properties","boxSizing","clientHeight","MozBoxSizing","horPaddings","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","vertPaddings","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","borderBox","innerHeight","outerHeight","boxSizes","contentSizes","_sizes","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","parentVisibility","hide_empty","hideCell","cellView","marginSide","dx","dy","sourceTop","sourceHeight","targetTop","targetHeight","sourceLeft","sourceRight","targetLeft","targetRight","tmp","getLinkRectangle","coordinates","calculated","clearCache","initialized","getVisibleItems","rec","buildCache","visibleBoxes","ids","workunit_map_cache_1","workunit_object_cache_1","larger_units_helper_1","LargerUnitsCache","createCacheObject","Map","WorkUnitsMapCache","WorkUnitsObjectCache","IsWorkTimeArgument","ClosestWorkTimeArgument","CalculateEndDateArgument","duration","GetDurationArgument","getWorkHoursArguments","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","quickPositionHelperFactory","getItemTopCache","getRowTopCache","getItemHeightCache","totalHeightCache","getItemHeightCacheState","quickPosition","resetCache","newState","getCacheStateTotalHeight","shouldClearHeightCache","getRowTop","canUseSimpleCalculation","all","getIndexRange","itemIndex","getIndexById","parentId","_fillHeightCache","defaultHeight","row_height","eachItem","globalHeight","itemHeightCache","sumHeight","oldState","newValue","getHeight","totalHeight","countVisible","current","next","getIdByIndex","DurationFormatterNumeric","canParse","parse","copyLinkIdsArray","linkIds","targetHash","isLinkExists","copyLinkIds","getSubtreeLinks","isTaskExists","eachTask","getSubtreeTasks","PrimaryScaleHelper","_init_tasks_range","scale_offset_minimal","helper","_scale_range_unit","range","start_interval","resolveConfigRange","onlyProjectTasks","getTaskByTime","getSubtaskDates","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","powerArray","DataStore","isPlaceholderTask","TreeDataStore","_branches","pull","$initItem","loadedItem","initItem","existingItem","move","$index","root_id","$parentProperty","parentProperty","$getRootId","$openInitially","openInitially","visibleOrder","$create","fullOrder","_searchVisibleOrder","_indexRangeCache","_eachItemMainRangeCache","_getItemsCache","_skip_refresh","getConfig","splitParents","splitItems","taskOpenState","taskVisibility","haveSplitItems","_attachDataChange","_isSplitItem","canOpenSplitTasks","$split_subtask","$expanded_branch","_buildTree","setParent","_add_branch","$level","calculateItemLevel","$local_index","_updateOrder","hasChild","loaded","_parseInner","_addItemInner","_move_branch","$rendered_parent","_changeIdInner","oldId","newId","_replace_branch_child","_traverseBranches","branch","_removeItemInner","sid","tindex","source_pid","tbranch","placeholderIds","tid","_moveInner","childId","pid","getSiblings","siblings","previousSibling","clearAll","level","eachParent","_setParentInner","new_pid","silent","_eachItemCached","cache","_eachItemIterate","startId","itemsStack","useCache","startItem","parentsHash","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","els","temp","rule","renderedParent","actualParent","_skipTaskRecalculation","$powerArray","$removeAt","$remove","$find","$insertAt","$each","master","$map","$filter","_filterRule","copyOnParse","isSilent","updateItem","removeItem","order","data_size","addItem","changeId","sindex","$destroyed","unselect","alreadySilent","arraysEqual","arr1","arr2","quick","skipFilter","_quick_refresh","_mark_recompute","oldOrder","serialize","filteredOrder","getItems","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","updPerSecond","_on_timeout","ceil","createScope","eventScope","staticArray","extend","FormData","__webpack_amd_options__","punycode","Url","protocol","slashes","auth","port","hostname","query","pathname","path","href","urlParse","resolve","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","url","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","encodeURIComponent","escape","qm","stringify","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","Transform","_transformState","afterTransform","er","ts","transforming","writecb","writechunk","rs","reading","needReadable","_read","needTransform","writeencoding","sync","_transform","flush","_flush","prefinish","stream","chunk","_write","_this2","err2","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","_byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","scope","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","Stream","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","getBuffer","_","hasInstance","pipe","_isUint8Array","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","emitErrorNT","readableDestroyed","writableDestroyed","endEmitted","EventEmitter","_events","_maxListeners","defaultMaxListeners","setMaxListeners","context","listener","newListener","warned","trace","fired","listenerCount","evlistener","emitter","ReadableState","EElistenerCount","debugUtil","debug","debuglog","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","getPrototypeOf","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","wrap","paused","_fromList","PassThrough","capability","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","IncomingMessage","xhr","response","fetchTimer","_mode","headers","rawHeaders","trailers","rawTrailers","_fetchResponse","statusCode","status","statusMessage","statusText","writableStream","WritableStream","Promise","reject","_destroyed","_resumeFetch","abort","pipeTo","reader","getReader","then","_xhr","_pos","responseURL","getAllResponseHeaders","_charset","overrideMimeType","mimeType","charsetMatch","_onXHRProgress","readyState","VBArray","responseBody","toArray","responseText","newData","MSStreamReader","onprogress","onload","readAsArrayBuffer","fetch","ReadableStream","abortController","AbortController","blobConstructor","Blob","getXHR","XDomainRequest","checkTypeSupport","responseType","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","vbArray","ClientRequest","statusCodes","request","opts","defaultProtocol","location","toUpperCase","req","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","dateString","aria-label","_taskCommonAttr","tooltip_text","$dataprocessor_class","drag_move","taskRowAttr","order_branch","linkAttr","linkTypes","toStart","fromStart","start_to_finish","drag_link","gridSeparatorAttr","rowResizerAttr","lightboxHiddenAttr","lightboxVisibleAttr","lightboxAttr","lightboxButtonAttrString","buttonName","role","tabindex","lightboxHeader","headerText","lightboxSelectAttrString","time_option","years","months","hours","minutes","lightboxDurationInputAttrString","section","column_duration","aria-valuemin","inlineEditorAttr","multiselect","attrs","new_task","reorderMarkerAttr","removeAttribute","gridCellAttrString","textValue","editor","gridAddButtonAttrString","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","payload","wai_aria_attributes","_extend_to_optional","lightbox_block","optional_time","mapping","_resolve_default_mapping","disable","enable","disabled","update_block","_lightbox_id","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","TypeselectControl","typeKey","typeValue","oldOnChange","changeLightboxType","_lightbox_new_type","ConstraintControl","isNonTimedConstraint","constraint_types","ASAP","ALAP","toggleTimeSelect","timeSelects","isNonTimed","getTimePicker","typeSelect","_time_format_order","_eventsInitialized","constraintDate","constraint_date","_fill_lightbox_select","constraintType","constraint_type","getConstraintType","getTimePickerValue","ParentControl","_display","item_id","allow_root","root_label","_filter","map_to","tmpDom","newOptions","onselect","replaceChild","DurationControl","getFormatter","formatter","_getStartDate","getElementsByTagName","_getDuration","singleDate","single_date","readonly","ariaAttr","durationInputClass","duration_val","inps","btns","endspan","_calc_date","task_end_date","task_date","_change_duration","onclick","onkeydown","charCode","keyCode","which","constants","KEY_CODES","DOWN","UP","calculateDuration","startDate","endDate","RadioControl","radio","default_value","CheckboxControl","single_value","checkboxes","TimeControl","auto_end_date","_update_lightbox_select","selects","autofix_end","_get_timepicker_step","_getEndDate","TextareaControl","_get_input","TemplateControl","ResourcesControl","getHtmlButtons","buttons","floatRight","_migrate_buttons","getHtmlTimePickerOptions","start_year","end_year","tdate","timeFormat","year_range","month_full","first","_time_values","time_picker","setTime","getHours","getMinutes","_lightbox_methods","_lightbox_template","_lightbox_root","registerProvider","lightbox","showLightbox","getLightbox","_center_lightbox","showCover","_fill_lightbox","round_dnd_dates","_is_chart_visible","time_step","getLabel","sections","updateCollection","list_name","collection","serverList","resetLightbox","getLightboxType","_lightbox_type","lightboxDiv","fullWidth","ds","classNames","cspEnvironment","csp","salesforceEnvironment","setParentNode","_lightbox","_is_lightbox_timepicker","wide_form","buttons_left","buttons_right","drag_lightbox","onmousedown","_ready_to_dnd","onselectstart","cursor","_init_dnd_events","_render_sections","backup_overflow","overflow","labelBlock","inputBlock","inputId","bindLabelsToInputs","_init_lightbox_events","block","con","lightbox_additional_height","scroll_top","scroll_left","view_height","_cover","lightbox_events","gantt_save_btn","_save_lightbox","gantt_delete_btn","$click","hideLightbox","gantt_cancel_btn","_cancel_lightbox","sec","buttonTarget","SPACE","shiftKey","click","edit_save","edit_cancel","getLightboxValues","$new","_update_flags","refreshData","addTask","getTaskIndex","refreshTask","updateTask","hideCover","_custom_lightbox","_set_lightbox_values","lightbox_header","task_time","getLightboxSection","getValue","setValue","get_template_control","control","get_select_control","get_textarea_control","get_time_control","eventElement","_move_while_dnd","_finish_dnd","_dnd_start_lb","gantt_unselectable","lb","now","pageX","pageY","_lb_start","ariaAttrs","date_part","time_format","getTimeFormat","limit_time_select","first_hour","last_hour","setHours","needSetTime","mapOffset","checkbox","resources","constraint","typeselect","_simple_confirm","message","ok","confirm","type_value","_silent_redraw_lightbox","oldType","formData","updTask","scrollX","scrollState","visible","getTaskDND","tasksDnD","_tasks_dnd","touch_feedback","touch_feedback_duration","_prevent_touch_scroll","_touch_feedback","vibrate","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","touchHandlers","names","accessor","ignore","dblclicktime","actionMode","scrollMode","actionStart","longTapTimer","currentDndId","dndNodes","targetView","start_drag","on_mouse_move","preventDefault","cancelBubble","newScrollState","scrollView","block_action","allViews","$layout","findTargetView","_locate_css","locate","on_mouse_down","renders","_getTaskLayers","isTaskVisible","task_attribute","cloneNode","cloneTaskRendered","_start_dnd","_touch_drag","remove","on_mouse_up","onDoubleClick","USE_KEY","_defaultScales","TimelineZoom","zoomIn","getCurrentLevel","setLevel","zoomOut","_levels","_activeLevelIndex","getLevels","zoomLevel","_getZoomIndexByName","_setLevel","levelName","_getVisibleDate","scrollPos","_visibleDate","cursorOffset","nextConfig","chartConfig","cursorDate","newPosition","middleDate","_attachWheelEvent","_domEvents","_useKey","_handler","passive","_defaultHandler","timelineOffset","wheelUp","deltaY","wheelDelta","stopPropagation","_setScaleSettings","_setScaleDates","_initialStartDate","_initialEndDate","activeLevelIndex","_mapScales","levels","_minColumnWidth","minColumnWidth","_maxColumnWidth","maxColumnWidth","_widthStep","widthStep","useKey","_initialized","trigger","_stepUp","_stepDown","nextLevel","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","vs","av","grid","border","gridId","gridObj","dhtmlXCellObject","jQuery","$","methods","dhx_gantt","each","newgantt","Gantt","getGanttInstance","isHeadless","scrollRange","scrollStep","scrollDelay","scrollSpeed","interval","isMove","delayTimeout","startPos","started","eventPos","isDisplayed","isScrollState","dragMarker","isResize","isLink","isClickDrag","autoscroll","defineDelayTimeout","speed","autoscroll_speed","tick","autoscroll_delay","defineScrollInterval","autoscrollInterval","isScroll","targetTouches","gridDrag","posX","posY","need_scroll","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","zoom","skins","link_line_width","link_arrow_size","_second_column_width","_third_column_width","material","_redefine_lightbox_buttons","getTaskNode","indx","broadway","_config_buttons_left","_config_buttons_right","terrace","meadow","skyblue","_get_skin","skin","skinset","_configure","resetSkin","getTimeline","getGrid","getBaseCell","getVerticalScrollbar","baseCell","getAttachedScrollbar","getHorizontalScrollbar","attachedScrollbar","DEFAULT_VALUE","tryCall","fallback","getTaskTop","getTaskPosition","getTaskBarHeight","getTaskHeight","roundTaskDates","domAttr","getLinkNode","oldH","oldV","scrollHorizontal","scrollVertical","verticalViews","_getLinkedViews","horizontalViews","commonViews","viewId","$skipSmartRenderOnScroll","newV","newH","showDate","date_x","scroll_to","task_scroll_offset","showTask","leftPos","_scroll_state","gridCell","timelineCell","x_pos","y_pos","scroll_size","x_inner","y_inner","scrollVer","scrollHor","horState","verState","getLayoutView","cellName","scrollLayoutCell","horizontalScroll","verticalScroll","addTaskLayer","addLinkLayer","initializer","_legacyGridResizerClass","layout","resizers","gridResizer","onCreated","mainTimeline","show_chart","colsWidth","hideGrid","show_grid","grid_limits","ganttContainerWidth","verticalScrollbarWidth","gridOverflow","original_grid_width","skinSettings","_initScrollStateEvents","_getVerticalScrollbar","_getHorizontalScrollbar","oldPos","newPos","$scroll_ver","$scroll_hor","_findGridResizer","gridFirst","_getSiblings","_behind","_front","onInitialized","resizeInfo","initialWidth","prevCellWidth","nextCellWidth","viewCell","limits","newBehindSize","newFrontSize","oldBackSize","oldFrontSize","newBackSize","oldSize","onDestroyed","initLinksDND","_link_landing","_link_target_task","_link_target_task_start","_link_source_task","_link_source_task_start","markerDefaultOffset","scrollDefaultSize","getDndState","DnD","dnd","sensitivity","updates_per_second","mousemoveContainer","getLinePos","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","getPosition","markerSize","getMarkerSize","viewportSize","getVieportSize","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","ganttOffsetY","updateMarkedHtml","drag_link_class","resetDndState","showDirectingLine","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","tan","angle","atan","coordinateCircleQuarter","PI","sin","cos","ieTransform","shiftLeft","shiftTop","sX","eX","sY","eY","_dir_start","dd","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","eventTarget","_dir_end","targetChanged","_get_link_type","addLink","createLinkDND","createTaskDND","round_task_dates","dragMultiple","before_start","before_finish","after_finish","_handlers","clear_drag_state","set_actions","drag_from_start","evs","stage","_move","_resize","_resize_progress","start_x","start_y","coords_x","_drag_task_coords","minDurationInUnits","_calculateMinDuration","min_duration","_init_task_timing","diffValue","_find_max_shift","dragItems","correctShift","minX","maxX","maxShift","minShift","multipleDragShift","new_start","new_end","obj_s_x","obj_e_x","_mouse_position_change","_is_number","_update_on_move","_update_item_on_move","original","curr_date","dragHash","_isMultiselect","getSelectedTasks","dragProject","drag_project","initialDrag","childDrag","_bulk_dnd","_update_parents","_get_drag_mode","_fix_dnd_scale_time","fixStart","correct_work_time","roundDate","fixEnd","_fix_working_times","getClosestWorkTime","correctTaskWorkTime","_finalize_mouse_up","_fireEvent","_dhx_changed","finalizingBulkMove","moveCount","doFinalize","batchUpdate","modes","dragProperty","selectedTasksIds","selectedTask","_addSubtasksToDragMultiple","params","drag_state","drag_multiple","summaryId","taskDnD","linkDnD","_linksDnD","_tasksDnD","_attachDomEvents","_attachStateProvider","extendDom","_clearDomEvents","_clearStateProvider","_delete_link_handler","question","link_description","confirm_link_deleting","deleteLink","coll","coll_date","scale_step","unregisterProvider","gridToPageCoordinates","gridPos","setWidthWithinContainer","containerSize","removeLineHighlight","markerLine","highlightPosition","ePos","gridHeight","getTaskMarkerPosition","pointerEvents","markerFolder","maxBottom","folderHighlightWidth","highlightFolder","linePos","indentNode","indent","itemTop","itemHeight","childCount","getLineMarkerPosition","markerLineTop","highlightRow","dropTarget","relTargetPos","eventTop","findClosesTarget","allowedLevel","targetLevel","findTargetAbove","findTargetBelow","targetTask","targetAbove","targetBelow","rootLevel","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","checkPlaceholderTask","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","$drop_target","doctype","minTop","firstVisibleTaskIndex","firstVisibleTaskId","firstVisibleTaskPos","hiddenTaskPart","gridPosition","gridBottom","placeholderRowHeight","getTargetTaskId","lockLevel","order_branch_free","getStore","lastTaskOfLevel","last_item","_getGridPos","_getTargetY","_getTaskByY","dropIndex","gridDataSizes","targetY","over","nextId","prevId","rowDnd","rowDndMarker","extendGantt","inlineEditors","_inlineEditors","createEditors","initEvents","clearEvents","scroll_on_click","_is_icon_open_click","conf","sorting_method","callHandler","createTask","totalWidth","getRowRectangle","getVisibleRange","resize_el","task_grid_row_resizer_attribute","getRectangle","getVisibleCellsRange","isColumnVisible","resourceTimetable","renderBar","renderConnection","prevLevel","getResourceLoad","renderedHistogramCells","renderedHistogramRows","renderedHistogramCapacity","detachRenderedHistogramCell","renderedRow","renderCapacityElement","capacityMatrix","maxCapacity","renderedElement","capacityElement","capacity","colStart","colEnd","bar","connection","renderHistogramLine","renderHistogramCell","histogram_cell_class","histogram_cell_label","histogram_cell_allocated","smartRendering","histogram_cell_capacity","row","checkedColumns","renderedCell","renderedResourceLines","renderResourceLineCell","resource_cell_class","resource_cell_value","detachRenderedResourceLine","aria","date_grid","tree","grid_indent","grid_blank","grid_file","grid_open","grid_folder","align","justifyContent","center","getGlobalTaskIndex","grid_row_class","css_template","isSelected","onrender","rowNode","cellNode","external_render","adapter","isElement","renderElement","isInViewPort","drawer","current_pos","dirs","down","point","get_lines","dots","line_to","get_path","line","_get_line","get_wrapper_sizes","wrapper_size","link_wrapper_width","get_line_sizes","line_size","marginTop","render_line","innerPos","get_direction","vect","path_builder","point_to","get_points","pt","get_endpoint","xy","shiftX","lineType","get_line_type","forward","sign","milestoneHeight","lines","cssTemplate","link_class","isCriticalLink","endpoint","_render_link_arrow","borderColor","placeholderConfig","lastTaskId","placeholderTask","unscheduled","calendar_id","bgPlaceholder","renderedCells","isRendered","detachRenderedCell","getCellClassTemplate","task_cell_class","warn","timeline_cell_class","getCellContentTemplate","timeline_cell_content","renderOneCell","contentTemplate","cssTemplateContent","htmlTemplateContent","customCell","static_background_cells","cellCssTemplate","cellHtmlTemplate","show_task_cells","odd","task_row_class","placeholderTop","placeholderHeight","prepareData","createBaseBarRender","defaultRender","renderedNodes","checkVisibility","generateChildElement","childCopy","$rendered_at","getKey","renderParentId","rollup","$rollup","itemNode","rollupKey","isBarInViewport","isInViewPortParent","isInViewPortChild","isProject","resetProjectDates","shouldUseSplitRendering","splitKey","mapTo","keepDatesOnEdit","decreaseStartDate","keepDurationOnEdit","schedule_from_end","defaultActionOnEdit","TextEditor","formatters","durationFormatter","PredecessorEditor","linkFormatter","parseInputString","predecessors","delimiter","formatPredecessors","formatLinkKey","lag","getLinksDiff","predecessorCodes","selectedLinks","getSelectedLinks","existingLinksSearch","linkId","linksToAdd","linkKey","linksToDelete","linksDiff","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","minValue","maxValue","minAttr","maxAttr","SelectEditor","optionsHtml","NumberEditor","controller","onBlurDelay","keyNav","keyboardNavigation","activeCell","locateCell","columnName","editorState","getEditorConfig","startEdit","command","hasEditor","keyboard","preventKeyNav","ENTER","ctrlKey","metaKey","ESC","LEFT","RIGHT","editorType","DELETE","TAB","editPrevCell","editNextCell","modifiers","anyModifier","alt","ctrl","meta","getCommandHandler","onShow","onHide","isChanged","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","getMapping","keyboard_navigation_cells","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","durationEditorFactory","linkedPropertiesProcessor","initConfigs","editor_types","number","predecessor","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","findVisibleIndex","updateTaskDateProperties","ganttHandlers","_itemId","_columnName","_editor","_editorType","_placeholder","batch_update","editorConfig","_getItemValue","oldValue","inline_editors_date_processing","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","moveTask","nextItem","editNextRow","skipReadonly","editPrevRow","ScrollbarCell","SCROLL_MODIFIER_KEYS","_scrollHorizontalHandler","_scrollVerticalHandler","_outerScrollVerticalHandler","_outerScrollHorizontalHandler","_mouseWheelHandler","_isHorizontal","scrollPosition","_isVertical","_initVertical","_initHorizontal","_initMouseWheel","_initLinkedViews","_getRootParent","_eachView","eachCell","_updateLinkedViews","scrollHorizontally","_scrolling","codeScrollLeft","scrollVertically","_wheel_time","_oldLeft","_getScrollSize","outerSize","isHorizontal","linked","scrollProperty","innerSizeProperty","outerProperty","_getScrollOffset","cellScrollSize","nonScrollableSize","outerScroll","innerScroll","scrollSizes","_setScrollSize","toggleVisibility","_getScaleOffset","parentLayout","_oldTop","_checkWheelTarget","targetNode","connectedViews","wheelSpeed","wheelSpeedConfig","wheel_scroll_sensitivity","ff","deltaX","wheelDeltaX","multiplier","deltaMode","wx","wy","horizontalScrollModifier","horizontal_scroll_key","oldLeft","detail","oldTop","ViewCell","childConfig","createView","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","barRectangle","sourceBox","targetBox","genericViewPortChecker","basicGetRectangle","basicGetRange","task_area_pulls","task_area_renderers","getRenderer","renderMethod","updateMethod","renderCallbackMethod","specializedViewPortChecker","layer_attribute","render_item","layerView","viewConfig","rendererViewPort","dom","useBuffer","remove_item","clear_container","get_visible_range","prepare_data","render_items","createDocumentFragment","vis","itemsSearch","renderedItems","newElements","update_items","nodesToRemove","renderCalledFor","restore","replace_item","newNode","change_id","oldid","newid","clearRenderers","renderFactoryProvider","mergeFilters","filter_methods","filter_method","renderFactory","createGroup","getContainer","relativeRoot","defaultFilters","initLayer","renderGroup","tempCollection","renderers","filters","getLayers","_add","pending","topmost","requestUpdate","onUpdateRequest","eachLayer","createLayerFactory","getVisibleTaskRange","getVisibleLinksRangeFactory","isLinkInViewport","previusSiblingContainer","defaultContainerSibling","setService","rangeFunction","removeTaskLayer","_clearTaskLayers","_getLinkLayers","removeLinkLayer","_clearLinkLayers","createMouseHandler","eventHandlers","doubleclick","contextMenu","addEventTarget","onClick","findEventHandlers","callEventHandlers","_multiselect","selectTask","onContextMenu","returnValue","delegateHandlers","details_on_dblclick","onMouseMove","_last_move_event","domEvents","reset","elementHandlers","extendSettings","parentSettings","own","$extendedConfig","setPrototypeOf","parentView","parentConfig","parentTemplates","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","ResourceGrid","ResourceTimeline","ResourceHistogram","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderRollupTaskBar","renderTaskBg","renderLink","gridRenderer","resourceMatrixRenderer","resourceHistogramRenderer","gridTaskRowResizerRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","resourceRow","resourceHistogram","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","info","expire","timers","getFirstDefined","values","_createBox","cancel","contentId","message_ok","message_cancel","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","hideAll","popups","modalbox","codeHelpers","_eventRemoveAll","uiApi","$mouseEvents","createLayoutFacade","targetAttribute","_locateHTML","initial_scroll","firstTask","getTaskByIndex","activePlugins","plugins","availablePlugins","auto_scheduling","click_drag","clickDrag","critical_path","drag_timeline","export_api","exportToPDF","fullscreen","grouping","groupBy","keyboard_navigation","addMarker","eachSelectedTask","overlay","quick_info","quick_info_content","tooltip","tooltips","undo","plugin","default","month_short","day_full","day_short","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","section_type","column_wbs","column_text","column_start_date","column_add","link_start","link_end","type_task","type_project","type_milestone","weeks","section_constraint","asap","alap","snet","snlt","fnet","fnlt","mso","mfo","resources_filter_placeholder","resources_filter_label","empty_state_text_link","empty_state_text_description","LocaleManager","addLocale","_locales","getLocale","locale_ar_1","locale_be_1","locale_ca_1","locale_cn_1","locale_cs_1","locale_da_1","locale_de_1","locale_el_1","locale_en_1","locale_es_1","locale_fa_1","locale_fi_1","locale_fr_1","locale_he_1","locale_hr_1","locale_hu_1","locale_id_1","locale_it_1","locale_jp_1","locale_kr_1","locale_manager_1","locale_nb_1","locale_nl_1","locale_no_1","locale_pl_1","locale_pt_1","locale_ro_1","locale_ru_1","locale_si_1","locale_sk_1","locale_sv_1","locale_tr_1","locale_ua_1","en","ar","be","ca","cn","cs","da","de","es","fa","fi","fr","he","hr","hu","it","jp","kr","nl","no","pl","ro","ru","si","sk","sv","tr","ua","_dp","check","show_errors","listenWindowResize","resizeDelay","resizeTimeout","container_resize_timeout","container_resize_method","lowlevelResizeWatcher","repaintGantt","previousHeight","previousWidth","getPropertyValue","resizeWatcher","contentWindow","addResizeListener","calculateScaleRange","invalidContainerMessage","validateNode","isHTMLElement","_reinit","_quickRefresh","stores","_getDatastores","dropLayout","rebuildLayout","storeNames","resetLayout","initTemplates","edit","delete","confirm_deleting_title","deleteTask","preserveScroll","preserve_scroll","new_pos","verticalScrollbar","setSizes","getTaskRowNode","prevOffset","time_unit","offsetChanged","activate","_cached_functions","update_if_changed","critical_path_mode","wrap_methods","_prefetch_originals","prefetch","methodname","optimizer","argumentsArray","get_arguments_hash","cached_values","has_cached_value","get_cached_value","cache_value","arguments_hash","is_date","getUTCDate","stringify_argument","deactivate","setup","override_gantt","gantt_methods","optimize_render","deactivTimeout","checkType","isUnscheduledTask","show_unscheduled","taskStart","taskEnd","_getProjectEnd","project_end","_getProjectStart","project_start","getDefaultTaskDate","parent_id","_set_default_task_timing","details_on_create","parseDate","getSelectedId","getTaskTimingMode","task_type","$no_start","$no_end","$rendered_type","updateTaskTiming","$effective_calendar","getSubtaskInfo","task_mode","dirty","$calculate_duration","effectiveCalendar","inherit_calendar","taskMode","taskTiming","getSubtaskDuration","updateAll","has_changed","oldStart","oldEnd","upper","lower","colIndex","steps","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","_hasDuration","hasDuration","mergeCalendars","createCalendar","addCalendar","getCalendar","getCalendars","getResourceCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","fixedUnits","hasWorkTime","createArgumentsHelper","NoWorkTimeCalendar","TimeCalculator","$disabledCalendar","_getCalendar","manager","dynamicCalendars","getCalendarIdFromMultipleResources","resourceAssignments","resource_id","getResourcesCalendarKey","tempCalendar","assignment","resourceId","mergeResourceCalendars","isLegacyResourceCalendarFormat","resourceCalendarsProperty","getResourceProperty","resourceCalendarsConfig","resource_calendars","propertyName","getCalendarIdFromLegacyConfig","calendarId","DateDurationCache","_getCacheObject","_cache","unitCache","stepCache","yearCache","durations","endDates","_endDateCacheKey","_durationCacheKey","getEndDate","compute","startDateTimestamp","resultTimestamp","getDuration","endDateTimestamp","getMinutesPerWeek","weekStart","_weekCache","has","_calendar","minutesPerWeek","week_start","getHoursPerDay","getMinutesPerMonth","monthStart","_monthCache","minutesPerMonth","nextMonth","subCache","setItem","rawValue","CalendarWorkTimeStrategy","_workingUnitsCache","_largeUnitsCache","_dateDurationCache","_worktime","_cached_timestamps","_cached_timestamps_count","_clearCaches","_getUnitOrder","_resetTimestampCache","_timestamp","UTC","_checkIfWorkingUnit","_is_work_day","_getWorkHours","_is_work_hour","startHour","endHour","_getTimeOfDayStamp","dayEnd","_is_work_minute","checkTime","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","checkFirst","checkLast","isLastStep","_isWorkTime","unitOrder","biggerTimeUnit","_getClosestWorkTimeFuture","_getMinutesPerHour","hourStart","hourEnd","worktimes","_getMinutesPerDay","durationMinutes","durationHours","_getWorkUnitsForRange","getUnitsPerDay","_getMinutesBetweenSingleDay","_getIntervalTimestamp","minuteFrom","minuteTo","_getMinutesBetween","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","_getHoursBetween","_setConfig","_parseSettings","haveCustomWeeks","customWeeks","customWeeksRangeStart","customWeeksRangeEnd","customWeeksBoundaries","_parseHours","minCustomRangeStart","maxCustomRangeEnd","customTime","rangeStart","rangeEnd","fromReadable","toReadable","currentWeek","_tryChangeCalendarSettings","backup","JSON","_arraysEqual","_compareSettings","mySettings","thatSettings","myDays","otherDates","myHours","otherHours","myWeek","thatWeek","getDay","getSeconds","endHours","timestampRanges","timerangeConfig","startMinute","endMinute","durationSeconds","calendarConfig","reset_calendar","isWorkUnit","dateKey","mult","_calculateEndDate","_calculateMinuteEndDate","_subtractMinuteDate","_calculateHourEndDate","_addInterval","stopAction","added","dstShift","_addHoursUntilDayEnd","rangeHours","addHours","intervalEnd","durationLeft","setMinutes","setSeconds","hoursPerDay","_addMinutesUntilHourEnd","hour_start","rangeMinutes","addMinutes","_subtractMinutesUntilHourStart","hourStartTimestamp","initialDateTimestamp","minutePrecision","_isMinutePrecision","addedInterval","calculatedDay","daySchedule","minutesInDay","dayStart","iterateFromDayEnd","isWorkHour","workInterval","prevInterval","minutesInHour","_getClosestWorkTimePast","times","lastInterval","_getClosestWorkTime","inputDate","closestFuture","closestPast","_getClosestWorkTimeGeneric","_findClosestTimeInDay","resultDate","fromDayEnd","_getClosestWorkMinute","increment","worktime","exceptions","hasRegularHours","_checkWorkHours","dayConfig","hoursArray","WorkTimeCalendarMerger","_getIntervals","_toHoursArray","intervalsArray","formatHHMM","secondsValue","minutePart","toFixed","_intersectHourRanges","baseArray","overridesArray","base","_mergeAdjacentIntervals","_mergeHoursConfig","firstHours","secondHours","merge","firstConfig","secondConfig","mergedSettings","firstDate","secondDate","CalendarMergeHelper","legacyResourceCalendarConfig","dynamicResourceCalendars","CalendarManager","_calendars","_legacyConfig","_isLegacyConfig","createDefaultCalendars","_convertWorkTimeSettings","calendars","mergeHelper","_createCalendarFromConfig","apiCore","preparedConfig","parentCalendar","defaults","fulltime","_getOwnCalendar","calendar_property","dynamic_resource_calendars","calendarsConfig","taskObject","groupMode","group_mode","currentTask","isCalendar","restoreConfigCalendars","possibleCalendar","every","worktimeFacadeFactory","facade","jsonParseError","load","_load_url","cl","_load_type","ajax","on_load","xmlDoc","resp","_process_loading","collections","_load_collections","resourcesStore","assignmentsByTasks","attachAssignmentsToTasks","linksStore","collections_loaded","option","option_key","$ignore","json","dhx_security","security_key","serializeTask","_copyObject","serializeLink","_copyLink","xml_format","format_date","rawLinks","getLinks","xml","_xmlNodeToJSON","attrs_only","nodeValue","_getCollections","loader","xpath","itms","_getXML","toptag","getXMLTopNode","xmltop","xmlParseError","skey","oldxml","startdate","est","enddate","predecessortasks","editable_property","readonly_property","getGridColumn","ScrollableGrid","_scrollOrder","getCurrentX","_dnd","_scrollView","attachEvents","isScrollable","gridBoundingRect","maxLeft","minLeft","currentX","autoscrollRight","autoscrollStart","autoscrollLeft","autoscrollStop","getCorrection","scrollable_grid_1","ColumnsGridDnd","_targetMarker","calculateCurrentPosition","eventX","DND","_scrollableGrid","_draggedCell","draggedColumn","draggedIndex","_gridConfig","_originAutoscroll","_dragX","columnIndexes","findColumnsIndexes","targetColumn","cleanTargetMarker","setMarkerPosition","drawTargetMarker","_a","xBefore","xAfter","columnRelativePos","draggedId","currentColumn","startX","endX","relativeX","gridOffset","_obj","nextPosition","column_grid_dnd_1","_task_grid_row_resize","row_before_start","row_id","row_after_start","row_drag_move","pointerPosition","markerStartPosition","marker_height","minPointerPosition","min_task_grid_row_height","row_drag_end","oldItemHeight","finalHeight","cachedRowHeight","canUseSimpleCalc","_getRowHeight","_refreshState","globalRowHeight","visibleColumns","loadedBranches","oldHasChildren","branch_loading","branch_loading_property","needLoading","requestData","show_empty_state","emptyStateElement","isGanttEmpty","renderContent","placeholderContainer","clickEvents","attachAddTaskEvent","detachAddTaskEvents","oldNodes","emptyStateElementNode","LinkFormatterSimple","_getWBSCode","_linkReg","linkPart","_findSource","_gantt","pred","getWBSCode","reqTemplate","wbs","getTaskByWBSCode","DurationFormatter","LinkFormatter","enter","callIfEnabled","auto_types","checkTaskType","changedTypes","targetType","getTaskTypeToUpdate","$needsUpdate","updateParentTypes","getUpdatedTypes","applyChanges","delTaskParent","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","updateTaskType","insertPlaceholder","placeholders","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","isPlaceholderLink","action","commands","entity","resourceAssignmentsProperty","resource_assignment_store","resourceAssignmentFormats","auto","singleValue","valueArray","resourceValueArray","assignmentsArray","resourceAssignmentFormat","assignmentModes","fixedDates","fixedDuration","initAssignmentFields","initDelay","timing","_assignmentTimeFromTask","resourceAssignmentsStore","createDatastore","_makeAssignmentsFromTask","detectFormat","usedIds","defaultMode","_updateTaskBack","_assignAssignments","getTaskAssignments","_loadAssignmentsFromTask","taskAssignments","_syncAssignments","storeAssignments","taskValues","assignmentsStoreValues","inBoth","inTaskNotInStore","inStoreNotInTask","taskOwner","ownerId","foundOwnerAssignment","taskSearch","storeSearch","processedIds","inTask","inStore","diffAssignments","ignoreFields","assignmentHasChanged","updateAssignment","_syncOnTaskUpdate","assignmentsStore","totalAssignments","needUpdate","needUpdateFor","undoBatchCancel","assignmentsHash","deleteIds","idsSearch","_syncOnTaskDelete","resourceAssignmentsCache","resourceTaskAssignmentsCache","taskAssignmentsCache","searchTaskId","resourceTaskCacheKey","getTaskResources","uniqueResources","updateTaskAssignments","createResourceMethods","singleResourceCacheBuilt","falsyValuePrefix","random","resourceHashFunction","getCacheKey","resourceIds","typeFilter","getResourceTasks","matchingResources","resourceValue","selectAssignments","owners","propertyValue","filterResourceTasks","resourcePlugin","renderEditableLabel","editable","renderSummaryLabel","sum","reduce","editableResourceCellTemplate","editableResourceCellClass","getSummaryResourceAssignments","resource_store","childResource","initEditableDiagram","timeoutId","makeEditable","cancelAnimationFrame","requestAnimationFrame","contentEditable","assignmentEditInProcess","blur","strValue","innerText","rowId","assignmentId","parse_date","assignmentStore","saveState","nextChunk","createHelper","dataprocessor_assignments","dataprocessor_resources","editable_resource_diagram","fetchTasks","lightbox_resources","lightboxOptions","resourceStoreConfig","initItems","storeType","$resourcesStore","lightboxOptionsFnc","defaultResourceCellClass","defaultResourceCellTemplate","_needRecalc","_isRecalcNeeded","_isGroupSort","_calcWBS","$virtual","$wbs","_setWBSCode","getByWBSCode","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","SimpleStorage","_storage","storeItem","getStoredItem","dp","getUserData","userdata","setUserData","_change_id","_ganttMode","changeTaskId","changeLinkId","_row_style","_delete_task","_sendTaskOrder","setDp","DataProcessorEvents","$dp","_dataProcessorHandlers","treeHelper","cascadeDelete","clientSideDelete","cascade_delete","deleteAfterConfirmation","needDbDelete","needCascadeDelete","dpMode","cascade","sendAllData","_tSend","_waitMode","itemLinks","_links","getTaskLinks","updateLink","_tMode","_serverProcessor","substring","serverProcessor","pluralizedMode","urlSeparator","upd","isExist","objData","xml_date","handleResourceCRUD","handleResourceAssignmentCRUD","updated","updatedRows","clientOnly","_in_progress","insertedTasks","pendingAssignments","putAssignmentToQueue","insertResourceAssignment","insertResource","data_processor_events_1","extend_gantt_1","simple_storage_1","createDataProcessor","router","tMode","DataProcessor","setTransactionMode","serverProcessorURL","action_param","autoUpdate","_headers","_payload","_postDelim","_routerParametersFormat","_invalid","messages","inserted","deleted","invalid","invalid_cell","enableUTFencoding","_serializeAsJson","_router","_utf","getSyncState","findRow","existing","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","pendingUpdateModes_1","_beforeSendData","_getRowData","_serializeAsJSON","serialize_one","stack","pref","serialized","_forEachUpdatedRow","_sendData","_getAllData","pattern","defineAction","_uActions","afterUpdateCallback","btag","ganttMode","correct","originalSid","afterUpdate","_xml","getGanttMode","reqUrl","filePath","processCallback","finalizeUpdate","cleanUpdate","atag","_dp_init","_setDefaultTransactionMode","delete_confirmation","dataProcessorEvents","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","user","_user","_needUpdate","_updateBusy","afterAutoUpdate","fullSync","loadUpdate","xml_node","getUpdates","vers","_getXmlNodeValue","updates","status_1","parent_1","_applyPayload","_cleanupArgumentsBeforeSend","dataToSend","processedData","_cleanupItemBeforeSend","updatedItem","output","queryParams","dhxVersion","urlParams","preprocessedData","taskState_1","taskAction","ganttMode_1","_onResolvedCreateUpdate_1","actionPromise","errorMsgStart","errorMsgEnd","catch","hasOne","_prepareDate","_prepareArray","traversedObjects","_prepareObject","rawItem","processedItem","_prepareDataItem","dataItem","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","allData","loadedRanges","_i","layerData","skipRepaint","refreshId","selectedId","deleteItem","_unselect","subItem","getLinkCount","newLink","getTaskCount","getVisibleTaskCount","startTask","calculateTaskLevel","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","$StoreType","open_tree_initially","deepcopy_on_parse","storeAccessName","dropService","storeList","refresh_links","refreshLinks","hasSplitParent","_clear_data","oldSelectId","_skipResourceRepaint","unselectTask","facadeFactory","originalTask","checkLinkedTaskVisibility","sync_link","sourceTask","sync_link_delete","sync_links","mapEvents","mapFrom","sourceEvent","targetEvent","taskLinks","existingLink","sourceMatch","targetMatch","typeMatch","show_tasks_outside_timescale","changedTask","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_dereq_","1","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","exit","throwLater","invokeLater","invoke","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","isIdentifier","caller","classString","ensureMethod","namedGetter","indexedGetter","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","./es5","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","cancelable","domEvent","Event","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","_warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","_propagateFromFunction","monitoring","_boundValueFunction","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","PromiseAll","promiseAllThis","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","OperationalError","cause","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","prop","descriptor","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","errors","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","_capacity","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","toggleScheduled","div2","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","rident","filledRange","prefix","ArrayFrom","itResult","hasEnvVariables","chrome","loadTimes","P","stateProviders","provider","regTemplates","initial","template_name","date_format","server_utc","task_unscheduled_time","grid_date_format","tooltip_date_format","copyDomEvent","altKey","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","eventParams","timeStamp","original_target","dragStart","traceDragEvents","domElement","inputMethod","mousemove","dragMove","dragScroll","limited_mousemove","dndActive","mouseup","dragEnd","checkPositionChange","diff_x","diff_y","initDnDMarker","backupEventTarget","getEvent","backup_element","elementFromPoint","_defineProperties","__webpack_exports__","_t","instance","Constructor","_classCallCheck","token","_url","_token","_seed","api","protoProps","staticProps","_createClass","Accept","Content-Type","Remote-Token","_fetch","_x","_x2","_t2","credentials","_t3","_t4","_t5","_t6","websocket","_e","_e2","_s","_t29","_wrapper","connect","_t8","_socket","WebSocket","onmessage","fire","_send","_resubscribe","onError","_t9","_this3","_uid","onCall","_t10","_this4","_t11","_t12","_t13","_t14","send","_t15","_e3","_t30","_t31","_e4","onResponse","_t18","_t32","_t20","_t34","_t23","_t33","_t24","_t35","_t26","_t27","_t28","remote_client","remoteEvents","remote","Client","_ready","back","_remote","cspVersion","utc","to_fixed","getUTCMonth","getUTCFullYear","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCISOWeek","getISOWeek","mask","month_short_hash","month_full_hash","fastVersion","dateToStrFn","getWeek","splt","strToDateFn","cspCompliantVersion","canUseCsp","useCsp","cspAutoCheck","time_part","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","minute_start","getMilliseconds","setMilliseconds","_add_days","modifiedDate","inc","originalDate","incCondition","getHoursCondition","getDateCondition","ndate","setYear","add_quarter","num","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","convert_to_utc","createConfig","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","responseXML","xpathExp","docObj","selectNodes","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","isQt","onreadystatechange","noCache","setRequestHeader","show_loading","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","project_sections","milestone_sections","grid_resizer_column_attribute","keep_grid_width","grid_resize","prevent_default_scroll","service","ExtensionsManager","addExtension","_extensions","getExtension","supportedExtensions","license","extensionManager","ExtensionManager","RemoteEvents","templatesLoader","stateService","selected_task","i18n","setLocale","localeObject","MAX_UNDO_STEPS","Undo","maxSteps","undoEnabled","redoEnabled","invert","revert","inverseCommands","_undoStack","_redoStack","getUndoStack","setUndoStack","getRedoStack","setRedoStack","clearUndoStack","clearRedoStack","updateConfigs","undo_steps","undo_types","undo_actions","redo","_pop","_reorderCommands","_applyAction","_push","logAction","weights","actionWeights","weightA","entities","actions","isExists","getMethod","startsWith","noTrack","onBeforeUndo","onBeforeRedo","batchActions","Monitor","_batchAction","_batchMode","_ignore","_ignoreMoveEvents","_initialTasks","_initialLinks","_nestedTasks","_nestedLinks","_undo","_attachEvents","overwrite","_storeTask","_storeLink","isMoveEventsIgnored","toggleIgnoreMoveEvents","startIgnore","stopIgnore","startBatchAction","_timeout","stopBatchAction","onTaskAdded","_storeTaskCommand","onTaskUpdated","onTaskMoved","getInitialTask","_storeEntityCommand","onTaskDeleted","childrenLinks","_storeLinkCommand","onLinkAdded","onLinkUpdated","onLinkDeleted","setNestedTasks","taskIds","_getLinks","setInitialTask","uniqueLinks","setInitialLink","setInitialTaskObject","clearInitialTasks","getInitialLink","clearInitialLinks","deleteCacheCooldown","saveInitialAll","getMoveObjectByTaskId","nested","_storeCommand","actionType","entityType","monitor_1","undo_1","monitor","changeTaskCommandId","updLink","oldTaskId","newTaskId","changeLinkCommandId","updateTasksIds","updateLinksIds","getInitialState","Tooltip","_tooltipNode","setViewport","_root","_isLikeMouseEvent","_calculateTooltipPosition","setContent","_getViewPort","_getViewPortSize","tooltipNode","mouse","containerPos","domEventsScope","tooltip_1","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","tooltipFor","cloneDomEvent","clone","delayShow","tooltip_timeout","tooltip_hide_timeout","tooltipManager_1","tooltipManager","touch_tooltip","QuickInfo","_showForTask","_showAtCoordinates","forced","qi","_quickInfoBox","_quickInfoBoxId","_quickInfoTask","quick_info_detached","setContainer","_container","defaultContent","quickinfo_buttons","_createQuickInfoElement","titleBox","titleContent","titleDate","main","controls","_qiButtonClickHandler","_qiKeyPressHandler","_qi_button_click","_appendAtCoordinates","show_quick_info","_getContainer","_get_event_counter_part","xViewport","yViewport","_init_quick_info","_prepare_quick_info_classname","_fill_quick_data","_show_quick_info","domEv","_quickInfoReadonly","quick_info_class","allowedButtons","isEditor","quick_info_title","quick_info_date","popupHeight","scrolls","screenWidth","relativePopupBottom","top_1","quickInfo_1","quickInfo","hidingFunction","clearQuickInfo","multiselect_one_level","_selected","_one_level","_active","_first_selected_when_shift","getDefaultSelected","selected","getSelected","setFirstSelected","getFirstSelected","updateState","setLastSelected","getLastSelected","afterSelect","forSelected","isSameLevel","doSelection","target_ev","defaultLast","isLast","multiSelect","singleSelection","inline_editors_multiselect_open","blockSelection","first_indx","target_indx","last_indx","old_selectTask","old_unselectTask","toggleTaskSelection","getLastSelectedTask","old_isSelected","render_marker","show_markers","marker_class","markerHeight","initMarkerArea","markerArea","$marker_area","_markers","renderMarkers","getMarker","deleteMarker","updateMarker","_getMarkers","$keyboardNavigation","dispatcher","activeNode","globalNode","GanttNode","setActiveNode","getActiveNode","getDefaultNode","TaskCell","TaskRow","isValid","setDefaultNode","fromDomElement","inputs","HeaderCell","focusGlobalNode","blurNode","focusChanged","compareTo","keptFocus","keyDownHandler","isModal","ganttNode","shortcuts","getCommandFromEvent","findHandler","doAction","awaitsFocus","_delay","clearDelay","modalsStack","afterPopup","startModal","trapFocus","endModal","currentTarget","isTopModal","traceLightbox","focusElement","globalIndex","_compose","cellElement","nextElement","prevTask","moveTo","nextTask","home","pagedown","pageup","bindAll","KeyNavNode","viewWidth","viewHeight","scrollPositionX","scrollPositionY","attachedScrollbarHorizontal","scrollbarHorizontal","attachedScrollbarVertical","scrollbarVertical","scrollGrid","shift+down","shift+up","shift+right","shift+left","space","ctrl+left","ctrl+right","ctrl+enter","taskRow","enter, space","EventHandler","canStringifyThis","canStringifyThat","eventFacade","$eventAttached","alt+left","alt+right","alt+up","alt+down","ctrl+z","ctrl+r","currentFocus","currentIndex","lastItem","firstItem","getHash","shortcut","unbind","initKeys","createCommand","expr","getExpressions","words","getWords","commandKeys","specialKeys","printableKey","getHashFromEvent","junctionChar","term","combinationChar","backspace","tab","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","isTaskFocused","isInlineEditorCell","isNoKeyboardNavigationElement","isLightboxElement","focusHandler","$preventDefault","reFocusActiveNode","outsideGantt","localName","mousedownHandler","locateTask","onReady","updateRender","_redrawTasks","focusedItemVisible","createdTaskId","keepFocusOnNewTask","nodeConstructor","focusOnCreate","getScope","scopes","headerCell","taskCell","findVisibleColumnIndex","keyNavFacade","addShortcut","scopeObject","getShortcutHandler","removeShortcut","getScopeName","setupKeyNav","isExpanded","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","isFullscreenAvailable","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","backupBodyPadding","backupElementSizes","zIndex","modified","backupPositioning","updateSizes","expandGantt","onFullScreenChange","getFullscreenElement","positions","originalPositioning","resetParentPositioning","setFullScreenSizes","record","restoreParentPositioning","restoreSizes","cantFullscreen","expand","requestArguments","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","collapse","requestExitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","exitFullscreen","stringifyPrimitive","sep","eq","ks","qs","regexp","maxKeys","kstr","vstr","idx","decode","encode","webpackPolyfill","paths","freeExports","freeModule","freeGlobal","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","not-basic","invalid-input","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","numPoints","firstTime","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","handledCPCountPlusOne","qMinusT","ucs2","toUnicode","100","101","102","200","201","202","203","204","205","206","207","208","226","300","301","302","303","304","305","307","308","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","422","423","424","425","426","428","429","431","451","500","501","502","503","504","505","506","507","508","509","510","511","arrayCopy","localStorage","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","installReadyStateChangeImplementation","copyBuffer","custom","toArrayBuffer","preferBinary","_opts","_body","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","signal","_fetchAbortController","requestTimeout","withCredentials","_connect","ontimeout","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","validateParams","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","tripletToBase64","_apiUrl","getNodeJSTransport","defaultPort","_prepareConfigPDF","previousDateRage","_serializeHtml","_serializeAll","_fixColumns","_sendToExport","exportToPNG","exportToICal","_serializePlain","exportToExcel","visual","convert","_eachTaskTimed","_no_progress_colors","_serializeTable","_serializeColumns","rawDates","_serializeScales","exportToJSON","_getWorktimeSettings","importFromExcel","File","_nodejsImportExcel","_sendImportAjaxExcel","importFromMSProject","_nodejsImportMSP","_sendImportAjaxMSP","importFromPrimaveraP6","exportToMSProject","skip_circular_links","oldXmlFormat","oldFormatDate","oldXmlDate","oldDateFormat","_customProjectProperties","_customTaskProperties","_clearRecLinks","_exportConfig","$custom_data","exportToPrimaveraP6","formDataInstance","network","parts1","parts2","parts3","X-Requested-With","sheet","getHeaders","resData","durationUnit","projectProperties","taskProperties","_xdr","pack","_nodejsPostRequest","Content-Length","_markColumns","$template","_ajaxToExport","xdoc","_serializableGanttConfig","callbackFunction","form","_createHiddenForm","submit","_hidden_export_form","_copyObjectBase","formatDate","_color_box","_color_hash","_getStyles","_getColor","_getMinutesWorktimeSettings","parsedRanges","defaultWorkTimes","0","wTime","_working_time_helper","get_calendar","_pull","_originalCopyObject","_copyObjectPlain","rgb","_copyObjectTable","toISOstring","_copyObjectColumns","getDayIndex","_day_index_by_date","$start","$end","hiddenCells","scaleCellsWidth","$type","tmps","$text","$left","$right","_copyObjectColors","$color","ct","_copyObjectAll","smartScales","_exportSerialize","_getRaw","_scale_helpers","_get_scales","autosizeMinWidth","_get_resize_options","cellColors","cellCss","scaleCell","scaleCell_class","scaleCss","exportMode","ccount","xmlFormat","_lvl","_clearLevel","_makeLinksSameLevel","skippedLinks","_clearCircDependencies","_clearLinksSameLevel","usedTasks","prevLink","sources","$_source","_onCircDependencyFind","targets","curLink","_source","targetLvl","linkT","sourceParent","$_target","projectName","projectDates","start_end","manual","EventsManager","_mouseDown","_calculateDirectionVector","vectors","resultVector_1","vector","magnitude","angleDegrees","atan2","_applyDndReadyStyles","_timeline","_clearDndReadyStyles","_getScrollPosition","_countNewScrollPosition","coords","_startPoint","shiftY","_scrollState","_setScrollPosition","_stopDrag","_originalReadonly","_startDrag","enabled","filterTargets","clickDragUseKey","eventsManager_1","helpers_1","SelectedRegion","_el","_singleRow","_getTaskPositionByTop","_view","_viewPort","_endPoint","draw","singleRow","_useRequestAnimationFrame","useRequestAnimationFrame","getElement","setStart","startPoint","_startDate","setEnd","endPoint","_endDate","_positionPoint","absolute","setPosition","positionPoint","tasksByTime","tasksByIndex","_getTasksByTop","getInBounds","startValue","endValue","selectedRegion","_originPosition","_restoreOriginPosition","scheduledDndCoordinates","_getCoordinates","dragTimelineUseKey","viewPortBounds","selectedRegion_1","defaultConfig","eventsManager","__assign","click_drag_1","drag_timeline_1","export_api_1","fullscreen_1","quick_info_1","extensions_gpl_1"],"mappings":"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","file":"dhtmlxgantt.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"dhtmlxgantt\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dhtmlxgantt\"] = factory();\n\telse\n\t\troot[\"dhtmlxgantt\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/codebase/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 299);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"./helpers\");\n\nvar plainObjectConstructor = {}.constructor.toString();\n\nfunction isCustomType(object) {\n var constructorString = object.constructor.toString();\n return constructorString !== plainObjectConstructor;\n}\n\nfunction copy(object) {\n var i, result; // iterator, types array, result\n\n if (object && _typeof(object) == \"object\") {\n switch (true) {\n case helpers.isDate(object):\n result = new Date(object);\n break;\n\n case helpers.isArray(object):\n result = new Array(object.length);\n\n for (i = 0; i < object.length; i++) {\n result[i] = copy(object[i]);\n }\n\n break;\n\n /*\t\tcase (helpers.isStringObject(object)):\r\n \t\t\tresult = new String(object);\r\n \t\t\tbreak;\r\n \t\tcase (helpers.isNumberObject(object)):\r\n \t\t\tresult = new Number(object);\r\n \t\t\tbreak;\r\n \t\tcase (helpers.isBooleanObject(object)):\r\n \t\t\tresult = new Boolean(object);\r\n \t\t\tbreak;*/\n\n default:\n if (isCustomType(object)) {\n result = Object.create(object);\n } else {\n result = {};\n }\n\n for (i in object) {\n if (Object.prototype.hasOwnProperty.apply(object, [i])) result[i] = copy(object[i]);\n }\n\n break;\n }\n }\n\n return result || object;\n}\n\nfunction mixin(target, source, force) {\n for (var f in source) {\n if (target[f] === undefined || force) target[f] = source[f];\n }\n\n return target;\n}\n\nfunction defined(obj) {\n return typeof obj != \"undefined\";\n}\n\nvar seed;\n\nfunction uid() {\n if (!seed) seed = new Date().valueOf();\n seed++;\n return seed;\n} //creates function with specified \"this\" pointer\n\n\nfunction bind(functor, object) {\n if (functor.bind) return functor.bind(object);else return function () {\n return functor.apply(object, arguments);\n };\n}\n\nfunction event(el, event, handler, capture) {\n if (el.addEventListener) el.addEventListener(event, handler, capture === undefined ? false : capture);else if (el.attachEvent) el.attachEvent(\"on\" + event, handler);\n}\n\nfunction eventRemove(el, event, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(event, handler, capture === undefined ? false : capture);else if (el.detachEvent) el.detachEvent(\"on\" + event, handler);\n}\n\nmodule.exports = {\n copy: copy,\n defined: defined,\n mixin: mixin,\n uid: uid,\n bind: bind,\n event: event,\n eventRemove: eventRemove\n};","//returns position of html element on the page\nfunction elementPosition(elem) {\n var top = 0,\n left = 0,\n right = 0,\n bottom = 0;\n\n if (elem.getBoundingClientRect) {\n //HTML5 method\n var box = elem.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement || document.body.parentNode || document.body;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n top = box.top + scrollTop - clientTop;\n left = box.left + scrollLeft - clientLeft;\n right = document.body.offsetWidth - box.right;\n bottom = document.body.offsetHeight - box.bottom;\n } else {\n //fallback to naive approach\n while (elem) {\n top = top + parseInt(elem.offsetTop, 10);\n left = left + parseInt(elem.offsetLeft, 10);\n elem = elem.offsetParent;\n }\n\n right = document.body.offsetWidth - elem.offsetWidth - left;\n bottom = document.body.offsetHeight - elem.offsetHeight - top;\n }\n\n return {\n y: Math.round(top),\n x: Math.round(left),\n width: elem.offsetWidth,\n height: elem.offsetHeight,\n right: Math.round(right),\n bottom: Math.round(bottom)\n };\n}\n\nfunction isVisible(node) {\n var display = false,\n visibility = false;\n\n if (window.getComputedStyle) {\n var style = window.getComputedStyle(node, null);\n display = style[\"display\"];\n visibility = style[\"visibility\"];\n } else if (node.currentStyle) {\n display = node.currentStyle[\"display\"];\n visibility = node.currentStyle[\"visibility\"];\n }\n\n return display != \"none\" && visibility != \"hidden\";\n}\n\nfunction hasNonNegativeTabIndex(node) {\n return !isNaN(node.getAttribute(\"tabindex\")) && node.getAttribute(\"tabindex\") * 1 >= 0;\n}\n\nfunction hasHref(node) {\n var canHaveHref = {\n \"a\": true,\n \"area\": true\n };\n\n if (canHaveHref[node.nodeName.loLowerCase()]) {\n return !!node.getAttribute(\"href\");\n }\n\n return true;\n}\n\nfunction isEnabled(node) {\n var canDisable = {\n \"input\": true,\n \"select\": true,\n \"textarea\": true,\n \"button\": true,\n \"object\": true\n };\n\n if (canDisable[node.nodeName.toLowerCase()]) {\n return !node.hasAttribute(\"disabled\");\n }\n\n return true;\n}\n\nfunction getFocusableNodes(root) {\n var nodes = root.querySelectorAll([\"a[href]\", \"area[href]\", \"input\", \"select\", \"textarea\", \"button\", \"iframe\", \"object\", \"embed\", \"[tabindex]\", \"[contenteditable]\"].join(\", \"));\n var nodesArray = Array.prototype.slice.call(nodes, 0);\n\n for (var i = 0; i < nodesArray.length; i++) {\n nodesArray[i].$position = i; // we remember original nodes order, \n // so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \n // since some browsers do unstable sort\n } // use tabindex to sort focusable nodes\n\n\n nodesArray.sort(function (a, b) {\n if (a.tabIndex === 0 && b.tabIndex !== 0) {\n return 1;\n }\n\n if (a.tabIndex !== 0 && b.tabIndex === 0) {\n return -1;\n }\n\n if (a.tabIndex === b.tabIndex) {\n // ensure we do stable sort\n return a.$position - b.$position;\n }\n\n if (a.tabIndex < b.tabIndex) {\n return -1;\n }\n\n return 1;\n });\n\n for (var i = 0; i < nodesArray.length; i++) {\n var node = nodesArray[i];\n var isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\n if (!isValid) {\n nodesArray.splice(i, 1);\n i--;\n }\n }\n\n return nodesArray;\n}\n\nfunction getScrollSize() {\n var div = document.createElement(\"div\");\n div.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\n document.body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return width;\n}\n\nfunction getClassName(node) {\n if (!node) return \"\";\n var className = node.className || \"\";\n if (className.baseVal) //'className' exist but not a string - IE svg element in DOM\n className = className.baseVal;\n if (!className.indexOf) className = \"\";\n return _trimString(className);\n}\n\nfunction addClassName(node, className) {\n if (className && node.className.indexOf(className) === -1) {\n node.className += \" \" + className;\n }\n}\n\nfunction removeClassName(node, name) {\n name = name.split(\" \");\n\n for (var i = 0; i < name.length; i++) {\n var regEx = new RegExp(\"\\\\s?\\\\b\" + name[i] + \"\\\\b(?![-_.])\", \"\");\n node.className = node.className.replace(regEx, \"\");\n }\n}\n\nfunction hasClass(element, className) {\n if ('classList' in element) {\n return element.classList.contains(className);\n } else {\n return new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\n }\n}\n\nfunction toNode(node) {\n if (typeof node === \"string\") {\n return document.getElementById(node) || document.querySelector(node) || document.body;\n }\n\n return node || document.body;\n}\n\nvar _slave;\n\nfunction insert(node, newone) {\n if (!_slave) {\n _slave = document.createElement(\"div\");\n }\n\n _slave.innerHTML = newone;\n var child = _slave.firstChild;\n node.appendChild(child);\n return child;\n}\n\nfunction remove(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\nfunction getChildren(node, css) {\n var ch = node.childNodes;\n var len = ch.length;\n var out = [];\n\n for (var i = 0; i < len; i++) {\n var obj = ch[i];\n\n if (obj.className && obj.className.indexOf(css) !== -1) {\n out.push(obj);\n }\n }\n\n return out;\n}\n\nfunction getTargetNode(e) {\n var trg;\n if (e.tagName) trg = e;else {\n e = e || window.event;\n trg = e.target || e.srcElement;\n\n if (trg.shadowRoot && e.composedPath) {\n trg = e.composedPath()[0];\n }\n }\n return trg;\n}\n\nfunction locateAttribute(e, attribute) {\n if (!attribute) return;\n var trg = getTargetNode(e);\n\n while (trg) {\n if (trg.getAttribute) {\n //text nodes has not getAttribute\n var test = trg.getAttribute(attribute);\n if (test) return trg;\n }\n\n trg = trg.parentNode;\n }\n\n return null;\n}\n\nfunction _trimString(str) {\n var func = String.prototype.trim || function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n };\n\n return func.apply(str);\n}\n\nfunction locateClassName(e, classname, strict) {\n var trg = getTargetNode(e);\n var css = \"\";\n if (strict === undefined) strict = true;\n\n while (trg) {\n css = getClassName(trg);\n\n if (css) {\n var ind = css.indexOf(classname);\n\n if (ind >= 0) {\n if (!strict) return trg; //check that we have exact match\n\n var left = ind === 0 || !_trimString(css.charAt(ind - 1));\n var right = ind + classname.length >= css.length || !_trimString(css.charAt(ind + classname.length));\n if (left && right) return trg;\n }\n }\n\n trg = trg.parentNode;\n }\n\n return null;\n}\n/*\r\nevent position relatively to DOM element\r\n */\n\n\nfunction getRelativeEventPosition(ev, node) {\n var d = document.documentElement;\n var box = elementPosition(node);\n return {\n x: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\n y: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\n };\n}\n\nfunction isChildOf(child, parent) {\n if (!child || !parent) {\n return false;\n }\n\n while (child && child != parent) {\n child = child.parentNode;\n }\n\n return child === parent;\n}\n\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n } else if (element.matches || element.msMatchesSelector || element.webkitMatchesSelector) {\n var el = element;\n if (!document.documentElement.contains(el)) return null;\n\n do {\n var method = el.matches || el.msMatchesSelector || el.webkitMatchesSelector;\n if (method.call(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Your browser is not supported\");\n return null;\n }\n}\n\nfunction isShadowDomSupported() {\n return document.head.createShadowRoot || document.head.attachShadow;\n}\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\n\n\nfunction getActiveElement() {\n var activeElement = document.activeElement;\n\n if (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n if (activeElement === document.body && document.getSelection) {\n activeElement = document.getSelection().focusNode || document.body;\n }\n\n return activeElement;\n}\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\n\n\nfunction getRootNode(element) {\n if (!element) {\n return document.body;\n }\n\n if (!isShadowDomSupported()) {\n return document.body;\n }\n\n while (element.parentNode && (element = element.parentNode)) {\n if (element instanceof ShadowRoot) {\n return element.host;\n }\n }\n\n return document.body;\n}\n\nfunction hasShadowParent(element) {\n return !!getRootNode(element);\n}\n\nmodule.exports = {\n getNodePosition: elementPosition,\n getFocusableNodes: getFocusableNodes,\n getScrollSize: getScrollSize,\n getClassName: getClassName,\n addClassName: addClassName,\n removeClassName: removeClassName,\n insertNode: insert,\n removeNode: remove,\n getChildNodes: getChildren,\n toNode: toNode,\n locateClassName: locateClassName,\n locateAttribute: locateAttribute,\n getTargetNode: getTargetNode,\n getRelativeEventPosition: getRelativeEventPosition,\n isChildOf: isChildOf,\n hasClass: hasClass,\n closest: closest,\n getRootNode: getRootNode,\n hasShadowParent: hasShadowParent,\n isShadowDomSupported: isShadowDomSupported,\n getActiveElement: getActiveElement\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar units = {\n \"second\": 1,\n \"minute\": 60,\n \"hour\": 60 * 60,\n \"day\": 60 * 60 * 24,\n \"week\": 60 * 60 * 24 * 7,\n \"month\": 60 * 60 * 24 * 30,\n \"quarter\": 60 * 60 * 24 * 30 * 3,\n \"year\": 60 * 60 * 24 * 365\n};\n\nfunction getSecondsInUnit(unit) {\n return units[unit] || units.hour;\n}\n\nfunction forEach(arr, callback) {\n if (arr.forEach) {\n arr.forEach(callback);\n } else {\n var workArray = arr.slice();\n\n for (var i = 0; i < workArray.length; i++) {\n callback(workArray[i], i);\n }\n }\n}\n\nfunction arrayMap(arr, callback) {\n if (arr.map) {\n return arr.map(callback);\n } else {\n var workArray = arr.slice();\n var resArray = [];\n\n for (var i = 0; i < workArray.length; i++) {\n resArray.push(callback(workArray[i], i));\n }\n\n return resArray;\n }\n}\n\nfunction arrayFind(arr, callback) {\n if (arr.find) {\n return arr.find(callback);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i)) {\n return arr[i];\n }\n }\n }\n}\n\nfunction arrayIncludes(arr, item) {\n if (arr.includes) {\n return arr.includes(item);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === item) {\n return true;\n }\n }\n\n return false;\n }\n} // iframe-safe array type check instead of using instanceof\n\n\nfunction isArray(obj) {\n if (Array.isArray) {\n return Array.isArray(obj);\n } else {\n // close enough\n return obj && obj.length !== undefined && obj.pop && obj.push;\n }\n} // non-primitive string object, e.g. new String(\"abc\")\n\n\nfunction isStringObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n} // non-primitive number object, e.g. new Number(5)\n\n\nfunction isNumberObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n} // non-primitive number object, e.g. new Boolean(true)\n\n\nfunction isBooleanObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction isDate(obj) {\n if (obj && _typeof(obj) === \"object\") {\n return !!(obj.getFullYear && obj.getMonth && obj.getDate);\n } else {\n return false;\n }\n}\n\nfunction isValidDate(obj) {\n return isDate(obj) && !isNaN(obj.getTime());\n}\n\nfunction arrayFilter(arr, callback) {\n var result = [];\n\n if (arr.filter) {\n return arr.filter(callback);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i)) {\n result[result.length] = arr[i];\n }\n }\n\n return result;\n }\n}\n\nfunction hashToArray(hash) {\n var result = [];\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n result.push(hash[key]);\n }\n }\n\n return result;\n}\n\nfunction arraySome(arr, callback) {\n if (arr.length === 0) return false;\n\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i, arr)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction arrayDifference(arr, callback) {\n return arrayFilter(arr, function (item, i) {\n return !callback(item, i);\n });\n}\n\nfunction throttle(callback, timeout) {\n var wait = false;\n return function () {\n if (!wait) {\n callback.apply(null, arguments);\n wait = true;\n setTimeout(function () {\n wait = false;\n }, timeout);\n }\n };\n}\n\nfunction delay(callback, timeout) {\n var timer;\n\n var result = function result() {\n result.$cancelTimeout();\n result.$pending = true;\n var args = Array.prototype.slice.call(arguments);\n timer = setTimeout(function () {\n callback.apply(this, args);\n result.$pending = false;\n }, timeout);\n };\n\n result.$pending = false;\n\n result.$cancelTimeout = function () {\n clearTimeout(timer);\n result.$pending = false;\n };\n\n result.$execute = function () {\n var args = Array.prototype.slice.call(arguments);\n callback.apply(this, args);\n result.$cancelTimeout();\n };\n\n return result;\n}\n\nfunction sortArrayOfHash(arr, field, desc) {\n var compare = function compare(a, b) {\n return a < b;\n };\n\n arr.sort(function (a, b) {\n if (a[field] === b[field]) return 0;\n return desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\n });\n}\n\nfunction objectKeys(obj) {\n if (Object.keys) {\n return Object.keys(obj);\n }\n\n var result = [];\n var key;\n\n for (key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nfunction isEventable(obj) {\n return obj.attachEvent && obj.detachEvent;\n} //GS-1090: A task should be able to have the id = 0\n\n\nfunction replaceValidZeroId(id, rootId) {\n if (checkZeroId(id) && !checkZeroId(rootId)) {\n id = \"0\";\n }\n\n return id;\n}\n\nfunction checkZeroId(id) {\n if (id === 0) {\n return true;\n }\n\n return false;\n}\n\nfunction findBinary(array, target) {\n // modified binary search, target value not exactly match array elements, looking for closest one\n var low = 0,\n high = array.length - 1,\n i,\n item,\n prev;\n\n while (low <= high) {\n i = Math.floor((low + high) / 2);\n item = +array[i];\n prev = +array[i - 1];\n\n if (item < target) {\n low = i + 1;\n continue;\n }\n\n if (item > target) {\n if (!(!isNaN(prev) && prev < target)) {\n high = i - 1;\n continue;\n } else {\n // if target is between 'i' and 'i-1' return 'i - 1'\n return i - 1;\n }\n }\n\n while (+array[i] == +array[i + 1]) {\n i++;\n }\n\n return i;\n }\n\n return array.length - 1;\n}\n\nmodule.exports = {\n getSecondsInUnit: getSecondsInUnit,\n forEach: forEach,\n arrayMap: arrayMap,\n arrayIncludes: arrayIncludes,\n arrayFind: arrayFind,\n arrayFilter: arrayFilter,\n arrayDifference: arrayDifference,\n arraySome: arraySome,\n hashToArray: hashToArray,\n sortArrayOfHash: sortArrayOfHash,\n throttle: throttle,\n isArray: isArray,\n isDate: isDate,\n isValidDate: isValidDate,\n isStringObject: isStringObject,\n isNumberObject: isNumberObject,\n isBooleanObject: isBooleanObject,\n delay: delay,\n objectKeys: objectKeys,\n isEventable: isEventable,\n replaceValidZeroId: replaceValidZeroId,\n checkZeroId: checkZeroId,\n findBinary: findBinary\n};","module.exports = function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var EventHost = function EventHost() {\n this._silent_mode = false;\n this.listeners = {};\n};\n\nEventHost.prototype = {\n _silentStart: function _silentStart() {\n this._silent_mode = true;\n },\n _silentEnd: function _silentEnd() {\n this._silent_mode = false;\n }\n};\n\nvar createEventStorage = function createEventStorage(obj) {\n var handlers = {};\n var index = 0;\n\n var eventStorage = function eventStorage() {\n var combinedResult = true;\n\n for (var i in handlers) {\n var handlerResult = handlers[i].apply(obj, arguments);\n combinedResult = combinedResult && handlerResult;\n }\n\n return combinedResult;\n };\n\n eventStorage.addEvent = function (handler, settings) {\n if (typeof handler == \"function\") {\n var handlerId;\n\n if (settings && settings.id) {\n handlerId = settings.id;\n } else {\n handlerId = index;\n index++;\n }\n\n if (settings && settings.once) {\n var originalHandler = handler;\n\n handler = function handler() {\n originalHandler();\n eventStorage.removeEvent(handlerId);\n };\n }\n\n handlers[handlerId] = handler;\n return handlerId;\n }\n\n return false;\n };\n\n eventStorage.removeEvent = function (id) {\n delete handlers[id];\n };\n\n eventStorage.clear = function () {\n handlers = {};\n };\n\n return eventStorage;\n};\n\nfunction makeEventable(obj) {\n var eventHost = new EventHost();\n\n obj.attachEvent = function (eventName, handler, settings) {\n eventName = 'ev_' + eventName.toLowerCase();\n\n if (!eventHost.listeners[eventName]) {\n eventHost.listeners[eventName] = createEventStorage(this);\n }\n\n if (settings && settings.thisObject) {\n handler = handler.bind(settings.thisObject);\n }\n\n var innerId = eventHost.listeners[eventName].addEvent(handler, settings);\n var handlerId = eventName + ':' + innerId; //return ID (ev_eventname:1)\n\n if (settings && settings.id) {\n handlerId = settings.id;\n }\n\n return handlerId;\n };\n\n obj.attachAll = function (callback) {\n this.attachEvent('listen_all', callback);\n };\n\n obj.callEvent = function (name, eventArguments) {\n if (eventHost._silent_mode) return true;\n var handlerName = 'ev_' + name.toLowerCase();\n var listeners = eventHost.listeners;\n\n if (listeners['ev_listen_all']) {\n listeners['ev_listen_all'].apply(this, [name].concat(eventArguments));\n }\n\n if (listeners[handlerName]) return listeners[handlerName].apply(this, eventArguments);\n return true;\n };\n\n obj.checkEvent = function (name) {\n var listeners = eventHost.listeners;\n return !!listeners['ev_' + name.toLowerCase()];\n };\n\n obj.detachEvent = function (id) {\n if (id) {\n var listeners = eventHost.listeners;\n\n for (var i in listeners) {\n listeners[i].removeEvent(id); //remove event\n }\n\n var list = id.split(':'); //get EventName and ID\n\n var listeners = eventHost.listeners;\n\n if (list.length === 2) {\n var eventName = list[0];\n var eventId = list[1];\n\n if (listeners[eventName]) {\n listeners[eventName].removeEvent(eventId); //remove event\n }\n }\n }\n };\n\n obj.detachAllEvents = function () {\n for (var name in eventHost.listeners) {\n eventHost.listeners[name].clear();\n }\n };\n}\n\nmodule.exports = makeEventable;","module.exports = function getVisibleTasksRange(gantt, view, config, datastore, viewport) {\n var buffer = 1;\n var start = view.getItemIndexByTopPosition(viewport.y) || 0;\n var end = view.getItemIndexByTopPosition(viewport.y_end) || datastore.count();\n var indexStart = Math.max(0, start - buffer);\n var indexEnd = Math.min(datastore.count(), end + buffer);\n return {\n start: indexStart,\n end: indexEnd\n };\n};","function dummy() {\n // eslint-disable-next-line\n console.log(\"Method is not implemented.\");\n}\n\nfunction BaseControl() {} // base methods will be runned in gantt context\n\n\nBaseControl.prototype.render = dummy; // arguments: sns\n\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\n\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\n\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function (gantt) {\n // we could send current instance of gantt to module\n return BaseControl;\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","module.exports = function (gantt) {\n var BaseEditor = function BaseEditor() {};\n\n BaseEditor.prototype = {\n show: function show(id, column, config, placeholder) {},\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = value;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_changed: function is_changed(value, id, column, node) {\n var currentValue = this.get_value(id, column, node);\n\n if (currentValue && value && currentValue.valueOf && value.valueOf) {\n return currentValue.valueOf() != value.valueOf();\n } else {\n return currentValue != value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n return true;\n },\n save: function save(id, column, node) {},\n get_input: function get_input(node) {\n return node.querySelector(\"input\");\n },\n focus: function focus(node) {\n var input = this.get_input(node);\n\n if (!input) {\n return;\n }\n\n if (input.focus) {\n input.focus();\n }\n\n if (input.select) {\n input.select();\n }\n }\n };\n return BaseEditor;\n};","/* eslint-disable no-restricted-globals */\nvar isWindowAwailable = typeof window !== \"undefined\";\n/* eslint-enable no-restricted-globals */\n\nvar env = {\n isIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n isIE6: isWindowAwailable && !XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0,\n isIE7: isWindowAwailable && navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0,\n isIE8: isWindowAwailable && navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0,\n isOpera: isWindowAwailable && navigator.userAgent.indexOf(\"Opera\") >= 0,\n isChrome: isWindowAwailable && navigator.userAgent.indexOf(\"Chrome\") >= 0,\n isKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n isFF: isWindowAwailable && navigator.userAgent.indexOf(\"Firefox\") >= 0,\n isIPad: isWindowAwailable && navigator.userAgent.search(/iPad/gi) >= 0,\n isEdge: isWindowAwailable && navigator.userAgent.indexOf(\"Edge\") != -1,\n isNode: !isWindowAwailable || typeof navigator == \"undefined\"\n};\nmodule.exports = env;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n/*<replacement>*/\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '<Buffer ' + str + '>';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","var utils = require(\"../../../utils/utils\"),\n eventable = require(\"../../../utils/eventable\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar Cell = function () {\n \"use strict\";\n\n function Cell(parent, config, factory, gantt) {\n if (parent) {\n this.$container = domHelpers.toNode(parent);\n this.$parent = parent;\n } // save config\n\n\n this.$config = utils.mixin(config, {\n headerHeight: 33\n });\n this.$gantt = gantt;\n this.$domEvents = gantt._createDomEventScope(); // set id\n\n this.$id = config.id || \"c\" + utils.uid();\n this.$name = \"cell\";\n this.$factory = factory;\n eventable(this);\n }\n\n Cell.prototype.destructor = function () {\n this.$parent = this.$container = this.$view = null;\n var mouse = this.$gantt.$services.getService(\"mouseEvents\");\n mouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n this.$domEvents.detachAll();\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n };\n\n Cell.prototype.cell = function (id) {\n return null;\n };\n\n Cell.prototype.scrollTo = function (left, top) {\n //GS-333 Add a way to scroll the HTML views:\n var cell = this.$view;\n if (this.$config.html) cell = this.$view.firstChild;\n\n if (left * 1 == left) {\n cell.scrollLeft = left;\n }\n\n if (top * 1 == top) {\n cell.scrollTop = top;\n }\n };\n\n Cell.prototype.clear = function () {\n this.getNode().innerHTML = \"\";\n this.getNode().className = \"gantt_layout_content\";\n this.getNode().style.padding = \"0\";\n };\n\n Cell.prototype.resize = function (_final) {\n if (this.$parent) {\n return this.$parent.resize(_final);\n }\n\n if (_final === false) {\n this.$preResize = true;\n }\n\n var topCont = this.$container;\n var x = topCont.offsetWidth;\n var y = topCont.offsetHeight;\n var topSize = this.getSize();\n\n if (topCont === document.body) {\n x = document.body.offsetWidth;\n y = document.body.offsetHeight;\n }\n\n if (x < topSize.minWidth) {\n x = topSize.minWidth;\n }\n\n if (x > topSize.maxWidth) {\n x = topSize.maxWidth;\n }\n\n if (y < topSize.minHeight) {\n y = topSize.minHeight;\n }\n\n if (y > topSize.maxHeight) {\n y = topSize.maxHeight;\n }\n\n this.setSize(x, y);\n\n if (!this.$preResize) {//\tself.callEvent(\"onResize\", [x, y]);\n }\n\n this.$preResize = false;\n };\n\n Cell.prototype.hide = function () {\n this._hide(true);\n\n this.resize();\n };\n\n Cell.prototype.show = function (force) {\n this._hide(false);\n\n if (force && this.$parent) {\n this.$parent.show();\n }\n\n this.resize();\n };\n\n Cell.prototype._hide = function (mode) {\n if (mode === true && this.$view.parentNode) {\n this.$view.parentNode.removeChild(this.$view);\n } else if (mode === false && !this.$view.parentNode) {\n var index = this.$parent.cellIndex(this.$id);\n this.$parent.moveView(this, index);\n }\n\n this.$config.hidden = mode;\n };\n\n Cell.prototype.$toHTML = function (content, css) {\n if (content === void 0) {\n content = \"\";\n }\n\n css = [css || \"\", this.$config.css || \"\"].join(\" \");\n var obj = this.$config;\n var header = \"\";\n\n if (obj.raw) {\n content = typeof obj.raw === \"string\" ? obj.raw : \"\";\n } else {\n if (!content) {\n content = \"<div class='gantt_layout_content' \" + (css ? \" class='\" + css + \"' \" : \"\") + \" >\" + (obj.html || \"\") + \"</div>\";\n }\n\n if (obj.header) {\n var collapseIcon = obj.canCollapse ? \"<div class='gantt_layout_header_arrow'></div>\" : \"\";\n header = \"<div class='gantt_layout_header'>\" + collapseIcon + \"<div class='gantt_layout_header_content'>\" + obj.header + \"</div></div>\";\n }\n }\n\n return \"<div class='gantt_layout_cell \" + css + \"' data-cell-id='\" + this.$id + \"'>\" + header + content + \"</div>\";\n };\n\n Cell.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n this.init();\n };\n\n Cell.prototype.getNode = function () {\n return this.$view.querySelector(\"gantt_layout_cell\") || this.$view;\n };\n\n Cell.prototype.init = function () {\n // [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\n var self = this;\n\n this._headerClickHandler = function (e) {\n var cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\n\n if (cellId == self.$id) {\n self.toggle();\n }\n };\n\n var mouse = this.$gantt.$services.getService(\"mouseEvents\");\n mouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n this.callEvent(\"onReady\", []);\n };\n\n Cell.prototype.toggle = function () {\n this.$config.collapsed = !this.$config.collapsed;\n this.resize();\n };\n\n Cell.prototype.getSize = function () {\n var size = {\n height: this.$config.height || 0,\n width: this.$config.width || 0,\n gravity: this.$config.gravity || 1,\n minHeight: this.$config.minHeight || 0,\n minWidth: this.$config.minWidth || 0,\n maxHeight: this.$config.maxHeight || 100000000000,\n maxWidth: this.$config.maxWidth || 100000000000\n };\n\n if (this.$config.collapsed) {\n var mode = this.$config.mode === \"x\";\n size[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\n }\n\n return size;\n };\n\n Cell.prototype.getContentSize = function () {\n var width = this.$lastSize.contentX;\n\n if (width !== width * 1) {\n width = this.$lastSize.width;\n }\n\n var height = this.$lastSize.contentY;\n\n if (height !== height * 1) {\n height = this.$lastSize.height;\n }\n\n return {\n width: width,\n height: height\n };\n };\n\n Cell.prototype._getBorderSizes = function () {\n var borders = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n horizontal: 0,\n vertical: 0\n };\n\n if (this._currentBorders) {\n if (this._currentBorders[this._borders.left]) {\n borders.left = 1;\n borders.horizontal++;\n }\n\n if (this._currentBorders[this._borders.right]) {\n borders.right = 1;\n borders.horizontal++;\n }\n\n if (this._currentBorders[this._borders.top]) {\n borders.top = 1;\n borders.vertical++;\n }\n\n if (this._currentBorders[this._borders.bottom]) {\n borders.bottom = 1;\n borders.vertical++;\n }\n }\n\n return borders;\n };\n\n Cell.prototype.setSize = function (x, y) {\n this.$view.style.width = x + \"px\";\n this.$view.style.height = y + \"px\";\n\n var borders = this._getBorderSizes();\n\n var contentY = y - borders.vertical;\n var contentX = x - borders.horizontal;\n this.$lastSize = {\n x: x,\n y: y,\n contentX: contentX,\n contentY: contentY\n };\n\n if (this.$config.header) {\n this._sizeHeader();\n } else {\n this._sizeContent();\n }\n };\n\n Cell.prototype._borders = {\n \"left\": \"gantt_layout_cell_border_left\",\n \"right\": \"gantt_layout_cell_border_right\",\n \"top\": \"gantt_layout_cell_border_top\",\n \"bottom\": \"gantt_layout_cell_border_bottom\"\n };\n\n Cell.prototype._setBorders = function (css, view) {\n if (!view) {\n view = this;\n }\n\n var node = view.$view;\n\n for (var i in this._borders) {\n domHelpers.removeClassName(node, this._borders[i]);\n }\n\n if (typeof css == \"string\") {\n css = [css];\n }\n\n var cssHash = {};\n\n for (var i = 0; i < css.length; i++) {\n domHelpers.addClassName(node, css[i]);\n cssHash[css[i]] = true;\n }\n\n view._currentBorders = cssHash;\n };\n\n Cell.prototype._sizeContent = function () {\n var content = this.$view.childNodes[0];\n\n if (content && content.className == \"gantt_layout_content\") {\n content.style.height = this.$lastSize.contentY + \"px\";\n }\n };\n\n Cell.prototype._sizeHeader = function () {\n var size = this.$lastSize;\n size.contentY -= this.$config.headerHeight;\n var header = this.$view.childNodes[0];\n var content = this.$view.childNodes[1];\n var xLayout = this.$config.mode === \"x\";\n\n if (this.$config.collapsed) {\n content.style.display = \"none\";\n\n if (xLayout) {\n header.className = \"gantt_layout_header collapsed_x\";\n header.style.width = size.y + \"px\";\n var d = Math.floor(size.y / 2 - size.x / 2);\n header.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\n content.style.display = \"none\";\n } else {\n header.className = \"gantt_layout_header collapsed_y\";\n }\n } else {\n if (xLayout) {\n header.className = \"gantt_layout_header\";\n } else {\n header.className = \"gantt_layout_header vertical\";\n }\n\n header.style.width = 'auto';\n header.style.transform = '';\n content.style.display = \"\";\n content.style.height = size.contentY + \"px\";\n }\n\n header.style.height = this.$config.headerHeight + \"px\";\n };\n\n return Cell;\n}();\n\nmodule.exports = Cell;","var utils = require(\"./env\");\n\nmodule.exports = function (gantt) {\n return utils.isNode || !gantt.$root;\n};","/**\r\n * Check the over task or draggble task is placeholder task\r\n */\nmodule.exports = function isPlaceholderTask(id, gantt, store, config) {\n // return false;\n var config = gantt ? gantt.config : config;\n\n if (config && config.placeholder_task) {\n if (store.exists(id)) {\n var item = store.getItem(id);\n return item.type === config.types.placeholder;\n }\n }\n\n return false;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return _typeof(arg) === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function SelectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(SelectControl, _super);\n\n SelectControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n html += htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"style\",\n value: \"width:100%;\"\n }, {\n key: \"title\",\n value: sns.name\n }]);\n html += \"</div>\";\n return html;\n };\n\n SelectControl.prototype.set_value = function (node, value, ev, sns) {\n var select = node.firstChild;\n\n if (!select._dhx_onchange && sns.onchange) {\n select.onchange = sns.onchange;\n select._dhx_onchange = true;\n }\n\n if (typeof value === \"undefined\") value = (select.options[0] || {}).value;\n select.value = value || \"\";\n };\n\n SelectControl.prototype.get_value = function (node) {\n return node.firstChild.value;\n };\n\n SelectControl.prototype.focus = function (node) {\n var a = node.firstChild;\n\n gantt._focus(a, true);\n };\n\n return SelectControl;\n};","// optimized checker for task bars smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isBarInViewport(item, viewport, view, config, gantt) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var top = view.getItemTop(item.id);\n var height = view.getItemHeight(item.id);\n\n if (top > viewport.y_end || top + height < viewport.y) {\n return false;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n\n if (left > viewport.x_end || right < viewport.x) {\n return false;\n }\n\n return true;\n};","module.exports = function (gantt) {\n return gantt.config.smart_rendering && gantt._smart_render;\n};","/* eslint-disable no-restricted-globals */\nvar globalScope;\n\nif (typeof window !== \"undefined\") {\n globalScope = window;\n} else {\n globalScope = global;\n}\n/* eslint-enable no-restricted-globals */\n\n\nmodule.exports = globalScope;","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n} // Copy static methods from Buffer\n\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};","'use strict';\n\nif (!process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n\n var len = arguments.length;\n var args, i;\n\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n\n default:\n args = new Array(len - 1);\n i = 0;\n\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}","/**\r\n * The state object for order branch drag and drop\r\n */\nvar utils = require(\"../../../../utils/utils\");\n\nmodule.exports = {\n createDropTargetObject: function createDropTargetObject(parent) {\n var res = {\n targetParent: null,\n targetIndex: 0,\n targetId: null,\n child: false,\n nextSibling: false,\n prevSibling: false\n };\n\n if (parent) {\n utils.mixin(res, parent, true);\n }\n\n return res;\n },\n nextSiblingTarget: function nextSiblingTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.nextSibling = true;\n result.targetParent = store.getParent(result.targetId);\n result.targetIndex = store.getBranchIndex(result.targetId);\n\n if (store.getParent(dndTaskId) != result.targetParent || result.targetIndex < store.getBranchIndex(dndTaskId)) {\n result.targetIndex += 1;\n }\n\n return result;\n },\n prevSiblingTarget: function prevSiblingTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.prevSibling = true;\n result.targetParent = store.getParent(result.targetId);\n result.targetIndex = store.getBranchIndex(result.targetId);\n\n if (store.getParent(dndTaskId) == result.targetParent && result.targetIndex > store.getBranchIndex(dndTaskId)) {\n result.targetIndex -= 1;\n }\n\n return result;\n },\n firstChildTarget: function firstChildTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.targetParent = result.targetId;\n result.targetIndex = 0;\n result.child = true;\n return result;\n },\n lastChildTarget: function lastChildTarget(dndTaskId, targetTaskId, store) {\n var children = store.getChildren(targetTaskId);\n var result = this.createDropTargetObject();\n result.targetId = children[children.length - 1];\n result.targetParent = targetTaskId;\n result.targetIndex = children.length;\n result.nextSibling = true;\n return result;\n }\n};","var isLegacyRender = require(\"../is_legacy_smart_render\");\n\nmodule.exports = function isColumnVisible(columnIndex, scale, viewPort, gantt) {\n var width = scale.width[columnIndex];\n\n if (width <= 0) {\n return false;\n }\n\n if (!gantt.config.smart_rendering || isLegacyRender(gantt)) {\n return true;\n }\n\n var cellLeftCoord = scale.left[columnIndex] - width;\n var cellRightCoord = scale.left[columnIndex] + width;\n return cellLeftCoord <= viewPort.x_end && cellRightCoord >= viewPort.x; //do not render skipped columns\n};","module.exports = function getVisibleCellsRange(scale, viewport) {\n var firstCellIndex = 0;\n var lastCellIndex = scale.left.length - 1;\n\n if (viewport) {\n for (var i = 0; i < scale.left.length; i++) {\n var left = scale.left[i];\n\n if (left < viewport.x) {\n firstCellIndex = i;\n }\n\n if (left > viewport.x_end) {\n lastCellIndex = i;\n break;\n }\n }\n }\n\n return {\n start: firstCellIndex,\n end: lastCellIndex\n };\n};","module.exports = function (item, view, config) {\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: 0,\n right: Infinity\n };\n};","function createTaskRenderer(gantt) {\n function _render_task_element(task, view, config) {\n var config = view.$getConfig();\n var painters = config.type_renderers;\n var renderer = painters[gantt.getTaskType(task.type)],\n defaultRenderer = _task_default_render;\n\n if (!renderer) {\n return defaultRenderer.call(gantt, task, view, config);\n } else {\n return renderer.call(gantt, task, function (task) {\n return defaultRenderer.call(gantt, task, view, config);\n }, view);\n }\n }\n\n function _task_default_render(task, view, config) {\n if (gantt._isAllowedUnscheduledTask(task)) return;\n\n if (!gantt._isTaskInTimelineLimits(task)) {\n return;\n }\n\n var pos = view.getItemPosition(task);\n var cfg = config,\n templates = view.$getTemplates();\n var taskType = gantt.getTaskType(task.type);\n var height = view.getBarHeight(task.id, taskType == cfg.types.milestone);\n var controlsMargin = 0;\n\n if (taskType == cfg.types.milestone) {\n controlsMargin = (height - pos.height) / 2;\n }\n\n var padd = Math.floor((view.getItemHeight(task.id) - height) / 2); //\tif(task.type == cfg.types.milestone){\n //\t\tpadd -= 1;\n //\t}\n //\tif (taskType == cfg.types.milestone && cfg.link_line_width > 1) {\n //\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\n //\t\tpadd += 1;\n //\t}\n\n if (taskType == cfg.types.milestone) {\n pos.left -= Math.round(height / 2);\n pos.width = height;\n }\n\n var div = document.createElement(\"div\");\n var width = Math.round(pos.width);\n\n if (view.$config.item_attribute) {\n div.setAttribute(view.$config.item_attribute, task.id);\n div.setAttribute(view.$config.bind + \"_id\", task.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n if (cfg.show_progress && taskType != cfg.types.milestone) {\n _render_task_progress(task, div, width, cfg, templates);\n } //use separate div to display content above progress bar\n\n\n var content = _render_task_content(task, width, templates);\n\n if (task.textColor) {\n content.style.color = task.textColor;\n }\n\n div.appendChild(content);\n\n var css = _combine_item_class(\"gantt_task_line\", templates.task_class(task.start_date, task.end_date, task), task.id, view);\n\n if (task.color || task.progressColor || task.textColor) {\n css += \" gantt_task_inline_color\";\n }\n\n if (pos.width < 20) {\n css += \" gantt_thin_task\";\n }\n\n div.className = css;\n var styles = [\"left:\" + pos.left + \"px\", \"top:\" + (padd + pos.top) + 'px', \"height:\" + (taskType == cfg.types.milestone ? pos.height : height) + 'px', \"line-height:\" + Math.max(height < 30 ? height - 2 : height, 0) + 'px', \"width:\" + width + 'px'];\n\n if (task.color) {\n styles.push(\"background-color:\" + task.color);\n }\n\n if (task.textColor) {\n styles.push(\"color:\" + task.textColor);\n }\n\n div.style.cssText = styles.join(\";\");\n\n var side = _render_leftside_content(task, cfg, templates, controlsMargin);\n\n if (side) div.appendChild(side);\n side = _render_rightside_content(task, cfg, templates, controlsMargin);\n if (side) div.appendChild(side);\n\n gantt._waiAria.setTaskBarAttr(task, div);\n\n var state = gantt.getState();\n\n if (!gantt.isReadonly(task)) {\n if (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\n _render_pair(div, \"gantt_task_drag\", task, function (css) {\n var el = document.createElement(\"div\");\n el.className = css;\n return el;\n }, cfg);\n }\n\n if (cfg.drag_links && cfg.show_links) {\n _render_pair(div, \"gantt_link_control\", task, function (css) {\n var outer = document.createElement(\"div\");\n outer.className = css;\n outer.style.cssText = [\"height:\" + height + 'px', \"line-height:\" + height + 'px'].join(\";\");\n var inner = document.createElement(\"div\");\n inner.className = \"gantt_link_point\";\n var showLinkPoints = false;\n\n if (state.link_source_id && cfg.touch) {\n showLinkPoints = true;\n }\n\n inner.style.display = showLinkPoints ? \"block\" : \"\";\n outer.appendChild(inner);\n return outer;\n }, cfg, controlsMargin);\n }\n }\n\n return div;\n }\n\n function _render_side_content(task, template, cssClass, marginStyle) {\n if (!template) return null;\n var text = template(task.start_date, task.end_date, task);\n if (!text) return null;\n var content = document.createElement(\"div\");\n content.className = \"gantt_side_content \" + cssClass;\n content.innerHTML = text;\n\n if (marginStyle) {\n content.style[marginStyle.type] = Math.abs(marginStyle.value) + \"px\";\n }\n\n return content;\n }\n\n function _render_leftside_content(task, cfg, templates, margin) {\n var css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\n\n var marginStyle = null;\n\n if (margin) {\n marginStyle = {\n type: \"marginRight\",\n value: margin\n };\n }\n\n return _render_side_content(task, templates.leftside_text, css, marginStyle);\n }\n\n function _render_rightside_content(task, cfg, templates, margin) {\n var css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\n\n var marginStyle = null;\n\n if (margin) {\n marginStyle = {\n type: \"marginLeft\",\n value: margin\n };\n }\n\n return _render_side_content(task, templates.rightside_text, css, marginStyle);\n }\n\n function _get_link_crossing_css(left, task) {\n var cond = _get_conditions(left);\n\n for (var i in cond) {\n var links = task[i];\n\n for (var ln = 0; ln < links.length; ln++) {\n var link = gantt.getLink(links[ln]);\n\n for (var tp = 0; tp < cond[i].length; tp++) {\n if (link.type == cond[i][tp]) {\n return \"gantt_link_crossing\";\n }\n }\n }\n }\n\n return \"\";\n }\n\n function _render_task_content(task, width, templates) {\n var content = document.createElement(\"div\");\n\n if (gantt.getTaskType(task.type) != gantt.config.types.milestone) {\n content.innerHTML = templates.task_text(task.start_date, task.end_date, task);\n } else if (gantt.getTaskType(task.type) == gantt.config.types.milestone && width) {\n content.style.height = content.style.width = width + \"px\";\n }\n\n content.className = \"gantt_task_content\"; //content.style.width = width + 'px';\n\n return content;\n }\n\n function _render_task_progress(task, element, maxWidth, cfg, templates) {\n var done = task.progress * 1 || 0;\n maxWidth = Math.max(maxWidth - 2, 0); //2px for borders\n\n var pr = document.createElement(\"div\");\n var width = Math.round(maxWidth * done);\n width = Math.min(maxWidth, width);\n\n if (task.progressColor) {\n pr.style.backgroundColor = task.progressColor;\n pr.style.opacity = 1;\n }\n\n pr.style.width = width + 'px';\n pr.className = \"gantt_task_progress\";\n pr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\n\n if (cfg.rtl) {\n pr.style.position = \"absolute\";\n pr.style.right = \"0px\";\n }\n\n var wrapper = document.createElement(\"div\");\n wrapper.className = \"gantt_task_progress_wrapper\";\n wrapper.appendChild(pr);\n element.appendChild(wrapper);\n\n if (gantt.config.drag_progress && !gantt.isReadonly(task)) {\n var drag = document.createElement(\"div\");\n var markerPos = width;\n\n if (cfg.rtl) {\n markerPos = maxWidth - width;\n }\n\n drag.style.left = markerPos + 'px';\n drag.className = \"gantt_task_progress_drag\";\n pr.appendChild(drag);\n element.appendChild(drag);\n }\n }\n\n function _get_conditions(leftside) {\n if (leftside) {\n return {\n $source: [gantt.config.links.start_to_start],\n $target: [gantt.config.links.start_to_start, gantt.config.links.finish_to_start]\n };\n } else {\n return {\n $source: [gantt.config.links.finish_to_start, gantt.config.links.finish_to_finish],\n $target: [gantt.config.links.finish_to_finish]\n };\n }\n }\n\n function _combine_item_class(basic, template, itemId, view) {\n var cfg = view.$getConfig();\n var css = [basic];\n if (template) css.push(template);\n var state = gantt.getState();\n var task = gantt.getTask(itemId);\n\n if (gantt.getTaskType(task.type) == cfg.types.milestone) {\n css.push(\"gantt_milestone\");\n } else if (gantt.getTaskType(task.type) == cfg.types.project) {\n css.push(\"gantt_project\");\n }\n\n css.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\n if (gantt.isSummaryTask(task)) css.push(\"gantt_dependent_task\");\n\n if (gantt.isSplitTask(task) && (cfg.open_split_tasks && !task.$open || !cfg.open_split_tasks)) {\n css.push(\"gantt_split_parent\");\n }\n\n if (cfg.select_task && gantt.isSelectedTask(itemId)) {\n css.push(\"gantt_selected\");\n }\n\n if (itemId == state.drag_id) {\n css.push(\"gantt_drag_\" + state.drag_mode);\n\n if (state.touch_drag) {\n css.push(\"gantt_touch_\" + state.drag_mode);\n }\n }\n\n if (state.link_source_id == itemId) css.push(\"gantt_link_source\");\n if (state.link_target_id == itemId) css.push(\"gantt_link_target\");\n\n if (cfg.highlight_critical_path && gantt.isCriticalTask) {\n if (gantt.isCriticalTask(task)) css.push(\"gantt_critical_task\");\n }\n\n if (state.link_landing_area && state.link_target_id && state.link_source_id && state.link_target_id != state.link_source_id && (state.link_target_id == itemId || state.link_source_id == itemId)) {\n var from_id = state.link_source_id;\n var from_start = state.link_from_start;\n var to_start = state.link_to_start;\n var allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\n var dragClass = \"\";\n\n if (allowDrag) {\n if (to_start) dragClass = \"link_start_allow\";else dragClass = \"link_finish_allow\";\n } else {\n if (to_start) dragClass = \"link_start_deny\";else dragClass = \"link_finish_deny\";\n }\n\n css.push(dragClass);\n }\n\n return css.join(\" \");\n }\n\n function _render_pair(parent, css, task, content, config, margin) {\n var state = gantt.getState();\n var className, element;\n\n if (+task.start_date >= +state.min_date) {\n className = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\n element = content(className.join(\" \"));\n element.setAttribute(\"data-bind-property\", \"start_date\");\n\n if (margin) {\n element.style.marginLeft = margin + \"px\";\n }\n\n parent.appendChild(element);\n }\n\n if (+task.end_date <= +state.max_date) {\n className = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\n element = content(className.join(\" \"));\n element.setAttribute(\"data-bind-property\", \"end_date\");\n\n if (margin) {\n element.style.marginRight = margin + \"px\";\n }\n\n parent.appendChild(element);\n }\n }\n\n return _render_task_element;\n}\n\nmodule.exports = createTaskRenderer;","var ScaleHelper = require(\"./scales_ignore\");\n\nvar eventable = require(\"../../../utils/eventable\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nvar topPositionMixin = require(\"../row_position_mixin\");\n\nvar canvasRender = require(\"./tasks_canvas_render\");\n\nvar Timeline = function Timeline(parent, config, factory, gantt) {\n this.$config = utils.mixin({}, config || {});\n this.$scaleHelper = new ScaleHelper(gantt);\n this.$gantt = gantt;\n this._posFromDateCache = {};\n this._timelineDragScroll = null;\n utils.mixin(this, topPositionMixin(this));\n eventable(this);\n};\n\nTimeline.prototype = {\n init: function init(container) {\n container.innerHTML += \"<div class='gantt_task' style='width:inherit;height:inherit;'></div>\";\n this.$task = container.childNodes[0];\n this.$task.innerHTML = \"<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>\";\n this.$task_scale = this.$task.childNodes[0];\n this.$task_data = this.$task.childNodes[1];\n this.$task_data.innerHTML = \"<div class='gantt_task_bg'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div>\";\n this.$task_bg = this.$task_data.childNodes[0];\n this.$task_links = this.$task_data.childNodes[1];\n this.$task_bars = this.$task_data.childNodes[2];\n this._tasks = {\n col_width: 0,\n width: [],\n // width of each column\n full_width: 0,\n // width of all columns\n trace_x: [],\n rendered: {}\n };\n var config = this.$getConfig();\n var attr = config[this.$config.bind + \"_attribute\"];\n var linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n if (!linksAttr && this.$config.bindLinks) {\n linksAttr = \"data-\" + this.$config.bindLinks + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n this.$config.link_attribute = linksAttr || null;\n\n var layers = this._createLayerConfig();\n\n if (!this.$config.layers) {\n this.$config.layers = layers.tasks;\n }\n\n if (!this.$config.linkLayers) {\n this.$config.linkLayers = layers.links;\n }\n\n this._attachLayers(this.$gantt);\n\n this.callEvent(\"onReady\", []); //this.refresh();\n\n if (this.$gantt.ext.dragTimeline) {\n this._timelineDragScroll = this.$gantt.ext.dragTimeline.create();\n\n this._timelineDragScroll.attach(this);\n }\n },\n setSize: function setSize(width, height) {\n var config = this.$getConfig();\n\n if (width * 1 === width) {\n this.$config.width = width;\n }\n\n if (height * 1 === height) {\n this.$config.height = height;\n var dataHeight = Math.max(this.$config.height - config.scale_height);\n this.$task_data.style.height = dataHeight + 'px';\n }\n\n this.refresh();\n this.$task_bg.style.backgroundImage = \"\";\n\n if (config.smart_rendering && this.$config.rowStore) {\n this.$task_bg.style.height = this.getTotalHeight() + \"px\";\n } else {\n this.$task_bg.style.height = \"\";\n }\n\n var scale = this._tasks; //timeline area layers\n\n var data_els = this.$task_data.childNodes;\n\n for (var i = 0, len = data_els.length; i < len; i++) {\n var el = data_els[i];\n if (el.hasAttribute(\"data-layer\") && el.style) el.style.width = scale.full_width + \"px\";\n }\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$task.offsetWidth;\n }\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this.isVisible() ? this._tasks.full_width : 0;\n return {\n x: this.isVisible() ? this.$config.width : 0,\n y: this.isVisible() ? this.$config.height : 0,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (top * 1 === top) {\n this.$config.scrollTop = top;\n this.$task_data.scrollTop = this.$config.scrollTop;\n scrolled = true;\n }\n\n if (left * 1 === left) {\n this.$task.scrollLeft = left;\n this.$config.scrollLeft = this.$task.scrollLeft;\n\n this._refreshScales();\n\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n _refreshScales: function _refreshScales() {\n if (!this.isVisible()) return;\n var config = this.$getConfig();\n if (!config.smart_scales) return;\n var viewPort = this.getViewPort();\n var scales = this._scales;\n this.$task_scale.innerHTML = this._getScaleChunkHtml(scales, viewPort.x, viewPort.x_end);\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n _createLayerConfig: function _createLayerConfig() {\n var self = this;\n\n var taskFilter = function taskFilter() {\n return self.isVisible();\n };\n\n var barVisible = function barVisible(id, task) {\n return !task.hide_bar;\n };\n\n var taskLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.taskBar(),\n container: this.$task_bars,\n filter: [taskFilter, barVisible]\n }, {\n renderer: this.$gantt.$ui.layers.taskSplitBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskRollupBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskBg(),\n container: this.$task_bg,\n filter: [//function(){\n //\treturn !self.$getConfig().static_background;\n //},\n taskFilter]\n }];\n var linkLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.link(),\n container: this.$task_links,\n filter: [taskFilter]\n }];\n return {\n tasks: taskLayers,\n links: linkLayers\n };\n },\n _attachLayers: function _attachLayers(gantt) {\n this._taskLayers = [];\n this._linkLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n\n if (this.$config.bind) {\n this._bindStore();\n\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n taskRenderer.container = function () {\n return self.$task_data;\n };\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n if (typeof layer == \"function\" || layer && layer.render && layer.update) {\n layer = {\n renderer: layer\n };\n }\n\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n\n if (layer.expose) {\n this._taskRenderer = taskRenderer.getLayer(bar_layer);\n }\n }\n\n this._initStaticBackgroundRender();\n }\n\n if (this.$config.bindLinks) {\n self.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (!linkRenderer) {\n linkRenderer = layers.createDataRender({\n name: this.$config.bindLinks,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n var linkLayers = this.$config.linkLayers;\n\n for (var i = 0; linkLayers && i < linkLayers.length; i++) {\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n var layer = linkLayers[i];\n layer.view = this; //\tlayer.getViewPort = getViewPort;\n //\tsubscribeSmartRender(layer);\n\n var linkLayer = linkRenderer.addLayer(layer);\n\n this._taskLayers.push(linkLayer);\n\n if (linkLayers[i].expose) {\n this._linkRenderer = linkRenderer.getLayer(linkLayer);\n }\n }\n }\n },\n _initStaticBackgroundRender: function _initStaticBackgroundRender() {\n var self = this;\n var staticRender = canvasRender.create();\n var store = self.$config.rowStore;\n if (!store) return;\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function (id, item, mode) {\n if (id !== null) {\n return;\n }\n\n if (!self.isVisible()) return;\n var config = self.$getConfig();\n\n if (config.static_background || config.timeline_placeholder) {\n var store = self.$gantt.getDatastore(self.$config.bind);\n var staticBgContainer = self.$task_bg_static;\n\n if (!staticBgContainer) {\n staticBgContainer = document.createElement(\"div\");\n staticBgContainer.className = \"gantt_task_bg\";\n self.$task_bg_static = staticBgContainer;\n\n if (self.$task_bg.nextSibling) {\n self.$task_data.insertBefore(staticBgContainer, self.$task_bg.nextSibling);\n } else {\n self.$task_data.appendChild(staticBgContainer);\n }\n }\n\n if (store) {\n var staticBackgroundHeight = self.getTotalHeight();\n\n if (config.timeline_placeholder) {\n staticBackgroundHeight = config.timeline_placeholder.height || self.$task_data.offsetHeight || 99999;\n }\n\n staticRender.render(staticBgContainer, config, self.getScale(), staticBackgroundHeight, self.getItemHeight(item ? item.id : null));\n }\n } else if (config.static_background) {\n if (self.$task_bg_static && self.$task_bg_static.parentNode) {\n self.$task_bg_static.parentNode.removeChild(self.$task_bg_static);\n }\n }\n });\n this.attachEvent(\"onDestroy\", function () {\n staticRender.destroy();\n });\n\n this._initStaticBackgroundRender = function () {}; //init once\n\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n if (this._linkLayers) {\n for (var i = 0; i < this._linkLayers.length; i++) {\n linkRenderer.removeLayer(this._linkLayers[i]);\n }\n }\n\n this._linkLayers = [];\n this._taskLayers = [];\n },\n _render_tasks_scales: function _render_tasks_scales() {\n var config = this.$getConfig();\n var scales_html = \"\",\n outer_width = 0,\n scale_height = 0;\n var state = this.$gantt.getState();\n\n if (this.isVisible()) {\n var helpers = this.$scaleHelper;\n\n var scales = this._getScales();\n\n scale_height = config.scale_height;\n var availWidth = this.$config.width;\n\n if (config.autosize == \"x\" || config.autosize == \"xy\") {\n availWidth = Math.max(config.autosize_min_width, 0);\n }\n\n var cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n var cfg = this._tasks = cfgs[cfgs.length - 1];\n this._scales = cfgs;\n this._posFromDateCache = {};\n scales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n outer_width = cfg.full_width + \"px\"; //cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\n scale_height += \"px\";\n }\n\n this.$task_scale.style.height = scale_height;\n this.$task_data.style.width = this.$task_scale.style.width = outer_width;\n this.$task_scale.innerHTML = scales_html;\n },\n _getScaleChunkHtml: function _get_scale_chunk_html(scales, fromPos, toPos) {\n var templates = this.$gantt.templates;\n var html = [];\n var css = templates.scale_row_class;\n\n for (var i = 0; i < scales.length; i++) {\n var cssClass = \"gantt_scale_line\";\n var tplClass = css(scales[i]);\n\n if (tplClass) {\n cssClass += \" \" + tplClass;\n }\n\n html.push(\"<div class=\\\"\" + cssClass + \"\\\" style=\\\"height:\" + scales[i].height + \"px;position:relative;line-height:\" + scales[i].height + \"px\\\">\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"</div>\");\n }\n\n return html.join(\"\");\n },\n _prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\n var globalConfig = this.$getConfig();\n var globalTemplates = this.$gantt.templates;\n var cells = [];\n var date = null,\n css = null;\n var content = config.format || config.template || config.date;\n\n if (typeof content === \"string\") {\n content = this.$gantt.date.date_to_str(content);\n }\n\n var startIndex = 0,\n endIndex = config.count;\n\n if (globalConfig.smart_scales && !isNaN(fromPos) && !isNaN(toPos)) {\n startIndex = helpers.findBinary(config.left, fromPos);\n endIndex = helpers.findBinary(config.left, toPos) + 1;\n }\n\n css = config.css || function () {};\n\n if (!config.css && globalConfig.inherit_scale_class) {\n css = globalTemplates.scale_cell_class;\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n if (!config.trace_x[i]) break;\n date = new Date(config.trace_x[i]);\n var value = content.call(this, date),\n width = config.width[i],\n height = config.height,\n left = config.left[i],\n style = \"\",\n template = \"\",\n cssclass = \"\";\n\n if (width) {\n var position = globalConfig.smart_scales ? \"position:absolute;left:\" + left + \"px\" : \"\";\n style = \"width:\" + width + \"px;height:\" + height + \"px;\" + position;\n cssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\n template = css.call(this, date);\n if (template) cssclass += \" \" + template;\n\n var ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\n\n var cell = \"<div class='\" + cssclass + \"'\" + ariaAttr + \" style='\" + style + \"'>\" + value + \"</div>\";\n cells.push(cell);\n } else {//do not render ignored cells\n }\n }\n\n return cells.join(\"\");\n },\n dateFromPos: function dateFromPos(x) {\n var scale = this._tasks;\n\n if (x < 0 || x > scale.full_width || !scale.full_width) {\n return null;\n }\n\n var ind = helpers.findBinary(this._tasks.left, x);\n var summ = this._tasks.left[ind];\n var col_width = scale.width[ind] || scale.col_width;\n var part = 0;\n\n if (col_width) {\n part = (x - summ) / col_width;\n\n if (scale.rtl) {\n part = 1 - part;\n }\n }\n\n var unit = 0;\n\n if (part) {\n unit = this._getColumnDuration(scale, scale.trace_x[ind]);\n }\n\n var date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\n return date;\n },\n posFromDate: function posFromDate(date) {\n if (!this.isVisible()) return 0;\n\n if (!date) {\n return 0;\n }\n\n var dateValue = String(date.valueOf());\n\n if (this._posFromDateCache[dateValue] !== undefined) {\n return this._posFromDateCache[dateValue];\n }\n\n var ind = this.columnIndexByDate(date);\n this.$gantt.assert(ind >= 0, \"Invalid day index\");\n var wholeCells = Math.floor(ind);\n var partCell = ind % 1;\n\n var pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\n\n if (wholeCells == this._tasks.width.length) pos += this._tasks.width[this._tasks.width.length - 1]; //for(var i=1; i <= wholeCells; i++)\n //\tpos += gantt._tasks.width[i-1];\n\n if (partCell) {\n if (wholeCells < this._tasks.width.length) {\n pos += this._tasks.width[wholeCells] * (partCell % 1);\n } else {\n pos += 1;\n }\n }\n\n var roundPos = Math.round(pos);\n this._posFromDateCache[dateValue] = roundPos;\n return Math.round(roundPos);\n },\n _getNextVisibleColumn: function _getNextVisibleColumn(startIndex, columns, ignores) {\n // iterate columns to the right\n var date = +columns[startIndex];\n var visibleDateIndex = startIndex;\n\n while (ignores[date]) {\n visibleDateIndex++;\n date = +columns[visibleDateIndex];\n }\n\n return visibleDateIndex;\n },\n _getPrevVisibleColumn: function _getPrevVisibleColumn(startIndex, columns, ignores) {\n // iterate columns to the left\n var date = +columns[startIndex];\n var visibleDateIndex = startIndex;\n\n while (ignores[date]) {\n visibleDateIndex--;\n date = +columns[visibleDateIndex];\n }\n\n return visibleDateIndex;\n },\n _getClosestVisibleColumn: function _getClosestVisibleColumn(startIndex, columns, ignores) {\n var visibleDateIndex = this._getNextVisibleColumn(startIndex, columns, ignores);\n\n if (!columns[visibleDateIndex]) {\n visibleDateIndex = this._getPrevVisibleColumn(startIndex, columns, ignores);\n }\n\n return visibleDateIndex;\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var pos = new Date(date).valueOf();\n var days = this._tasks.trace_x_ascending,\n ignores = this._tasks.ignore_x;\n var state = this.$gantt.getState();\n\n if (pos <= state.min_date) {\n if (this._tasks.rtl) {\n return days.length;\n } else {\n return 0;\n }\n }\n\n if (pos >= state.max_date) {\n if (this._tasks.rtl) {\n return 0;\n } else {\n return days.length;\n }\n }\n\n var dateIndex = helpers.findBinary(days, pos);\n\n var visibleIndex = this._getClosestVisibleColumn(dateIndex, days, ignores);\n\n var visibleDate = days[visibleIndex];\n var transition = this._tasks.trace_index_transition;\n\n if (!visibleDate) {\n if (transition) {\n return transition[0];\n } else {\n return 0;\n }\n }\n\n var part = (date - days[visibleIndex]) / this._getColumnDuration(this._tasks, days[visibleIndex]);\n\n if (transition) {\n return transition[visibleIndex] + (1 - part);\n } else {\n return visibleIndex + part;\n }\n },\n getItemPosition: function getItemPosition(task, start_date, end_date) {\n var xLeft, xRight, width;\n\n if (this._tasks.rtl) {\n xRight = this.posFromDate(start_date || task.start_date);\n xLeft = this.posFromDate(end_date || task.end_date);\n } else {\n xLeft = this.posFromDate(start_date || task.start_date);\n xRight = this.posFromDate(end_date || task.end_date);\n }\n\n width = Math.max(xRight - xLeft, 0);\n var y = this.getItemTop(task.id);\n var height = this.getBarHeight(task.id);\n var rowHeight = this.getItemHeight(task.id);\n return {\n left: xLeft,\n top: y,\n height: height,\n width: width,\n rowHeight: rowHeight\n };\n },\n getBarHeight: function getBarHeight(taskId, isMilestoneRender) {\n var config = this.$getConfig();\n var task = this.$config.rowStore.getItem(taskId); // height of the bar item\n\n var height = task.task_height || task.bar_height || config.bar_height || config.task_height;\n var rowHeight = this.getItemHeight(taskId);\n\n if (height == \"full\") {\n var offset = config.task_height_offset || 5;\n height = rowHeight - offset;\n } //item height cannot be bigger than row height\n\n\n height = Math.min(height, rowHeight);\n\n if (isMilestoneRender) {\n // to get correct height for addapting Milestone to the row\n height = Math.round(height / Math.sqrt(2));\n }\n\n return Math.max(height, 0);\n },\n getScale: function getScale() {\n return this._tasks;\n },\n _getScales: function _get_scales() {\n var config = this.$getConfig();\n var helpers = this.$scaleHelper;\n var scales = [helpers.primaryScale(config)].concat(helpers.getSubScales(config));\n helpers.sortScales(scales);\n return scales;\n },\n _getColumnDuration: function _get_coll_duration(scale, date) {\n return this.$gantt.date.add(date, scale.step, scale.unit) - date;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._timelineCacheAttached) {\n var self = this;\n rowStore._timelineCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._timelineCacheAttached) {\n rowStore.detachEvent(rowStore._timelineCacheAttached);\n rowStore._timelineCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n if (this.$config.bindLinks) {\n this.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\n }\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initStaticBackgroundRender();\n\n this._render_tasks_scales();\n },\n destructor: function destructor() {\n var gantt = this.$gantt;\n\n this._clearLayers(gantt);\n\n this._unbindStore();\n\n this.$task = null;\n this.$task_scale = null;\n this.$task_data = null;\n this.$task_bg = null;\n this.$task_links = null;\n this.$task_bars = null;\n this.$gantt = null;\n\n if (this.$config.rowStore) {\n this.$config.rowStore.detachEvent(this._staticBgHandler);\n this.$config.rowStore = null;\n }\n\n if (this.$config.linkStore) {\n this.$config.linkStore = null;\n }\n\n if (this._timelineDragScroll) {\n this._timelineDragScroll.destructor();\n\n this._timelineDragScroll = null;\n }\n\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n }\n};\nmodule.exports = Timeline;","module.exports = function (item, view, config) {\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: 0,\n right: Infinity\n };\n};","function create(gantt) {\n var events = [];\n return {\n delegate: function delegate(event, className, handler, root) {\n events.push([event, className, handler, root]);\n var helper = gantt.$services.getService(\"mouseEvents\");\n helper.delegate(event, className, handler, root);\n },\n destructor: function destructor() {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\n for (var i = 0; i < events.length; i++) {\n var h = events[i];\n mouseEvents.detach(h[0], h[1], h[2], h[3]);\n }\n\n events = [];\n }\n };\n}\n\nmodule.exports = create;","var domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n eventable = require(\"../../../utils/eventable\"),\n gridResize = require(\"./grid_resize\"),\n topPositionMixin = require(\"../row_position_mixin\"),\n rowResize = require(\"./task_grid_row_resize\");\n\nvar ColumnDnd = require(\"../plugins/column_grid_dnd\")[\"default\"];\n\nvar Grid = function Grid(parent, config, factory, gantt) {\n this.$config = utils.mixin({}, config || {});\n this.$gantt = gantt;\n this.$parent = parent;\n eventable(this);\n this.$state = {};\n utils.mixin(this, topPositionMixin(this));\n};\n\nGrid.prototype = {\n init: function init(container) {\n var gantt = this.$gantt;\n\n var gridAriaAttr = gantt._waiAria.gridAttrString();\n\n var gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\n\n var _ganttConfig = this.$getConfig();\n\n var reorderColumns = _ganttConfig.reorder_grid_columns || false;\n\n if (this.$config.reorder_grid_columns !== undefined) {\n reorderColumns = this.$config.reorder_grid_columns;\n }\n\n container.innerHTML = \"<div class='gantt_grid' style='height:inherit;width:inherit;' \" + gridAriaAttr + \"></div>\";\n this.$grid = container.childNodes[0];\n this.$grid.innerHTML = \"<div class='gantt_grid_scale' \" + gantt._waiAria.gridScaleRowAttrString() + \"></div><div class='gantt_grid_data' \" + gridDataAriaAttr + \"></div>\";\n this.$grid_scale = this.$grid.childNodes[0];\n this.$grid_data = this.$grid.childNodes[1];\n var attr = _ganttConfig[this.$config.bind + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n\n if (!this.$config.layers) {\n var layers = this._createLayerConfig();\n\n this.$config.layers = layers;\n }\n\n var resizer = gridResize(gantt, this);\n resizer.init();\n this._renderHeaderResizers = resizer.doOnRender;\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n var resizerrow = rowResize(gantt, this);\n resizerrow.init();\n\n this._addLayers(this.$gantt);\n\n this._initEvents();\n\n if (reorderColumns) {\n this._columnDND = new ColumnDnd(gantt, this);\n\n this._columnDND.init();\n }\n\n this.callEvent(\"onReady\", []); //this.refresh();\n },\n _validateColumnWidth: function _validateColumnWidth(column, property) {\n // user can set {name:\"text\", width:\"200\",...} for some reason,\n // check and convert it to number when possible\n var value = column[property];\n\n if (value && value != \"*\") {\n var gantt = this.$gantt;\n var numericWidth = value * 1;\n\n if (isNaN(numericWidth)) {\n gantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n } else {\n column[property] = numericWidth;\n }\n }\n },\n setSize: function setSize(width, height) {\n this.$config.width = this.$state.width = width;\n this.$config.height = this.$state.height = height; // TODO: maybe inherit and override in a subclass instead of extending here\n\n var columns = this.getGridColumns(),\n innerWidth = 0;\n var config = this.$getConfig();\n var elasticColumns = config.grid_elastic_columns;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n this._validateColumnWidth(columns[i], \"min_width\");\n\n this._validateColumnWidth(columns[i], \"max_width\");\n\n this._validateColumnWidth(columns[i], \"width\");\n\n innerWidth += columns[i].width * 1;\n }\n\n var outerWidth;\n\n if (isNaN(innerWidth) || !this.$config.scrollable) {\n outerWidth = this._setColumnsWidth(width + 1);\n innerWidth = outerWidth;\n }\n\n if (this.$config.scrollable && elasticColumns && !isNaN(innerWidth)) {\n // GS-1352: Allow resizing the grid columns, then the grid width is increased\n // or keep the grid width, but don't allow column resize to affect the grid width\n var columnProperty = \"width\";\n\n if (elasticColumns == \"min_width\") {\n columnProperty = \"min_width\";\n }\n\n var newColumnWidth = 0;\n columns.forEach(function (col) {\n newColumnWidth += col[columnProperty] || config.min_grid_column_width;\n }); //newColumnWidth--; // the total column width shouldn't match the outerWidth // GS-2190 reducing width seems to be not needed\n\n var columnsWidth = Math.max(newColumnWidth, width);\n innerWidth = this._setColumnsWidth(columnsWidth);\n outerWidth = width;\n }\n\n if (this.$config.scrollable) {\n this.$grid_scale.style.width = innerWidth + \"px\";\n this.$grid_data.style.width = innerWidth + \"px\";\n } else {\n this.$grid_scale.style.width = \"inherit\";\n this.$grid_data.style.width = \"inherit\";\n }\n\n this.$config.width -= 1;\n var config = this.$getConfig();\n\n if (outerWidth !== width) {\n if (outerWidth !== undefined) {\n config.grid_width = outerWidth;\n this.$config.width = outerWidth - 1;\n } else {\n if (!isNaN(innerWidth)) {\n this._setColumnsWidth(innerWidth);\n\n config.grid_width = innerWidth;\n this.$config.width = innerWidth - 1;\n }\n }\n }\n\n var dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n this.$grid_data.style.height = dataHeight + \"px\";\n this.refresh();\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this._getGridWidth();\n\n var size = {\n x: this.$state.width,\n y: this.$state.height,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n return size;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._gridCacheAttached) {\n var self = this;\n rowStore._gridCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._gridCacheAttached) {\n rowStore.detachEvent(rowStore._gridCacheAttached);\n rowStore._gridCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initSmartRenderingPlaceholder();\n\n this._calculateGridWidth();\n\n this._renderGridHeader();\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (left * 1 == left) {\n this.$config.scrollLeft = this.$state.scrollLeft = this.$grid.scrollLeft = left;\n scrolled = true;\n } // var config = this.$getConfig();\n\n\n if (top * 1 == top) {\n this.$config.scrollTop = this.$state.scrollTop = this.$grid_data.scrollTop = top;\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n getColumnIndex: function getColumnIndex(name, excludeHidden) {\n var columns = this.$getConfig().columns;\n var hiddenIndexShift = 0;\n\n for (var i = 0; i < columns.length; i++) {\n // GS-1257. If the cell is hidden, the target column index should be correct\n if (excludeHidden && columns[i].hide) {\n hiddenIndexShift++;\n }\n\n if (columns[i].name == name) {\n return i - hiddenIndexShift;\n }\n }\n\n return null;\n },\n getColumn: function getColumn(name) {\n var index = this.getColumnIndex(name);\n\n if (index === null) {\n return null;\n }\n\n return this.$getConfig().columns[index];\n },\n getGridColumns: function getGridColumns() {\n var config = this.$getConfig();\n return config.columns.slice();\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$grid.offsetWidth;\n }\n },\n // getItemHeight: function () {\n // \tvar config = this.$getConfig();\n // \treturn config.row_height;\n // },\n _createLayerConfig: function _createLayerConfig() {\n var gantt = this.$gantt;\n var self = this;\n var layers = [{\n renderer: gantt.$ui.layers.gridLine(),\n container: this.$grid_data,\n filter: [function () {\n return self.isVisible();\n }]\n }, {\n renderer: gantt.$ui.layers.gridTaskRowResizer(),\n container: this.$grid_data,\n append: true,\n filter: [function () {\n return gantt.config.resize_rows;\n }]\n }];\n return layers;\n },\n _addLayers: function _addLayers(gantt) {\n if (!this.$config.bind) return;\n this._taskLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$grid_data;\n }\n });\n }\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n }\n\n this._bindStore();\n\n this._initSmartRenderingPlaceholder();\n },\n _refreshPlaceholderOnStoreUpdate: function _refreshPlaceholderOnStoreUpdate(id) {\n var config = this.$getConfig(),\n store = this.$config.rowStore;\n\n if (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n return;\n }\n\n var contentHeight;\n\n if (this.$config.scrollY) {\n var scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n if (scroll) contentHeight = scroll.getScrollState().scrollSize;\n }\n\n if (!contentHeight) {\n contentHeight = store ? this.getTotalHeight() : 0;\n }\n\n if (contentHeight) {\n if (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\n this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n }\n\n var placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n placeholder.style.visibility = \"hidden\";\n placeholder.style.height = contentHeight + \"px\";\n placeholder.style.width = \"1px\";\n this.$grid_data.appendChild(placeholder);\n }\n },\n _initSmartRenderingPlaceholder: function _initSmartRenderingPlaceholder() {\n var store = this.$config.rowStore;\n\n if (!store) {\n return;\n } else {\n this._initSmartRenderingPlaceholder = function () {};\n }\n\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n },\n _initEvents: function _initEvents() {\n var gantt = this.$gantt;\n\n this._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.close(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.open(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n this._taskLayers = [];\n },\n _getColumnWidth: function _getColumnWidth(column, config, width) {\n var min_width = column.min_width || config.min_grid_column_width;\n var new_width = Math.max(width, min_width || 10);\n if (column.max_width) new_width = Math.min(new_width, column.max_width);\n return new_width;\n },\n // set min width only if width < than config.min_grid_column_width\n _checkGridColumnMinWidthLimits: function _checkGridColumnMinWidthLimits(columns, config) {\n for (var i = 0, l = columns.length; i < l; i++) {\n var width = columns[i].width * 1;\n\n if (!columns[i].min_width && width < config.min_grid_column_width) {\n columns[i].min_width = width;\n }\n }\n },\n // return min and max possible grid width according to restricts\n _getGridWidthLimits: function _getGridWidthLimits() {\n var config = this.$getConfig(),\n columns = this.getGridColumns(),\n min_limit = 0,\n max_limit = 0;\n\n for (var i = 0; i < columns.length; i++) {\n min_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\n\n if (max_limit !== undefined) {\n max_limit = columns[i].max_width ? max_limit + columns[i].max_width : undefined;\n }\n }\n\n this._checkGridColumnMinWidthLimits(columns, config); // FIX ME: should it be before calculating limits?\n\n\n return [min_limit, max_limit];\n },\n // resize columns to get total newWidth, starting from columns[start_index]\n _setColumnsWidth: function _setColumnsWidth(newWidth, start_index) {\n var config = this.$getConfig();\n var columns = this.getGridColumns(),\n columns_width = 0,\n final_width = newWidth;\n start_index = !window.isNaN(start_index) ? start_index : -1;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n\n if (window.isNaN(columns_width)) {\n this._calculateGridWidth();\n\n columns_width = 0;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n }\n\n var extra_width = final_width - columns_width;\n var start_width = 0;\n\n for (var i = 0; i < start_index + 1; i++) {\n start_width += columns[i].width;\n }\n\n columns_width -= start_width;\n\n for (var i = start_index + 1; i < columns.length; i++) {\n var col = columns[i];\n var share = Math.round(extra_width * (col.width / columns_width)); // columns have 2 additional restrict fields - min_width & max_width that are set by user\n\n if (extra_width < 0) {\n if (col.min_width && col.width + share < col.min_width) share = col.min_width - col.width;else if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width) share = config.min_grid_column_width - col.width;\n } else if (col.max_width && col.width + share > col.max_width) share = col.max_width - col.width;\n\n columns_width -= col.width;\n col.width += share;\n extra_width -= share;\n }\n\n var iterator = extra_width > 0 ? 1 : -1;\n\n while (extra_width > 0 && iterator === 1 || extra_width < 0 && iterator === -1) {\n var curExtra = extra_width;\n\n for (i = start_index + 1; i < columns.length; i++) {\n var new_width = columns[i].width + iterator;\n\n if (new_width == this._getColumnWidth(columns[i], config, new_width)) {\n extra_width -= iterator;\n columns[i].width = new_width;\n }\n\n if (!extra_width) break;\n }\n\n if (curExtra == extra_width) break;\n } // if impossible to resize the right-side columns, resize the start column\n\n\n if (extra_width && start_index > -1) {\n var new_width = columns[start_index].width + extra_width;\n if (new_width == this._getColumnWidth(columns[start_index], config, new_width)) columns[start_index].width = new_width;\n } //if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n //\treturn;\n\n\n return this._getColsTotalWidth();\n },\n _getColsTotalWidth: function _getColsTotalWidth() {\n var columns = this.getGridColumns();\n var cols_width = 0;\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n return false;\n }\n\n cols_width += v;\n }\n\n return cols_width;\n },\n _calculateGridWidth: function _calculateGridWidth() {\n var config = this.$getConfig();\n var columns = this.getGridColumns();\n var cols_width = 0;\n var unknown = [];\n var width = [];\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n v = config.min_grid_column_width || 10;\n unknown.push(i);\n }\n\n width[i] = v;\n cols_width += v;\n }\n\n var gridWidth = this._getGridWidth() + 1;\n\n if (config.autofit || unknown.length) {\n var diff = gridWidth - cols_width; // TODO: logic may be improved for proportional changing of width\n // autofit adjusts columns widths to the outer grid width\n // it doesn't makes sense if grid has inner scroll with elastic columns\n\n if (config.autofit && !config.grid_elastic_columns) {\n // delta must be added for all columns\n for (var i = 0; i < width.length; i++) {\n var delta = Math.round(diff / (width.length - i));\n width[i] += delta;\n\n var new_width = this._getColumnWidth(columns[i], config, width[i]);\n\n if (new_width != width[i]) {\n delta = new_width - width[i];\n width[i] = new_width;\n }\n\n diff -= delta;\n }\n } else if (unknown.length) {\n // there are several columns with undefined width\n for (var i = 0; i < unknown.length; i++) {\n var delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\n\n var index = unknown[i];\n width[index] += delta;\n\n var new_width = this._getColumnWidth(columns[index], config, width[index]);\n\n if (new_width != width[index]) {\n delta = new_width - width[index];\n width[index] = new_width;\n }\n\n diff -= delta;\n }\n }\n\n for (var i = 0; i < width.length; i++) {\n columns[i].width = width[i];\n }\n } else {\n var changed = gridWidth != cols_width;\n this.$config.width = cols_width - 1;\n config.grid_width = cols_width;\n\n if (changed) {\n this.$parent._setContentSize(this.$config.width, null);\n }\n }\n },\n _renderGridHeader: function _renderGridHeader() {\n var gantt = this.$gantt;\n var config = this.$getConfig();\n var locale = this.$gantt.locale;\n var templates = this.$gantt.templates;\n var columns = this.getGridColumns();\n\n if (config.rtl) {\n columns = columns.reverse();\n }\n\n var cells = [];\n var width = 0,\n labels = locale.labels;\n var lineHeigth = config.scale_height - 1;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i]; // ensure columns have non-empty names\n\n if (!col.name) {\n col.name = gantt.uid() + \"\";\n }\n\n var colWidth = col.width * 1;\n\n var gridWidth = this._getGridWidth();\n\n if (last && gridWidth > width + colWidth) col.width = colWidth = gridWidth - width;\n width += colWidth;\n var sort = gantt._sort && col.name == gantt._sort.name ? \"<div class='gantt_sort gantt_\" + gantt._sort.direction + \"'></div>\" : \"\";\n var cssClass = [\"gantt_grid_head_cell\", \"gantt_grid_head_\" + col.name, last ? \"gantt_last_cell\" : \"\", templates.grid_header_class(col.name, col)].join(\" \");\n var style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\n var label = col.label || labels[\"column_\" + col.name] || labels[col.name];\n label = label || \"\";\n\n var ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\n\n var cell = \"<div class='\" + cssClass + \"' style='\" + style + \"' \" + ariaAttrs + \" data-column-id='\" + col.name + \"' column_id='\" + col.name + \"'\" + \" data-column-name='\" + col.name + \"' data-column-index='\" + i + \"'\" + \">\" + label + sort + \"</div>\";\n cells.push(cell);\n }\n\n this.$grid_scale.style.height = config.scale_height + \"px\";\n this.$grid_scale.style.lineHeight = lineHeigth + \"px\"; //this.$grid_scale.style.width = \"inherit\";\n\n this.$grid_scale.innerHTML = cells.join(\"\");\n\n if (this._renderHeaderResizers) {\n this._renderHeaderResizers();\n }\n },\n _getGridWidth: function _getGridWidth() {\n // TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\n return this.$config.width;\n },\n destructor: function destructor() {\n this._clearLayers(this.$gantt);\n\n if (this._mouseDelegates) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n }\n\n this._unbindStore();\n\n this.$grid = null;\n this.$grid_scale = null;\n this.$grid_data = null;\n this.$gantt = null;\n\n if (this.$config.rowStore) {\n this.$config.rowStore.detachEvent(this._staticBgHandler);\n this.$config.rowStore = null;\n }\n\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n }\n};\nmodule.exports = Grid;","var utils = require(\"../../../utils/utils\");\n\nfunction ScaleHelper(gantt) {\n var dateHelper = gantt.date;\n var services = gantt.$services;\n return {\n getSum: function getSum(sizes, from, to) {\n if (to === undefined) to = sizes.length - 1;\n if (from === undefined) from = 0;\n var summ = 0;\n\n for (var i = from; i <= to; i++) {\n summ += sizes[i];\n }\n\n return summ;\n },\n setSumWidth: function setSumWidth(sum_width, scale, from, to) {\n var parts = scale.width;\n if (to === undefined) to = parts.length - 1;\n if (from === undefined) from = 0;\n var length = to - from + 1;\n if (from > parts.length - 1 || length <= 0 || to > parts.length - 1) return;\n var oldWidth = this.getSum(parts, from, to);\n var diff = sum_width - oldWidth;\n this.adjustSize(diff, parts, from, to);\n this.adjustSize(-diff, parts, to + 1);\n scale.full_width = this.getSum(parts);\n },\n splitSize: function splitSize(width, count) {\n var arr = [];\n\n for (var i = 0; i < count; i++) {\n arr[i] = 0;\n }\n\n this.adjustSize(width, arr);\n return arr;\n },\n adjustSize: function adjustSize(width, parts, from, to) {\n if (!from) from = 0;\n if (to === undefined) to = parts.length - 1;\n var length = to - from + 1;\n var full = this.getSum(parts, from, to);\n\n for (var i = from; i <= to; i++) {\n var share = Math.floor(width * (full ? parts[i] / full : 1 / length));\n full -= parts[i];\n width -= share;\n length--;\n parts[i] += share;\n }\n\n parts[parts.length - 1] += width;\n },\n sortScales: function sortScales(scales) {\n function cellSize(unit, step) {\n var d = new Date(1970, 0, 1);\n return dateHelper.add(d, step, unit) - d;\n }\n\n scales.sort(function (a, b) {\n if (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\n return 1;\n } else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\n return -1;\n } else {\n return 0;\n }\n });\n\n for (var i = 0; i < scales.length; i++) {\n scales[i].index = i;\n }\n },\n _isLegacyMode: function _isLegacyMode(config) {\n var scaleConfig = config || gantt.config;\n return scaleConfig.scale_unit || scaleConfig.date_scale || scaleConfig.subscales;\n },\n _prepareScaleObject: function _prepareScaleObject(scale) {\n var format = scale.format;\n\n if (!format) {\n format = scale.template || scale.date || \"%d %M\";\n }\n\n if (typeof format === \"string\") {\n format = gantt.date.date_to_str(format);\n }\n\n return {\n unit: scale.unit || \"day\",\n step: scale.step || 1,\n format: format,\n css: scale.css\n };\n },\n primaryScale: function primaryScale(config) {\n var templates = services.getService(\"templateLoader\");\n\n var legacyMode = this._isLegacyMode(config);\n\n var scaleConfig = config || gantt.config;\n var result;\n\n if (legacyMode) {\n templates.initTemplate(\"date_scale\", undefined, undefined, scaleConfig, gantt.config.templates);\n result = {\n unit: gantt.config.scale_unit,\n step: gantt.config.step,\n template: gantt.templates.date_scale,\n date: gantt.config.date_scale,\n css: gantt.templates.scale_cell_class\n };\n } else {\n var primaryScale = scaleConfig.scales[0];\n result = {\n unit: primaryScale.unit,\n step: primaryScale.step,\n template: primaryScale.template,\n format: primaryScale.format,\n date: primaryScale.date,\n css: primaryScale.css || gantt.templates.scale_cell_class\n };\n }\n\n return this._prepareScaleObject(result);\n },\n getSubScales: function getSubScales(config) {\n var legacyMode = this._isLegacyMode(config);\n\n var scaleConfig = config || gantt.config;\n var scales;\n\n if (legacyMode) {\n scales = scaleConfig.subscales || [];\n } else {\n scales = scaleConfig.scales.slice(1);\n }\n\n return scales.map(function (scale) {\n return this._prepareScaleObject(scale);\n }.bind(this));\n },\n prepareConfigs: function prepareConfigs(scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\n var heights = this.splitSize(scale_height, scales.length);\n var full_width = container_width;\n var configs = [];\n\n for (var i = scales.length - 1; i >= 0; i--) {\n var main_scale = i == scales.length - 1;\n var cfg = this.initScaleConfig(scales[i], minDate, maxDate);\n\n if (main_scale) {\n this.processIgnores(cfg);\n }\n\n this.initColSizes(cfg, min_coll_width, full_width, heights[i]);\n this.limitVisibleRange(cfg);\n\n if (main_scale) {\n full_width = cfg.full_width;\n }\n\n configs.unshift(cfg);\n }\n\n for (var i = 0; i < configs.length - 1; i++) {\n this.alineScaleColumns(configs[configs.length - 1], configs[i]);\n }\n\n for (var i = 0; i < configs.length; i++) {\n if (rtl) {\n this.reverseScale(configs[i]);\n }\n\n this.setPosSettings(configs[i]);\n }\n\n return configs;\n },\n reverseScale: function reverseScale(scale) {\n scale.width = scale.width.reverse();\n scale.trace_x = scale.trace_x.reverse();\n var indexes = scale.trace_indexes;\n scale.trace_indexes = {};\n scale.trace_index_transition = {};\n scale.rtl = true;\n\n for (var i = 0; i < scale.trace_x.length; i++) {\n scale.trace_indexes[scale.trace_x[i].valueOf()] = i;\n scale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\n }\n\n return scale;\n },\n setPosSettings: function setPosSettings(config) {\n for (var i = 0, len = config.trace_x.length; i < len; i++) {\n config.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\n }\n },\n _ignore_time_config: function _ignore_time_config(date, scale) {\n if (gantt.config.skip_off_time) {\n var skip = true;\n var probe = date; // check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\n\n for (var i = 0; i < scale.step; i++) {\n if (i) {\n probe = dateHelper.add(date, i, scale.unit);\n }\n\n skip = skip && !this.isWorkTime(probe, scale.unit);\n }\n\n return skip;\n }\n\n return false;\n },\n //defined in an extension\n processIgnores: function processIgnores(config) {\n config.ignore_x = {};\n config.display_count = config.count;\n },\n initColSizes: function initColSizes(config, min_col_width, full_width, line_height) {\n var cont_width = full_width;\n config.height = line_height;\n var column_count = config.display_count === undefined ? config.count : config.display_count;\n if (!column_count) column_count = 1;\n config.col_width = Math.floor(cont_width / column_count);\n\n if (min_col_width) {\n if (config.col_width < min_col_width) {\n config.col_width = min_col_width;\n cont_width = config.col_width * column_count;\n }\n }\n\n config.width = [];\n var ignores = config.ignore_x || {};\n\n for (var i = 0; i < config.trace_x.length; i++) {\n if (ignores[config.trace_x[i].valueOf()] || config.display_count == config.count) {\n config.width[i] = 0;\n } else {\n // width of month columns should be proportional month duration\n var width = 1;\n\n if (config.unit == \"month\") {\n var days = Math.round((dateHelper.add(config.trace_x[i], config.step, config.unit) - config.trace_x[i]) / (1000 * 60 * 60 * 24));\n width = days;\n }\n\n config.width[i] = width;\n }\n }\n\n this.adjustSize(cont_width - this.getSum(config.width)\n /* 1 width per column from the code above */\n , config.width);\n config.full_width = this.getSum(config.width);\n },\n initScaleConfig: function initScaleConfig(config, min_date, max_date) {\n var cfg = utils.mixin({\n count: 0,\n col_width: 0,\n full_width: 0,\n height: 0,\n width: [],\n left: [],\n trace_x: [],\n trace_indexes: {},\n min_date: new Date(min_date),\n max_date: new Date(max_date)\n }, config);\n this.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\n cfg.count++;\n cfg.trace_x.push(new Date(date));\n cfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\n });\n cfg.trace_x_ascending = cfg.trace_x.slice();\n return cfg;\n },\n iterateScales: function iterateScales(lower_scale, upper_scale, from, to, callback) {\n var upper_dates = upper_scale.trace_x;\n var lower_dates = lower_scale.trace_x;\n var prev = from || 0;\n var end = to || lower_dates.length - 1;\n var prevUpper = 0;\n\n for (var up = 1; up < upper_dates.length; up++) {\n var target_index = lower_scale.trace_indexes[+upper_dates[up]];\n\n if (target_index !== undefined && target_index <= end) {\n if (callback) {\n callback.apply(this, [prevUpper, up, prev, target_index]);\n }\n\n prev = target_index;\n prevUpper = up;\n continue;\n }\n }\n },\n alineScaleColumns: function alineScaleColumns(lower_scale, upper_scale, from, to) {\n this.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\n var targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\n var actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\n\n if (actualWidth != targetWidth) {\n this.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\n }\n });\n },\n eachColumn: function eachColumn(unit, step, min_date, max_date, callback) {\n var start = new Date(min_date),\n end = new Date(max_date);\n\n if (dateHelper[unit + \"_start\"]) {\n start = dateHelper[unit + \"_start\"](start);\n }\n\n var curr = new Date(start);\n\n if (+curr >= +end) {\n end = dateHelper.add(curr, step, unit);\n }\n\n while (+curr < +end) {\n callback.call(this, new Date(curr));\n var tzOffset = curr.getTimezoneOffset();\n curr = dateHelper.add(curr, step, unit);\n curr = gantt._correct_dst_change(curr, tzOffset, step, unit);\n if (dateHelper[unit + '_start']) curr = dateHelper[unit + \"_start\"](curr);\n }\n },\n limitVisibleRange: function limitVisibleRange(cfg) {\n var dates = cfg.trace_x;\n var left = 0,\n right = cfg.width.length - 1;\n var diff = 0;\n\n if (+dates[0] < +cfg.min_date && left != right) {\n var width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\n diff += cfg.width[0] - width;\n cfg.width[0] = width;\n dates[0] = new Date(cfg.min_date);\n }\n\n var last = dates.length - 1;\n var lastDate = dates[last];\n var outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\n\n if (+outDate > +cfg.max_date && last > 0) {\n var width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\n diff += cfg.width[last] - width;\n cfg.width[last] = width;\n }\n\n if (diff) {\n var full = this.getSum(cfg.width);\n var shared = 0;\n\n for (var i = 0; i < cfg.width.length; i++) {\n var share = Math.floor(diff * (cfg.width[i] / full));\n cfg.width[i] += share;\n shared += share;\n }\n\n this.adjustSize(diff - shared, cfg.width);\n }\n }\n };\n}\n\nmodule.exports = ScaleHelper;","var helpers = require(\"../../../utils/helpers\");\n\nvar htmlHelpers = {\n getHtmlSelect: function getHtmlSelect(options, attributes, value) {\n var innerHTML = \"\";\n\n var _this = this;\n\n options = options || [];\n helpers.forEach(options, function (entry) {\n var _attributes = [{\n key: \"value\",\n value: entry.key\n }];\n\n if (value == entry.key) {\n _attributes[_attributes.length] = {\n key: \"selected\",\n value: \"selected\"\n };\n }\n\n if (entry.attributes) {\n _attributes = _attributes.concat(entry.attributes);\n }\n\n innerHTML += _this.getHtmlOption({\n innerHTML: entry.label\n }, _attributes);\n });\n return _getHtmlContainer(\"select\", {\n innerHTML: innerHTML\n }, attributes);\n },\n getHtmlOption: function getHtmlOption(options, attributes) {\n return _getHtmlContainer(\"option\", options, attributes);\n },\n getHtmlButton: function getHtmlButton(options, attributes) {\n return _getHtmlContainer(\"button\", options, attributes);\n },\n getHtmlDiv: function getHtmlDiv(options, attributes) {\n return _getHtmlContainer(\"div\", options, attributes);\n },\n getHtmlLabel: function getHtmlLabel(options, attributes) {\n return _getHtmlContainer(\"label\", options, attributes);\n },\n getHtmlInput: function getHtmlInput(attributes) {\n return \"<input\" + _getHtmlAttributes(attributes || []) + \">\";\n }\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n var html;\n options = options || [];\n html = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"</\" + tag + \">\";\n return html;\n}\n\nfunction _getHtmlAttributes(attributes) {\n var html = \"\";\n helpers.forEach(attributes, function (entry) {\n html += \" \" + entry.key + \"='\" + entry.value + \"'\";\n });\n return html;\n}\n\nmodule.exports = htmlHelpers;","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function createResourceTimelineBuilder(gantt) {\n var resourceTaskCache = {};\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n });\n\n function getResourceLoad(resource, resourceProperty, scale, timeline) {\n var cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\n var res;\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, resourceProperty, scale, timeline);\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function calculateResourceLoadFromAssignments(items, scale, assignmentsPassed) {\n var scaleUnit = scale.unit;\n var scaleStep = scale.step;\n var timegrid = {};\n var precalculatedTimes = {};\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var task = item;\n\n if (assignmentsPassed) {\n task = gantt.getTask(item.task_id);\n }\n\n var minDate = item.start_date || task.start_date;\n var maxDate = item.end_date || task.end_date;\n\n if (assignmentsPassed) {\n if (item.start_date) {\n minDate = new Date(Math.max(item.start_date.valueOf(), task.start_date.valueOf()));\n }\n\n if (item.end_date) {\n maxDate = new Date(Math.min(item.end_date.valueOf(), task.end_date.valueOf()));\n }\n }\n\n var firstColumn = helpers.findBinary(scale.trace_x, minDate.valueOf());\n var currDate = new Date(scale.trace_x[firstColumn] || gantt.date[scaleUnit + \"_start\"](new Date(minDate)));\n var calendar = gantt.config.work_time ? gantt.getTaskCalendar(task) : gantt;\n precalculatedTimes[calendar.id] = {};\n\n while (currDate < maxDate) {\n var cachedTimes = precalculatedTimes[calendar.id];\n var date = currDate;\n var timestamp = date.valueOf();\n currDate = gantt.date.add(currDate, scaleStep, scaleUnit);\n\n if (cachedTimes[timestamp] === false) {\n continue;\n }\n\n var isWorkTime = calendar.isWorkTime({\n date: date,\n task: task,\n unit: scaleUnit\n });\n\n if (!isWorkTime) {\n cachedTimes[timestamp] = false;\n continue;\n }\n\n if (!timegrid[timestamp]) {\n timegrid[timestamp] = {\n tasks: [],\n assignments: []\n };\n }\n\n timegrid[timestamp].tasks.push(task);\n\n if (assignmentsPassed) {\n timegrid[timestamp].assignments.push(item);\n }\n }\n }\n\n return timegrid;\n }\n\n function calculateResourceLoad(resource, resourceProperty, scale, timeline) {\n var items;\n var assignmentsPassed = false;\n var timegrid = {};\n\n if (gantt.config.process_resource_assignments && resourceProperty === gantt.config.resource_property) {\n if (resource.$role == \"task\") {\n items = gantt.getResourceAssignments(resource.$resource_id, resource.$task_id);\n } else {\n items = gantt.getResourceAssignments(resource.id);\n }\n\n assignmentsPassed = true;\n } else if (resource.$role == \"task\") {\n items = [];\n } else {\n items = gantt.getTaskBy(resourceProperty, resource.id);\n }\n\n var timegrid = calculateResourceLoadFromAssignments(items, scale, assignmentsPassed);\n var scaleUnit = scale.unit;\n var scaleStep = scale.step;\n var timetable = [];\n var start, end, tasks, assignments, cell;\n var config = timeline.$getConfig();\n\n for (var i = 0; i < scale.trace_x.length; i++) {\n start = new Date(scale.trace_x[i]);\n end = gantt.date.add(start, scaleStep, scaleUnit);\n cell = timegrid[start.valueOf()] || {};\n tasks = cell.tasks || [];\n assignments = cell.assignments || [];\n\n if (tasks.length || config.resource_render_empty_cells) {\n timetable.push({\n start_date: start,\n end_date: end,\n tasks: tasks,\n assignments: assignments\n });\n } else {\n timetable.push(null);\n }\n }\n\n return timetable;\n }\n\n return getResourceLoad;\n};","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n Cell = require(\"./cell\");\n\nvar Layout = function (_super) {\n \"use strict\";\n\n __extends(Layout, _super);\n\n function Layout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (parent) _this.$root = true;\n\n _this._parseConfig(config);\n\n _this.$name = \"layout\";\n return _this;\n }\n\n Layout.prototype.destructor = function () {\n if (this.$container && this.$view) {\n domHelpers.removeNode(this.$view);\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n child.destructor();\n }\n\n this.$cells = [];\n\n _super.prototype.destructor.call(this);\n };\n\n Layout.prototype._resizeScrollbars = function (autosize, scrollbars) {\n var scrollChanged = false;\n var visibleScrollbars = [],\n hiddenScrollbars = [];\n var scrollbarsToHide = [];\n\n function showScrollbar(scrollbar) {\n scrollbar.$parent.show();\n scrollChanged = true;\n visibleScrollbars.push(scrollbar);\n }\n\n function hideScrollbar(scrollbar) {\n scrollbar.$parent.hide();\n scrollChanged = true;\n hiddenScrollbars.push(scrollbar);\n }\n\n var scrollbar;\n\n for (var i = 0; i < scrollbars.length; i++) {\n scrollbar = scrollbars[i];\n\n if (autosize[scrollbar.$config.scroll]) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldHide()) {\n //hideScrollbar(scrollbar);\n scrollbarsToHide.push(scrollbar);\n } else if (scrollbar.shouldShow()) {\n showScrollbar(scrollbar);\n } else {\n if (scrollbar.isVisible()) {\n visibleScrollbars.push(scrollbar);\n } else {\n hiddenScrollbars.push(scrollbar);\n }\n }\n }\n\n var visibleGroups = {};\n\n for (var i = 0; i < visibleScrollbars.length; i++) {\n if (visibleScrollbars[i].$config.group) {\n visibleGroups[visibleScrollbars[i].$config.group] = true;\n }\n } // GS-2220\n\n\n scrollbarsToHide.forEach(function (scrollbar) {\n if (!(scrollbar.$config.group && visibleGroups[scrollbar.$config.group])) {\n hideScrollbar(scrollbar);\n }\n });\n\n for (var i = 0; i < hiddenScrollbars.length; i++) {\n scrollbar = hiddenScrollbars[i];\n\n if (scrollbar.$config.group && visibleGroups[scrollbar.$config.group]) {\n showScrollbar(scrollbar); // GS-707 If the scrollbar was hidden then showed, the container resize shouldn't happen because of that\n\n for (var j = 0; j < visibleScrollbars.length; j++) {\n if (visibleScrollbars[j] == scrollbar) {\n this.$gantt.$scrollbarRepaint = true;\n break;\n }\n }\n }\n }\n\n return scrollChanged;\n };\n\n Layout.prototype._syncCellSizes = function (groupName, newSize) {\n if (!groupName) return;\n var groups = {};\n\n this._eachChild(function (cell) {\n if (cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\") {\n if (!groups[cell.$config.group]) {\n groups[cell.$config.group] = [];\n }\n\n groups[cell.$config.group].push(cell);\n }\n });\n\n if (groups[groupName]) {\n this._syncGroupSize(groups[groupName], newSize);\n }\n\n return groups[groupName];\n };\n\n Layout.prototype._syncGroupSize = function (cells, newSize) {\n if (!cells.length) return;\n var property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n var direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n var newSizeValue = newSize.value;\n var isGravity = newSize.isGravity;\n\n for (var i = 0; i < cells.length; i++) {\n var ownSize = cells[i].getSize();\n var resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\n if (resizeSibling.$name == \"resizer\") {\n resizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n }\n\n var siblingSize = resizeSibling.getSize();\n\n if (!isGravity) {\n if (resizeSibling[property]) {\n var totalGravity = ownSize.gravity + siblingSize.gravity;\n var totalSize = ownSize[property] + siblingSize[property];\n var k = totalGravity / totalSize;\n cells[i].$config.gravity = k * newSizeValue;\n resizeSibling.$config[property] = totalSize - newSizeValue;\n resizeSibling.$config.gravity = totalGravity - k * newSizeValue;\n } else {\n cells[i].$config[property] = newSizeValue;\n }\n } else {\n cells[i].$config.gravity = newSizeValue;\n }\n\n var mainGrid = this.$gantt.$ui.getView(\"grid\");\n\n if (mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable && !isGravity) {\n this.$gantt.config.grid_width = newSizeValue;\n }\n }\n };\n\n Layout.prototype.resize = function (startStage) {\n var mainCall = false;\n\n if (this.$root && !this._resizeInProgress) {\n this.callEvent(\"onBeforeResize\", []);\n mainCall = true;\n this._resizeInProgress = true;\n }\n\n _super.prototype.resize.call(this, true);\n\n _super.prototype.resize.call(this, false);\n\n if (mainCall) {\n var contentViews = [];\n contentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n contentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n contentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n var scrollbars = this.getCellsByType(\"scroller\");\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n\n var autosize = this._getAutosizeMode(this.$config.autosize);\n /* // possible to rollback set content size when autisize is disabled, not sure if need to\r\n \t\tcontentViews.forEach(function(view){\r\n \t\t\tconst parent = view.$parent;\r\n \t\t\tif(!autosize.x){\r\n \t\t\t\tif(parent.$config.$originalWidthStored){\r\n \t\t\t\t\tparent.$config.$originalWidthStored = false;\r\n \t\t\t\t\tparent.$config.width = parent.$config.$originalWidth;\r\n \t\t\t\t\tparent.$config.$originalWidth = undefined;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \n \t\t\tif(!autosize.y){\r\n \t\t\t\tif(parent.$config.$originalHeightStored){\r\n \t\t\t\t\tparent.$config.$originalHeightStored = false;\r\n \t\t\t\t\tparent.$config.height = parent.$config.$originalHeight;\r\n \t\t\t\t\tparent.$config.$originalHeight = undefined;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t});*/\n\n\n var scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n if (this.$config.autosize) {\n this.autosize(this.$config.autosize);\n contentViews.forEach(function (view) {\n var parent = view.$parent;\n var sizes = parent.getContentSize(autosize);\n\n if (autosize.x) {\n if (!parent.$config.$originalWidthStored) {\n parent.$config.$originalWidthStored = true;\n parent.$config.$originalWidth = parent.$config.width;\n }\n\n parent.$config.width = sizes.width;\n }\n\n if (autosize.y) {\n if (!parent.$config.$originalHeightStored) {\n parent.$config.$originalHeightStored = true;\n parent.$config.$originalHeight = parent.$config.height;\n }\n\n parent.$config.height = sizes.height;\n }\n });\n scrollChanged = true;\n }\n\n if (scrollChanged) {\n this.resize();\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n }\n\n this.callEvent(\"onResize\", []);\n }\n\n if (mainCall) {\n this._resizeInProgress = false;\n }\n };\n\n Layout.prototype._eachChild = function (code, cell) {\n cell = cell || this;\n code(cell);\n\n if (cell.$cells) {\n for (var i = 0; i < cell.$cells.length; i++) {\n this._eachChild(code, cell.$cells[i]);\n }\n }\n };\n\n Layout.prototype.isChild = function (view) {\n var res = false;\n\n this._eachChild(function (child) {\n if (child === view || child.$content === view) {\n res = true;\n }\n });\n\n return res;\n };\n\n Layout.prototype.getCellsByType = function (type) {\n var res = [];\n\n if (type === this.$name) {\n res.push(this);\n }\n\n if (this.$content && this.$content.$name == type) {\n res.push(this.$content);\n }\n\n if (this.$cells) {\n for (var i = 0; i < this.$cells.length; i++) {\n var children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\n if (children.length) {\n res.push.apply(res, children);\n }\n }\n }\n\n return res;\n };\n\n Layout.prototype.getNextSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index + 1]) {\n return this.$cells[index + 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.getPrevSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index - 1]) {\n return this.$cells[index - 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.cell = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n\n if (child.$id === id) {\n return child;\n }\n\n var sub = child.cell(id);\n\n if (sub) {\n return sub;\n }\n }\n };\n\n Layout.prototype.cellIndex = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n if (this.$cells[i].$id === id) {\n return i;\n }\n }\n\n return -1;\n };\n\n Layout.prototype.moveView = function (view, ind) {\n if (this.$cells[ind] !== view) {\n return window.alert(\"Not implemented\");\n } else {\n ind += this.$config.header ? 1 : 0;\n var node = this.$view;\n\n if (ind >= node.childNodes.length) {\n node.appendChild(view.$view);\n } else {\n node.insertBefore(view.$view, node.childNodes[ind]);\n }\n }\n };\n\n Layout.prototype._parseConfig = function (config) {\n this.$cells = [];\n this._xLayout = !config.rows;\n var cells = config.rows || config.cols || config.views;\n\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n cell.mode = this._xLayout ? \"x\" : \"y\";\n var $content = this.$factory.initUI(cell, this);\n\n if (!$content) {\n cells.splice(i, 1);\n i--;\n } else {\n $content.$parent = this;\n this.$cells.push($content);\n }\n }\n };\n\n Layout.prototype.getCells = function () {\n return this.$cells;\n };\n\n Layout.prototype.render = function () {\n var view = domHelpers.insertNode(this.$container, this.$toHTML());\n this.$fill(view, null);\n this.callEvent(\"onReady\", []);\n this.resize(); // do simple repaint after the first call\n\n this.render = this.resize;\n };\n\n Layout.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n var cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\n for (var i = cells.length - 1; i >= 0; i--) {\n var sub = this.$cells[i];\n sub.$fill(cells[i], this); // initially hidden cell\n\n if (sub.$config.hidden) {\n sub.$view.parentNode.removeChild(sub.$view);\n }\n }\n };\n\n Layout.prototype.$toHTML = function () {\n var mode = this._xLayout ? \"x\" : \"y\";\n var html = [];\n\n for (var i = 0; i < this.$cells.length; i++) {\n html.push(this.$cells[i].$toHTML());\n }\n\n return _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n };\n\n Layout.prototype.getContentSize = function (mode) {\n var contentWidth = 0,\n contentHeight = 0;\n var cellSize, cell, borders;\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n if (cell.$config.hidden) continue;\n cellSize = cell.getContentSize(mode);\n\n if (cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]) {\n cellSize.height = 0;\n cellSize.width = 0;\n }\n\n if (cell.$config.resizer) {\n if (this._xLayout) {\n cellSize.height = 0;\n } else {\n cellSize.width = 0;\n }\n }\n\n borders = cell._getBorderSizes();\n\n if (this._xLayout) {\n contentWidth += cellSize.width + borders.horizontal;\n contentHeight = Math.max(contentHeight, cellSize.height + borders.vertical);\n } else {\n contentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n contentHeight += cellSize.height + borders.vertical;\n }\n }\n\n borders = this._getBorderSizes();\n contentWidth += borders.horizontal;\n contentHeight += borders.vertical; // GS-149 & GS-150: By default this code only increases the container sizes, because of that, the cell sizes\n // are also increased. Keep this code here in the case if something goes wrong\n\n /*\r\n if(this.$root){\r\n \tcontentWidth += 1;\r\n \tcontentHeight += 1;\r\n }\r\n */\n\n return {\n width: contentWidth,\n height: contentHeight\n };\n };\n\n Layout.prototype._cleanElSize = function (value) {\n return (value || \"\").toString().replace(\"px\", \"\") * 1 || 0;\n };\n\n Layout.prototype._getBoxStyles = function (div) {\n var computed = null;\n\n if (window.getComputedStyle) {\n computed = window.getComputedStyle(div, null);\n } else {\n //IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\n computed = {\n \"width\": div.clientWidth,\n \"height\": div.clientHeight\n };\n }\n\n var properties = [\"width\", \"height\", \"paddingTop\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\", \"borderBottomWidth\"];\n var styles = {\n boxSizing: computed.boxSizing == \"border-box\"\n };\n\n if (computed.MozBoxSizing) {\n styles.boxSizing = computed.MozBoxSizing == \"border-box\";\n }\n\n for (var i = 0; i < properties.length; i++) {\n styles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\n }\n\n var box = {\n horPaddings: styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth,\n vertPaddings: styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth,\n borderBox: styles.boxSizing,\n innerWidth: styles.width,\n innerHeight: styles.height,\n outerWidth: styles.width,\n outerHeight: styles.height\n };\n\n if (box.borderBox) {\n box.innerWidth -= box.horPaddings;\n box.innerHeight -= box.vertPaddings;\n } else {\n box.outerWidth += box.horPaddings;\n box.outerHeight += box.vertPaddings;\n }\n\n return box;\n };\n\n Layout.prototype._getAutosizeMode = function (config) {\n var res = {\n x: false,\n y: false\n };\n\n if (config === \"xy\") {\n res.x = res.y = true;\n } else if (config === \"y\" || config === true) {\n res.y = true;\n } else if (config === \"x\") {\n res.x = true;\n }\n\n return res;\n };\n\n Layout.prototype.autosize = function (mode) {\n var res = this._getAutosizeMode(mode);\n\n var boxSizes = this._getBoxStyles(this.$container);\n\n var contentSizes = this.getContentSize(mode);\n var node = this.$container;\n\n if (res.x) {\n if (boxSizes.borderBox) {\n contentSizes.width += boxSizes.horPaddings;\n }\n\n node.style.width = contentSizes.width + \"px\";\n }\n\n if (res.y) {\n if (boxSizes.borderBox) {\n contentSizes.height += boxSizes.vertPaddings;\n }\n\n node.style.height = contentSizes.height + \"px\";\n }\n };\n\n Layout.prototype.getSize = function () {\n this._sizes = [];\n var width = 0;\n var minWidth = 0;\n var maxWidth = 100000000000;\n var height = 0;\n var maxHeight = 100000000000;\n var minHeight = 0;\n\n for (var i = 0; i < this.$cells.length; i++) {\n var size = this._sizes[i] = this.$cells[i].getSize();\n\n if (this.$cells[i].$config.hidden) {\n continue;\n }\n\n if (this._xLayout) {\n if (!size.width && size.minWidth) {\n width += size.minWidth;\n } else {\n width += size.width;\n }\n\n maxWidth += size.maxWidth;\n minWidth += size.minWidth;\n height = Math.max(height, size.height);\n maxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\n\n minHeight = Math.max(minHeight, size.minHeight); // max of minHeight\n } else {\n if (!size.height && size.minHeight) {\n height += size.minHeight;\n } else {\n height += size.height;\n }\n\n maxHeight += size.maxHeight;\n minHeight += size.minHeight;\n width = Math.max(width, size.width);\n maxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\n\n minWidth = Math.max(minWidth, size.minWidth); // max of minWidth\n }\n }\n\n var self = _super.prototype.getSize.call(this); // maxWidth\n\n\n if (self.maxWidth >= 100000) {\n self.maxWidth = maxWidth;\n } // maxHeight\n\n\n if (self.maxHeight >= 100000) {\n self.maxHeight = maxHeight;\n } // minWidth\n\n\n self.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth; // || self.width || Math.max(minWidth, width);\n // minHeight\n\n self.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight; //self.minHeight || self.height || Math.max(minHeight, height);\n // sizes with paddings and margins\n\n if (this._xLayout) {\n self.minWidth += this.$config.margin * this.$cells.length || 0;\n self.minWidth += this.$config.padding * 2 || 0;\n self.minHeight += this.$config.padding * 2 || 0;\n } else {\n self.minHeight += this.$config.margin * this.$cells.length || 0;\n self.minHeight += this.$config.padding * 2 || 0;\n }\n\n return self;\n }; // calc total gravity and free space\n\n\n Layout.prototype._calcFreeSpace = function (s, cell, xLayout) {\n var min = xLayout ? cell.minWidth : cell.minHeight;\n var max = xLayout ? cell.maxWidth : cell.maxWidth;\n var side = s;\n\n if (!side) {\n side = Math.floor(this._free / this._gravity * cell.gravity);\n\n if (side > max) {\n side = max;\n this._free -= side;\n this._gravity -= cell.gravity;\n }\n\n if (side < min) {\n side = min;\n this._free -= side;\n this._gravity -= cell.gravity;\n }\n } else {\n if (side > max) {\n side = max;\n }\n\n if (side < min) {\n side = min;\n }\n\n this._free -= side;\n }\n\n return side;\n };\n\n Layout.prototype._calcSize = function (s, size, xLayout) {\n var side = s;\n var min = xLayout ? size.minWidth : size.minHeight;\n var max = xLayout ? size.maxWidth : size.maxHeight;\n\n if (!side) {\n side = Math.floor(this._free / this._gravity * size.gravity);\n }\n\n if (side > max) {\n side = max;\n }\n\n if (side < min) {\n side = min;\n }\n\n return side;\n };\n\n Layout.prototype._configureBorders = function () {\n if (this.$root) {\n this._setBorders([this._borders.left, this._borders.top, this._borders.right, this._borders.bottom], this);\n }\n\n var borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\n var cells = this.$cells;\n var lastVisibleIndex = cells.length - 1;\n\n for (var i = lastVisibleIndex; i >= 0; i--) {\n if (!cells[i].$config.hidden) {\n lastVisibleIndex = i;\n break;\n }\n }\n\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].$config.hidden) {\n continue;\n }\n\n var lastCell = i >= lastVisibleIndex;\n var borderColorClass = \"\";\n\n if (!lastCell && cells[i + 1]) {\n if (cells[i + 1].$config.view == \"scrollbar\") {\n if (this._xLayout) {\n lastCell = true;\n } else {\n borderColorClass = \"gantt_layout_cell_border_transparent\";\n }\n }\n }\n\n this._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\n }\n };\n\n Layout.prototype._updateCellVisibility = function () {\n var oldVisibleCells = this._visibleCells || {};\n var firstCall = !this._visibleCells;\n var visibleCells = {};\n var cell = null;\n var parentVisibility = [];\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hide_empty) {\n parentVisibility.push(cell);\n }\n\n if (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n cell._hide(true);\n } else if (!cell.$config.hidden && !oldVisibleCells[cell.$id]) {\n cell._hide(false);\n }\n\n if (!cell.$config.hidden) {\n visibleCells[cell.$id] = true;\n }\n }\n\n this._visibleCells = visibleCells; // GS-27. A way to hide the whole cell if all its children are hidden\n\n for (var i = 0; i < parentVisibility.length; i++) {\n var cell = parentVisibility[i];\n var children = cell.$cells;\n var hideCell = true;\n children.forEach(function (child) {\n if (!child.$config.hidden && !child.$config.resizer) {\n hideCell = false;\n }\n });\n cell.$config.hidden = hideCell;\n }\n };\n\n Layout.prototype.setSize = function (x, y) {\n this._configureBorders();\n\n _super.prototype.setSize.call(this, x, y);\n\n y = this.$lastSize.contentY;\n x = this.$lastSize.contentX;\n var padding = this.$config.padding || 0;\n this.$view.style.padding = padding + \"px\";\n this._gravity = 0;\n this._free = this._xLayout ? x : y;\n this._free -= padding * 2; // calc all gravity\n\n var cell, size;\n\n this._updateCellVisibility();\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n var margin = this.$config.margin || 0;\n\n if (cell.$name == \"resizer\" && !margin) {\n margin = -1;\n } // set margins to child cell\n\n\n var cellView = cell.$view;\n var marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\n if (i !== this.$cells.length - 1) {\n cellView.style[marginSide] = margin + \"px\";\n this._free -= margin; // calc free space without margin\n }\n\n size = this._sizes[i];\n\n if (this._xLayout) {\n if (!size.width) {\n this._gravity += size.gravity;\n }\n } else {\n if (!size.height) {\n this._gravity += size.gravity;\n }\n }\n }\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var width = size.width;\n var height = size.height;\n\n if (this._xLayout) {\n this._calcFreeSpace(width, size, true);\n } else {\n this._calcFreeSpace(height, size, false);\n }\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var dx = void 0;\n var dy = void 0;\n\n if (this._xLayout) {\n dx = this._calcSize(size.width, size, true);\n dy = y - padding * 2; // layout height without paddings\n } else {\n dx = x - padding * 2; // layout width without paddings\n\n dy = this._calcSize(size.height, size, false);\n }\n\n cell.setSize(dx, dy);\n }\n };\n\n return Layout;\n}(Cell);\n\nmodule.exports = Layout;","// optimized checker for links smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isLinkInViewPort(item, viewport, view, config, gantt) {\n var source = view.$gantt.getTask(item.source);\n var target = view.$gantt.getTask(item.target); // check vertical visibility first since it's a lighter check\n\n var sourceTop = view.getItemTop(source.id);\n var sourceHeight = view.getItemHeight(source.id);\n var targetTop = view.getItemTop(target.id);\n var targetHeight = view.getItemHeight(target.id);\n\n if (viewport.y > sourceTop + sourceHeight && viewport.y > targetTop + targetHeight) {\n return false;\n }\n\n if (viewport.y_end < targetTop && viewport.y_end < sourceTop) {\n return false;\n }\n\n var padding = 100;\n var sourceLeft = view.posFromDate(source.start_date);\n var sourceRight = view.posFromDate(source.end_date);\n var targetLeft = view.posFromDate(target.start_date);\n var targetRight = view.posFromDate(target.end_date);\n\n if (sourceLeft > sourceRight) {\n // rtl\n var tmp = sourceRight;\n sourceRight = sourceLeft;\n sourceLeft = tmp;\n }\n\n if (targetLeft > targetRight) {\n // rtl\n var tmp = targetRight;\n targetRight = targetLeft;\n targetLeft = tmp;\n }\n\n sourceLeft += -padding; // add buffer for custom elements\n\n sourceRight += padding;\n targetLeft += -padding; // add buffer for custom elements\n\n targetRight += padding;\n\n if (viewport.x > sourceRight && viewport.x > targetRight) {\n return false;\n }\n\n if (viewport.x_end < sourceLeft && viewport.x_end < targetLeft) {\n return false;\n }\n\n return true;\n};","var getLinkRectangle = require(\"../get_link_rectangle\");\n\nmodule.exports = function () {\n var coordinates = [];\n var calculated = false;\n\n function clearCache() {\n coordinates = [];\n calculated = false;\n }\n\n function buildCache(datastore, view, gantt) {\n var config = view.$getConfig();\n var visibleItems = datastore.getVisibleItems(); //datastore.eachItem(function(link){\n\n visibleItems.forEach(function (link) {\n var rec = getLinkRectangle(link, view, config, gantt);\n\n if (!rec) {\n return;\n }\n\n coordinates.push({\n id: link.id,\n rec: rec\n });\n });\n coordinates.sort(function (a, b) {\n if (a.rec.right < b.rec.right) {\n return -1;\n } else {\n return 1;\n }\n });\n calculated = true;\n }\n\n var initialized = false;\n\n function init(datastore) {\n if (initialized) {\n return;\n }\n\n initialized = true;\n datastore.attachEvent(\"onPreFilter\", clearCache);\n datastore.attachEvent(\"onStoreUpdated\", clearCache);\n datastore.attachEvent(\"onClearAll\", clearCache);\n datastore.attachEvent(\"onBeforeStoreUpdate\", clearCache);\n }\n\n return function getVisibleLinksRange(gantt, view, config, datastore, viewport) {\n init(datastore);\n\n if (!calculated) {\n buildCache(datastore, view, gantt);\n }\n\n var visibleBoxes = [];\n\n for (var i = 0; i < coordinates.length; i++) {\n var item = coordinates[i];\n var box = item.rec;\n\n if (box.right < viewport.x) {\n continue;\n }\n\n if (box.left < viewport.x_end && box.right > viewport.x && box.top < viewport.y_end && box.bottom > viewport.y) {\n visibleBoxes.push(item.id);\n }\n }\n\n return {\n ids: visibleBoxes\n };\n };\n};","import { IWorkUnitCache } from \"./workunit_cache_interface\";\r\nimport { WorkUnitsMapCache } from \"./workunit_map_cache\";\r\nimport { WorkUnitsObjectCache } from \"./workunit_object_cache\";\r\nexport { LargerUnitsCache } from \"./larger_units_helper\";\r\n\r\nexport function createCacheObject(): IWorkUnitCache {\r\n\r\n\t// worktime hash is on the hot path,\r\n\t// Map seems to work faster than plain array, use it whenever possible\r\n\tif (typeof Map !== \"undefined\") {\r\n\t\treturn new WorkUnitsMapCache();\r\n\t} else {\r\n\t\treturn new WorkUnitsObjectCache();\r\n\t}\r\n}\r\n","var utils = require(\"../../utils/utils\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nfunction IsWorkTimeArgument(date, unit, task, id, calendar) {\n this.date = date;\n this.unit = unit;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar) {\n this.date = date;\n this.dir = dir;\n this.unit = unit;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar) {\n this.start_date = start_date;\n this.duration = duration;\n this.unit = unit;\n this.step = step;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction GetDurationArgument(start, end, task, calendar) {\n this.start_date = start;\n this.end_date = end;\n this.task = task;\n this.calendar = calendar;\n this.unit = null;\n this.step = null;\n return this;\n}\n\nvar calendarArgumentsHelper = function calendarArgumentsHelper(gantt) {\n return {\n getWorkHoursArguments: function getWorkHoursArguments() {\n var config = arguments[0];\n\n if (helpers.isDate(config)) {\n config = {\n date: config\n };\n } else {\n config = utils.mixin({}, config);\n }\n\n if (!helpers.isValidDate(config.date)) {\n gantt.assert(false, \"Invalid date argument for getWorkHours method\");\n throw new Error(\"Invalid date argument for getWorkHours method\");\n }\n\n return config;\n },\n setWorkTimeArguments: function setWorkTimeArguments() {\n return arguments[0];\n },\n unsetWorkTimeArguments: function unsetWorkTimeArguments() {\n return arguments[0];\n },\n isWorkTimeArguments: function isWorkTimeArguments() {\n var config = arguments[0];\n\n if (config instanceof IsWorkTimeArgument) {\n return config;\n }\n\n var processedConfig;\n\n if (!config.date) {\n //IsWorkTimeArgument(date, unit, task, id, calendar)\n processedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\n } else {\n processedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\n }\n\n processedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\n if (!helpers.isValidDate(processedConfig.date)) {\n gantt.assert(false, \"Invalid date argument for isWorkTime method\");\n throw new Error(\"Invalid date argument for isWorkTime method\");\n }\n\n return processedConfig;\n },\n getClosestWorkTimeArguments: function getClosestWorkTimeArguments(arg) {\n var config = arguments[0];\n if (config instanceof ClosestWorkTimeArgument) return config;\n var processedConfig;\n\n if (helpers.isDate(config)) {\n processedConfig = new ClosestWorkTimeArgument(config);\n } else {\n processedConfig = new ClosestWorkTimeArgument(config.date, config.dir, config.unit, config.task, null, //config.id,\n config.calendar);\n }\n\n if (config.id) {\n processedConfig.task = config;\n }\n\n processedConfig.dir = config.dir || 'any';\n processedConfig.unit = config.unit || gantt.config.duration_unit;\n\n if (!helpers.isValidDate(processedConfig.date)) {\n gantt.assert(false, \"Invalid date argument for getClosestWorkTime method\");\n throw new Error(\"Invalid date argument for getClosestWorkTime method\");\n }\n\n return processedConfig;\n },\n _getStartEndConfig: function _getStartEndConfig(param) {\n var argumentType = GetDurationArgument;\n var config;\n if (param instanceof argumentType) return param;\n\n if (helpers.isDate(param)) {\n config = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n config = new argumentType(param.start_date, param.end_date, param.task);\n\n if (param.id !== null && param.id !== undefined) {\n config.task = param;\n }\n }\n\n config.unit = config.unit || gantt.config.duration_unit;\n config.step = config.step || gantt.config.duration_step;\n config.start_date = config.start_date || config.start || config.date;\n\n if (!helpers.isValidDate(config.start_date)) {\n gantt.assert(false, \"Invalid start_date argument for getDuration method\");\n throw new Error(\"Invalid start_date argument for getDuration method\");\n }\n\n if (!helpers.isValidDate(config.end_date)) {\n gantt.assert(false, \"Invalid end_date argument for getDuration method\");\n throw new Error(\"Invalid end_date argument for getDuration method\");\n }\n\n return config;\n },\n getDurationArguments: function getDurationArguments(start, end, unit, step) {\n return this._getStartEndConfig.apply(this, arguments);\n },\n hasDurationArguments: function hasDurationArguments(start, end, unit, step) {\n return this._getStartEndConfig.apply(this, arguments);\n },\n calculateEndDateArguments: function calculateEndDateArguments(start, duration, unit, step) {\n var config = arguments[0];\n if (config instanceof CalculateEndDateArgument) return config;\n var processedConfig; //CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\n\n if (helpers.isDate(config)) {\n processedConfig = new CalculateEndDateArgument(arguments[0], arguments[1], arguments[2], undefined, arguments[3], undefined, arguments[4]);\n } else {\n processedConfig = new CalculateEndDateArgument(config.start_date, config.duration, config.unit, config.step, config.task, null, //config.id,\n config.calendar);\n }\n\n if (config.id !== null && config.id !== undefined) {\n processedConfig.task = config; // received a task object as an argument\n // ignore 'unit' and 'step' properties in this case, since it's likely a part of data model of a task\n\n processedConfig.unit = null;\n processedConfig.step = null;\n }\n\n processedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n processedConfig.step = processedConfig.step || gantt.config.duration_step;\n\n if (!helpers.isValidDate(processedConfig.start_date)) {\n gantt.assert(false, \"Invalid start_date argument for calculateEndDate method\");\n throw new Error(\"Invalid start_date argument for calculateEndDate method\");\n }\n\n return processedConfig;\n }\n };\n};\n\nmodule.exports = calendarArgumentsHelper;","var quickPositionHelperFactory = require(\"./row_position_fixed_height\");\n\nfunction createMixin(view) {\n var getItemTopCache = {};\n var getRowTopCache = {};\n var getItemHeightCache = null;\n var totalHeightCache = -1;\n var getItemHeightCacheState = null;\n var quickPosition = quickPositionHelperFactory(view);\n return {\n _resetTopPositionHeight: function _resetTopPositionHeight() {\n getItemTopCache = {};\n getRowTopCache = {};\n quickPosition.resetCache();\n },\n _resetHeight: function _resetHeight() {\n var store = this.$config.rowStore;\n var newState = this.getCacheStateTotalHeight(store);\n\n if (!getItemHeightCacheState) {\n getItemHeightCacheState = newState;\n } else if (this.shouldClearHeightCache(getItemHeightCacheState, newState)) {\n getItemHeightCacheState = newState;\n getItemHeightCache = null;\n }\n\n totalHeightCache = -1;\n quickPosition.resetCache();\n },\n\n /**\r\n * Get top coordinate by row index (order)\r\n * @param {number} index\r\n */\n getRowTop: function getRowTop(index) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getRowTop(index);\n }\n\n var store = this.$config.rowStore;\n\n if (!store) {\n return 0;\n }\n\n if (getRowTopCache[index] !== undefined) {\n return getRowTopCache[index];\n } else {\n var all = store.getIndexRange();\n var top = 0;\n var result = 0;\n\n for (var i = 0; i < all.length; i++) {\n getRowTopCache[i] = top;\n top += this.getItemHeight(all[i].id);\n\n if (i < index) {\n result = top;\n }\n }\n\n return result;\n }\n },\n\n /**\r\n * Get top coordinate by item id\r\n * @param {*} task_id\r\n */\n getItemTop: function getItemTop(taskId) {\n if (this.$config.rowStore) {\n if (getItemTopCache[taskId] !== undefined) {\n return getItemTopCache[taskId];\n }\n\n var store = this.$config.rowStore;\n if (!store) return 0;\n var itemIndex = store.getIndexById(taskId);\n\n if (itemIndex === -1 && store.getParent && store.exists(taskId)) {\n var parentId = store.getParent(taskId);\n\n if (store.exists(parentId)) {\n // if task is not found in list - maybe it's parent is a split task and we should use parents index instead\n var parent = store.getItem(parentId);\n\n if (this.$gantt.isSplitTask(parent)) {\n return this.getItemTop(parentId);\n }\n }\n }\n\n getItemTopCache[taskId] = this.getRowTop(itemIndex);\n return getItemTopCache[taskId];\n } else {\n return 0;\n }\n },\n\n /**\r\n * Get height of the item by item id\r\n * @param {*} itemId\r\n */\n getItemHeight: function getItemHeight(itemId) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getItemHeight(itemId);\n }\n\n if (!getItemHeightCache && this.$config.rowStore) {\n this._fillHeightCache(this.$config.rowStore);\n }\n\n if (getItemHeightCache[itemId] !== undefined) {\n return getItemHeightCache[itemId];\n }\n\n var defaultHeight = this.$getConfig().row_height;\n\n if (this.$config.rowStore) {\n var store = this.$config.rowStore;\n if (!store) return defaultHeight;\n var item = store.getItem(itemId);\n return getItemHeightCache[itemId] = item && item.row_height || defaultHeight;\n } else {\n return defaultHeight;\n }\n },\n _fillHeightCache: function _fillHeightCache(store) {\n if (!store) {\n return;\n }\n\n getItemHeightCache = {};\n var defaultHeight = this.$getConfig().row_height;\n store.eachItem(function (item) {\n return getItemHeightCache[item.id] = item && item.row_height || defaultHeight;\n });\n },\n getCacheStateTotalHeight: function getCacheStateTotalHeight(store) {\n var globalHeight = this.$getConfig().row_height;\n var itemHeightCache = {};\n var items = [];\n var sumHeight = 0;\n\n if (store) {\n store.eachItem(function (item) {\n items.push(item);\n itemHeightCache[item.id] = item.row_height;\n sumHeight += item.row_height || globalHeight;\n });\n }\n\n return {\n globalHeight: globalHeight,\n items: items,\n count: items.length,\n sumHeight: sumHeight\n };\n },\n shouldClearHeightCache: function shouldClearHeightCache(oldState, newState) {\n if (oldState.count != newState.count) {\n return true;\n }\n\n if (oldState.globalHeight != newState.globalHeight) {\n return true;\n }\n\n if (oldState.sumHeight != newState.sumHeight) {\n return true;\n }\n\n for (var i in oldState.items) {\n var newValue = newState.items[i];\n\n if (newValue !== undefined && newValue != oldState.items[i]) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\r\n * Get total height of items\r\n */\n getTotalHeight: function getTotalHeight() {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getTotalHeight();\n }\n\n if (totalHeightCache != -1) {\n return totalHeightCache;\n }\n\n if (this.$config.rowStore) {\n var store = this.$config.rowStore;\n\n this._fillHeightCache(store);\n\n var getHeight = this.getItemHeight.bind(this);\n var visibleItems = store.getVisibleItems();\n var totalHeight = 0;\n visibleItems.forEach(function (item) {\n totalHeight += getHeight(item.id);\n });\n totalHeightCache = totalHeight;\n return totalHeight;\n } else {\n return 0;\n }\n },\n\n /**\r\n * Get item by top position\r\n * @param {*} top\r\n */\n getItemIndexByTopPosition: function getItemIndexByTopPosition(top) {\n if (this.$config.rowStore) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getItemIndexByTopPosition(top);\n }\n\n var store = this.$config.rowStore;\n\n for (var i = 0; i < store.countVisible(); i++) {\n var current = this.getRowTop(i);\n var next = this.getRowTop(i + 1);\n\n if (!next) {\n var taskId = store.getIdByIndex(i);\n next = current + this.getItemHeight(taskId);\n }\n\n if (top >= current && top < next) {\n return i;\n }\n } // GS-1723: If we iterated all tasks and didn't find the position, the target is below all other tasks\n\n\n return store.countVisible() + 2;\n } else {\n return 0;\n }\n }\n };\n}\n\nmodule.exports = createMixin;","export default class DurationFormatterNumeric implements IDurationFormatter {\r\n\tstatic create = (settings: IDurationFormatterConfig = null): IDurationFormatter => {\r\n\t\treturn new DurationFormatterNumeric();\r\n\t}\r\n\tcanParse = (value: string) : boolean => {\r\n\t\treturn !isNaN(this.parse(value));\r\n\t}\r\n\tformat = (value: number) : string => {\r\n\t\treturn String(value);\r\n\t}\r\n\tparse = (value: string) : number => {\r\n\t\treturn parseInt(value, 10);\r\n\t}\r\n}","function copyLinkIdsArray(gantt, linkIds, targetHash) {\n for (var i = 0; i < linkIds.length; i++) {\n if (gantt.isLinkExists(linkIds[i])) {\n targetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\n }\n }\n}\n\nfunction copyLinkIds(gantt, task, targetHash) {\n copyLinkIdsArray(gantt, task.$source, targetHash);\n copyLinkIdsArray(gantt, task.$target, targetHash);\n}\n\nfunction getSubtreeLinks(gantt, rootId) {\n var res = {};\n\n if (gantt.isTaskExists(rootId)) {\n copyLinkIds(gantt, gantt.getTask(rootId), res);\n }\n\n gantt.eachTask(function (child) {\n copyLinkIds(gantt, child, res);\n }, rootId);\n return res;\n}\n\nfunction getSubtreeTasks(gantt, rootId) {\n var res = {};\n gantt.eachTask(function (child) {\n res[child.id] = child;\n }, rootId);\n return res;\n}\n\nmodule.exports = {\n getSubtreeLinks: getSubtreeLinks,\n getSubtreeTasks: getSubtreeTasks\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\n\nvar PrimaryScaleHelper = require(\"./ui/timeline/scales\");\n\nfunction resolveConfigRange(unit, gantt) {\n var range = {\n start_date: null,\n end_date: null\n };\n\n if (gantt.config.start_date && gantt.config.end_date) {\n range.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n var end = new Date(gantt.config.end_date);\n var start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\n if (+end != +start_interval) {\n end = gantt.date.add(start_interval, 1, unit);\n } else {\n end = start_interval;\n }\n\n range.end_date = end;\n }\n\n return range;\n}\n\nfunction _scale_range_unit(gantt) {\n var primaryScale = new PrimaryScaleHelper(gantt).primaryScale();\n var unit = primaryScale.unit;\n var step = primaryScale.step;\n\n if (gantt.config.scale_offset_minimal) {\n var helper = new ScaleHelper(gantt);\n var scales = [helper.primaryScale()].concat(helper.getSubScales());\n helper.sortScales(scales);\n unit = scales[scales.length - 1].unit;\n step = scales[scales.length - 1].step || 1;\n }\n\n return {\n unit: unit,\n step: step\n };\n}\n\nfunction _init_tasks_range(gantt) {\n var cfg = _scale_range_unit(gantt);\n\n var unit = cfg.unit,\n step = cfg.step;\n var range = resolveConfigRange(unit, gantt); // GS-1544: Show correct date range if we have tasks or only projects\n\n if (!(range.start_date && range.end_date)) {\n var onlyProjectTasks = true;\n var tasks = gantt.getTaskByTime();\n\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n\n if (task.type !== gantt.config.types.project) {\n onlyProjectTasks = false;\n break;\n }\n }\n\n if (tasks.length && onlyProjectTasks) {\n var start_date = tasks[0].start_date;\n var end_date = gantt.date.add(start_date, 1, gantt.config.duration_unit);\n range = {\n start_date: new Date(start_date),\n end_date: new Date(end_date)\n };\n } else {\n range = gantt.getSubtaskDates();\n }\n\n if (!range.start_date || !range.end_date) {\n range = {\n start_date: new Date(),\n end_date: new Date()\n };\n }\n\n range.start_date = gantt.date[unit + \"_start\"](range.start_date);\n range.start_date = gantt.calculateEndDate({\n start_date: gantt.date[unit + \"_start\"](range.start_date),\n duration: -1,\n unit: unit,\n step: step\n }); //one free column before first task\n\n range.end_date = gantt.date[unit + \"_start\"](range.end_date);\n range.end_date = gantt.calculateEndDate({\n start_date: range.end_date,\n duration: 2,\n unit: unit,\n step: step\n }); //one free column after last task\n }\n\n gantt._min_date = range.start_date;\n gantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n if (gantt.config.fit_tasks) {\n var old_min = +gantt._min_date,\n old_max = +gantt._max_date; //this._init_tasks_range();\n\n if (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = function updateTasksRange(gantt) {\n _init_tasks_range(gantt);\n\n _adjust_scales(gantt);\n};","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nvar DataStore = require(\"./datastore\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nvar TreeDataStore = function TreeDataStore(config) {\n DataStore.apply(this, [config]);\n this._branches = {};\n this.pull = {}; //GS-761 Update existing item instead of adding it to the new position\n\n this.$initItem = function (item) {\n var loadedItem = item;\n\n if (config.initItem) {\n loadedItem = config.initItem(loadedItem);\n }\n\n var existingItem = this.getItem(item.id);\n\n if (existingItem && existingItem.parent != loadedItem.parent) {\n this.move(loadedItem.id, loadedItem.$index || -1, loadedItem.parent || this._ganttConfig.root_id);\n }\n\n return loadedItem;\n };\n\n this.$parentProperty = config.parentProperty || \"parent\";\n\n if (typeof config.rootId !== \"function\") {\n this.$getRootId = function (val) {\n return function () {\n return val;\n };\n }(config.rootId || 0);\n } else {\n this.$getRootId = config.rootId;\n } // TODO: replace with live reference to gantt config\n\n\n this.$openInitially = config.openInitially;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n this._skip_refresh = false;\n this._ganttConfig = null;\n\n if (config.getConfig) {\n this._ganttConfig = config.getConfig();\n }\n\n var splitParents = {};\n var splitItems = {};\n var taskOpenState = {};\n var taskVisibility = {};\n var haveSplitItems = false;\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n return true;\n });\n\n this.attachEvent(\"onPreFilter\", function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n haveSplitItems = false;\n this.eachItem(function (item) {\n var parent = this.getParent(item.id);\n\n if (item.$open && taskOpenState[parent] !== false) {\n taskOpenState[item.id] = true;\n } else {\n taskOpenState[item.id] = false;\n }\n\n if (this._isSplitItem(item)) {\n haveSplitItems = true;\n splitParents[item.id] = true;\n splitItems[item.id] = true;\n }\n\n if (haveSplitItems && splitItems[parent]) {\n splitItems[item.id] = true;\n }\n\n if (taskOpenState[parent] || taskOpenState[parent] === undefined) {\n taskVisibility[item.id] = true;\n } else {\n taskVisibility[item.id] = false;\n }\n });\n });\n this.attachEvent(\"onFilterItem\", function (id, item) {\n var canOpenSplitTasks = false;\n\n if (this._ganttConfig) {\n var canOpenSplitTasks = this._ganttConfig.open_split_tasks;\n }\n\n var open = taskVisibility[item.id];\n\n if (haveSplitItems) {\n if (open && splitItems[item.id] && !splitParents[item.id]) {\n open = !!canOpenSplitTasks;\n }\n\n if (splitItems[item.id] && !splitParents[item.id]) {\n item.$split_subtask = true;\n }\n }\n\n item.$expanded_branch = !!taskVisibility[item.id];\n return !!open;\n });\n this.attachEvent(\"onFilter\", function () {\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n });\n return this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n _buildTree: function _buildTree(data) {\n var item = null;\n var rootId = this.$getRootId();\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n this.setParent(item, replaceValidZeroId(this.getParent(item), rootId) || rootId);\n } // calculating $level for each item\n\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n this._add_branch(item);\n\n item.$level = this.calculateItemLevel(item);\n item.$local_index = this.getBranchIndex(item.id);\n\n if (!utils.defined(item.$open)) {\n item.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n }\n }\n\n this._updateOrder();\n },\n _isSplitItem: function _isSplitItem(item) {\n return item.render == \"split\" && this.hasChild(item.id);\n },\n parse: function parse(data) {\n if (!this._skip_refresh) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n this._buildTree(loaded);\n\n this.filter();\n\n if (!this._skip_refresh) {\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n var parent = this.getParent(item);\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n this.setParent(item, parent);\n }\n\n var parentIndex = this.getIndexById(parent);\n var targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n if (targetIndex * 1 !== targetIndex) {\n targetIndex = undefined;\n }\n\n DataStore.prototype._addItemInner.call(this, item, targetIndex);\n\n this.setParent(item, parent);\n\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent);\n }\n\n this._add_branch(item, index);\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n var children = this.getChildren(oldId);\n var visibleOrder = this._searchVisibleOrder[oldId];\n\n DataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n var parent = this.getParent(newId);\n\n this._replace_branch_child(parent, oldId, newId);\n\n if (this._branches[oldId]) {\n this._branches[newId] = this._branches[oldId];\n }\n\n for (var i = 0; i < children.length; i++) {\n var child = this.getItem(children[i]);\n child[this.$parentProperty] = newId;\n child.$rendered_parent = newId;\n }\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._branches[oldId];\n },\n _traverseBranches: function _traverseBranches(code, parent) {\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var branch = this._branches[parent];\n\n if (branch) {\n for (var i = 0; i < branch.length; i++) {\n var itemId = branch[i];\n code.call(this, itemId);\n if (this._branches[itemId]) this._traverseBranches(code, itemId);\n }\n }\n },\n _updateOrder: function _updateOrder(code) {\n this.fullOrder = powerArray.$create();\n\n this._traverseBranches(function (taskId) {\n this.fullOrder.push(taskId);\n });\n\n if (code) DataStore.prototype._updateOrder.call(this, code);\n },\n _removeItemInner: function _removeItemInner(id) {\n var items = [];\n this.eachItem(function (child) {\n items.push(child);\n }, id);\n items.push(this.getItem(id));\n\n for (var i = 0; i < items.length; i++) {\n this._move_branch(items[i], this.getParent(items[i]), null);\n\n DataStore.prototype._removeItemInner.call(this, items[i].id);\n\n this._move_branch(items[i], this.getParent(items[i]), null);\n }\n },\n move: function move(sid, tindex, parent) {\n //target id as 4th parameter\n var id = arguments[3];\n var config = this._ganttConfig || {};\n var root_id = config.root_id || 0;\n id = replaceValidZeroId(id, root_id);\n\n if (id) {\n if (id === sid) return;\n parent = this.getParent(id);\n tindex = this.getBranchIndex(id);\n }\n\n if (sid == parent) {\n return;\n }\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var source = this.getItem(sid);\n var source_pid = this.getParent(source.id);\n var tbranch = this.getChildren(parent);\n if (tindex == -1) tindex = tbranch.length + 1;\n\n if (source_pid == parent) {\n var sindex = this.getBranchIndex(sid);\n if (sindex == tindex) return;\n }\n\n if (this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false) return false;\n var placeholderIds = [];\n\n for (var i = 0; i < tbranch.length; i++) {\n if (isPlaceholderTask(tbranch[i], null, this, this._ganttConfig)) {\n placeholderIds.push(tbranch[i]);\n tbranch.splice(i, 1);\n i--;\n }\n }\n\n this._replace_branch_child(source_pid, sid);\n\n tbranch = this.getChildren(parent);\n var tid = tbranch[tindex];\n tid = replaceValidZeroId(tid, root_id);\n if (!tid) //adding as last element\n tbranch.push(sid);else tbranch = tbranch.slice(0, tindex).concat([sid]).concat(tbranch.slice(tindex));\n\n if (placeholderIds.length) {\n tbranch = tbranch.concat(placeholderIds);\n }\n\n this.setParent(source, parent);\n this._branches[parent] = tbranch;\n var diff = this.calculateItemLevel(source) - source.$level;\n source.$level += diff;\n this.eachItem(function (item) {\n item.$level += diff;\n }, source.id, this);\n\n this._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n this.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n this.refresh();\n },\n getBranchIndex: function getBranchIndex(id) {\n var branch = this.getChildren(this.getParent(id));\n var index = branch.indexOf(id + \"\");\n\n if (index == -1) {\n index = branch.indexOf(+id);\n }\n\n return index;\n },\n hasChild: function hasChild(id) {\n var branch = this._branches[id];\n return branch && branch.length;\n },\n getChildren: function getChildren(id) {\n var branch = this._branches[id];\n return branch ? branch : powerArray.$create();\n },\n isChildOf: function isChildOf(childId, parentId) {\n if (!this.exists(childId)) return false;\n if (parentId === this.$getRootId()) return true;\n if (!this.hasChild(parentId)) return false;\n var item = this.getItem(childId);\n var pid = this.getParent(childId);\n var parent = this.getItem(parentId);\n\n if (parent.$level >= item.$level) {\n return false;\n }\n\n while (item && this.exists(pid)) {\n item = this.getItem(pid);\n if (item && item.id == parentId) return true;\n pid = this.getParent(item);\n }\n\n return false;\n },\n getSiblings: function getSiblings(id) {\n if (!this.exists(id)) {\n return powerArray.$create();\n }\n\n var parent = this.getParent(id);\n return this.getChildren(parent);\n },\n getNextSibling: function getNextSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var nextSibling = siblings[i + 1];\n\n if (nextSibling === 0 && i > 0) {\n nextSibling = \"0\";\n }\n\n return nextSibling || null;\n }\n }\n\n return null;\n },\n getPrevSibling: function getPrevSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var previousSibling = siblings[i - 1];\n\n if (previousSibling === 0 && i > 0) {\n previousSibling = \"0\";\n }\n\n return previousSibling || null;\n }\n }\n\n return null;\n },\n getParent: function getParent(id) {\n var item = null;\n\n if (id.id !== undefined) {\n item = id;\n } else {\n item = this.getItem(id);\n }\n\n var parent;\n\n if (item) {\n parent = item[this.$parentProperty];\n } else {\n parent = this.$getRootId();\n }\n\n return parent;\n },\n clearAll: function clearAll() {\n this._branches = {};\n DataStore.prototype.clearAll.call(this);\n },\n calculateItemLevel: function calculateItemLevel(item) {\n var level = 0;\n this.eachParent(function () {\n level++;\n }, item);\n return level;\n },\n _setParentInner: function _setParentInner(item, new_pid, silent) {\n if (!silent) {\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent, new_pid);\n } else {\n this._move_branch(item, item[this.$parentProperty], new_pid);\n }\n }\n },\n setParent: function setParent(item, new_pid, silent) {\n this._setParentInner(item, new_pid, silent);\n\n item[this.$parentProperty] = new_pid;\n },\n _eachItemCached: function _eachItemCached(code, cache) {\n for (var i = 0, len = cache.length; i < len; i++) {\n code.call(this, cache[i]);\n }\n },\n _eachItemIterate: function _eachItemIterate(code, startId, cache) {\n var itemsStack = this.getChildren(startId);\n\n if (itemsStack.length) {\n itemsStack = itemsStack.slice().reverse();\n }\n\n while (itemsStack.length) {\n var itemId = itemsStack.pop();\n var item = this.getItem(itemId);\n code.call(this, item);\n\n if (cache) {\n cache.push(item);\n }\n\n if (this.hasChild(item.id)) {\n var children = this.getChildren(item.id);\n var len = children.length;\n\n for (var i = len - 1; i >= 0; i--) {\n itemsStack.push(children[i]);\n }\n }\n }\n },\n eachItem: function eachItem(code, parent) {\n var rootId = this.$getRootId();\n\n if (!utils.defined(parent)) {\n parent = rootId;\n }\n\n var startId = replaceValidZeroId(parent, rootId) || rootId;\n var useCache = false;\n var buildCache = false;\n var cache = null;\n\n if (startId === rootId) {\n if (this._eachItemMainRangeCache) {\n useCache = true;\n cache = this._eachItemMainRangeCache;\n } else {\n buildCache = true;\n cache = this._eachItemMainRangeCache = [];\n }\n }\n\n if (useCache) {\n this._eachItemCached(code, cache);\n } else {\n this._eachItemIterate(code, startId, buildCache ? cache : null);\n }\n },\n eachParent: function eachParent(code, startItem) {\n var parentsHash = {};\n var item = startItem;\n var parent = this.getParent(item);\n\n while (this.exists(parent)) {\n if (parentsHash[parent]) {\n throw new Error(\"Invalid tasks tree. Cyclic reference has been detected on task \" + parent);\n }\n\n parentsHash[parent] = true;\n item = this.getItem(parent);\n code.call(this, item);\n parent = this.getParent(item);\n }\n },\n _add_branch: function _add_branch(item, index, parent) {\n var pid = parent === undefined ? this.getParent(item) : parent;\n if (!this.hasChild(pid)) this._branches[pid] = powerArray.$create();\n var branch = this.getChildren(pid);\n var added_already = branch.indexOf(item.id + \"\") > -1 || branch.indexOf(+item.id) > -1;\n\n if (!added_already) {\n if (index * 1 == index) {\n branch.splice(index, 0, item.id);\n } else {\n branch.push(item.id);\n }\n\n item.$rendered_parent = pid;\n }\n },\n _move_branch: function _move_branch(item, old_parent, new_parent) {\n this._eachItemMainRangeCache = null; //this.setParent(item, new_parent);\n //this._sync_parent(task);\n\n this._replace_branch_child(old_parent, item.id);\n\n if (this.exists(new_parent) || new_parent == this.$getRootId()) {\n this._add_branch(item, undefined, new_parent);\n } else {\n delete this._branches[item.id];\n }\n\n item.$level = this.calculateItemLevel(item);\n this.eachItem(function (child) {\n child.$level = this.calculateItemLevel(child);\n }, item.id);\n },\n _replace_branch_child: function _replace_branch_child(node, old_id, new_id) {\n var branch = this.getChildren(node);\n\n if (branch && node !== undefined) {\n var newbranch = powerArray.$create();\n var index = branch.indexOf(old_id + \"\");\n\n if (index == -1 && !isNaN(+old_id)) {\n index = branch.indexOf(+old_id);\n }\n\n if (index > -1) {\n if (new_id) {\n branch.splice(index, 1, new_id);\n } else {\n branch.splice(index, 1);\n }\n }\n\n newbranch = branch;\n this._branches[node] = newbranch;\n }\n },\n sort: function sort(field, desc, parent) {\n if (!this.exists(parent)) {\n parent = this.$getRootId();\n }\n\n if (!field) field = \"order\";\n var criteria = typeof field == \"string\" ? function (a, b) {\n if (a[field] == b[field] || helpers.isDate(a[field]) && helpers.isDate(b[field]) && a[field].valueOf() == b[field].valueOf()) {\n return 0;\n }\n\n var result = a[field] > b[field];\n return result ? 1 : -1;\n } : field;\n\n if (desc) {\n var original_criteria = criteria;\n\n criteria = function criteria(a, b) {\n return original_criteria(b, a);\n };\n }\n\n var els = this.getChildren(parent);\n\n if (els) {\n var temp = [];\n\n for (var i = els.length - 1; i >= 0; i--) {\n temp[i] = this.getItem(els[i]);\n }\n\n temp.sort(criteria);\n\n for (var i = 0; i < temp.length; i++) {\n els[i] = temp[i].id;\n this.sort(field, desc, els[i]);\n }\n }\n },\n filter: function filter(rule) {\n for (var i in this.pull) {\n var renderedParent = this.pull[i].$rendered_parent;\n var actualParent = this.getParent(this.pull[i]);\n\n if (renderedParent !== actualParent) {\n this._move_branch(this.pull[i], renderedParent, actualParent);\n }\n }\n\n return DataStore.prototype.filter.apply(this, arguments);\n },\n open: function open(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = true; // GS-2170. Do not recalculate the indexes and dates as they will be recalculated later\n\n this._skipTaskRecalculation = true;\n this.callEvent(\"onItemOpen\", [id]);\n }\n },\n close: function close(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = false; // GS-2170. Do not recalculate the indexes and dates as they will be recalculated later\n\n this._skipTaskRecalculation = true;\n this.callEvent(\"onItemClose\", [id]);\n }\n },\n destructor: function destructor() {\n DataStore.prototype.destructor.call(this);\n this._branches = null;\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n }\n}, DataStore.prototype);\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n $create: function $create(array) {\n return utils.mixin(array || [], this);\n },\n //remove element at specified position\n $removeAt: function $removeAt(pos, len) {\n if (pos >= 0) this.splice(pos, len || 1);\n },\n //find element in collection and remove it\n $remove: function $remove(value) {\n this.$removeAt(this.$find(value));\n },\n //add element to collection at specific position\n $insertAt: function $insertAt(data, pos) {\n if (!pos && pos !== 0) //add to the end by default\n this.push(data);else {\n var b = this.splice(pos, this.length - pos);\n this[pos] = data;\n this.push.apply(this, b); //reconstruct array without loosing this pointer\n }\n },\n //return index of element, -1 if it doesn't exists\n $find: function $find(data) {\n for (var i = 0; i < this.length; i++) {\n if (data == this[i]) return i;\n }\n\n return -1;\n },\n //execute some method for each element of array\n $each: function $each(functor, master) {\n for (var i = 0; i < this.length; i++) {\n functor.call(master || this, this[i]);\n }\n },\n //create new array from source, by using results of functor\n $map: function $map(functor, master) {\n for (var i = 0; i < this.length; i++) {\n this[i] = functor.call(master || this, this[i]);\n }\n\n return this;\n },\n $filter: function $filter(functor, master) {\n for (var i = 0; i < this.length; i++) {\n if (!functor.call(master || this, this[i])) {\n this.splice(i, 1);\n i--;\n }\n }\n\n return this;\n }\n};\nmodule.exports = $powerArray;","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar eventable = require(\"../../utils/eventable\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar DataStore = function DataStore(config) {\n this.pull = {};\n this.$initItem = config.initItem;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._skip_refresh = false;\n this._filterRule = null;\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._getItemsCache = null;\n this.$config = config;\n eventable(this);\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._getItemsCache = null;\n return true;\n });\n\n return this;\n};\n\nDataStore.prototype = {\n _attachDataChange: function _attachDataChange(callback) {\n this.attachEvent(\"onClearAll\", callback);\n this.attachEvent(\"onBeforeParse\", callback);\n this.attachEvent(\"onBeforeUpdate\", callback);\n this.attachEvent(\"onBeforeDelete\", callback);\n this.attachEvent(\"onBeforeAdd\", callback);\n this.attachEvent(\"onParse\", callback);\n this.attachEvent(\"onBeforeFilter\", callback);\n },\n _parseInner: function _parseInner(data) {\n var item = null,\n loaded = [];\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n if (this.$initItem) {\n if (this.$config.copyOnParse()) {\n item = utils.copy(item);\n }\n\n item = this.$initItem(item);\n }\n\n if (this.callEvent(\"onItemLoading\", [item])) {\n if (!this.pull.hasOwnProperty(item.id)) {\n this.fullOrder.push(item.id);\n }\n\n loaded.push(item);\n this.pull[item.id] = item;\n }\n }\n\n return loaded;\n },\n parse: function parse(data) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n if (!this.isSilent()) {\n this.refresh();\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n getItem: function getItem(id) {\n return this.pull[id];\n },\n _updateOrder: function _updateOrder(code) {\n code.call(this.visibleOrder);\n code.call(this.fullOrder);\n },\n updateItem: function updateItem(id, item) {\n if (!utils.defined(item)) item = this.getItem(id);\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeUpdate\", [item.id, item]) === false) return false;\n } // This is how it worked before updating the properties:\n // this.pull[id]=item;\n\n\n utils.mixin(this.pull[id], item, true);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterUpdate\", [item.id, item]);\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"update\"]);\n }\n },\n _removeItemInner: function _removeItemInner(id) {\n //clear from collections\n //this.visibleOrder.$remove(id);\n this._updateOrder(function () {\n this.$remove(id);\n });\n\n delete this.pull[id];\n },\n removeItem: function removeItem(id) {\n //utils.assert(this.exists(id), \"Not existing ID in remove command\"+id);\n var obj = this.getItem(id); //save for later event\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeDelete\", [obj.id, obj]) === false) return false;\n }\n\n this.callEvent(\"onAfterDeleteConfirmed\", [obj.id, obj]);\n\n this._removeItemInner(id);\n\n if (!this.isSilent()) {\n this.filter();\n this.callEvent(\"onAfterDelete\", [obj.id, obj]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"delete\"]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n //in case of treetable order is sent as 3rd parameter\n //var order = index;\n if (this.exists(item.id)) {\n this.silent(function () {\n this.updateItem(item.id, item);\n });\n } else {\n var order = this.visibleOrder; //by default item is added to the end of the list\n\n var data_size = order.length;\n if (!utils.defined(index) || index < 0) index = data_size; //check to prevent too big indexes\n\n if (index > data_size) {\n //dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n index = Math.min(order.length, index);\n }\n } //gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\n this.pull[item.id] = item;\n\n if (!this.isSilent()) {\n this._updateOrder(function () {\n if (this.$find(item.id) === -1) this.$insertAt(item.id, index);\n });\n }\n\n this.filter(); //order.$insertAt(item.id,index);\n },\n isVisible: function isVisible(id) {\n return this.visibleOrder.$find(id) > -1;\n },\n getVisibleItems: function getVisibleItems() {\n return this.getIndexRange();\n },\n addItem: function addItem(item, index) {\n if (!utils.defined(item.id)) item.id = utils.uid();\n\n if (this.$initItem) {\n item = this.$initItem(item);\n }\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n }\n\n this._addItemInner(item, index);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterAdd\", [item.id, item]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"add\"]);\n }\n\n return item.id;\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n if (this.pull[oldId]) this.pull[newId] = this.pull[oldId];\n var visibleOrder = this._searchVisibleOrder[oldId];\n this.pull[newId].id = newId;\n\n this._updateOrder(function () {\n this[this.$find(oldId)] = newId;\n });\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._searchVisibleOrder[oldId]; //this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\n delete this.pull[oldId];\n },\n changeId: function changeId(oldId, newId) {\n this._changeIdInner(oldId, newId);\n\n this.callEvent(\"onIdChange\", [oldId, newId]);\n },\n exists: function exists(id) {\n return !!this.pull[id];\n },\n _moveInner: function _moveInner(sindex, tindex) {\n var id = this.getIdByIndex(sindex);\n\n this._updateOrder(function () {\n this.$removeAt(sindex);\n this.$insertAt(id, Math.min(this.length, tindex));\n }); //this.visibleOrder.$removeAt(sindex);\t//remove at old position\n //if (sindex<tindex) tindex--;\t//correct shift, caused by element removing\n //this.visibleOrder.$insertAt(id,Math.min(this.visibleOrder.length, tindex));\t//insert at new position\n\n },\n move: function move(sindex, tindex) {\n //gantt.assert(sindex>=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n var id = this.getIdByIndex(sindex);\n var obj = this.getItem(id);\n\n this._moveInner(sindex, tindex);\n\n if (!this.isSilent()) {\n //repaint signal\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n }\n },\n clearAll: function clearAll() {\n if (this.$destroyed) {\n return;\n } // GS-956 We need to unselect the resource as its ID is cached\n\n\n this.silent(function () {\n this.unselect();\n });\n this.pull = {};\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n if (this.isSilent()) return;\n this.callEvent(\"onClearAll\", []);\n this.refresh();\n },\n silent: function silent(code, master) {\n var alreadySilent = false;\n\n if (this.isSilent()) {\n alreadySilent = true;\n }\n\n this._skip_refresh = true;\n code.call(master || this);\n\n if (!alreadySilent) {\n this._skip_refresh = false;\n }\n },\n isSilent: function isSilent() {\n return !!this._skip_refresh;\n },\n arraysEqual: function arraysEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) return false;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) return false;\n }\n\n return true;\n },\n refresh: function refresh(id, quick) {\n if (this.isSilent()) return;\n var item;\n\n if (id) {\n item = this.getItem(id);\n }\n\n var args;\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n if (this.callEvent(\"onBeforeStoreUpdate\", args) === false) {\n return;\n }\n\n var skipFilter = this._quick_refresh && !this._mark_recompute;\n this._mark_recompute = false;\n\n if (id) {\n // if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n if (!quick && !skipFilter) {\n var oldOrder = this.visibleOrder;\n this.filter();\n\n if (!this.arraysEqual(oldOrder, this.visibleOrder)) {\n id = undefined;\n }\n }\n } else if (!skipFilter) {\n this.filter();\n }\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n this.callEvent(\"onStoreUpdated\", args);\n },\n count: function count() {\n return this.fullOrder.length;\n },\n countVisible: function countVisible() {\n return this.visibleOrder.length;\n },\n sort: function sort(_sort) {},\n serialize: function serialize() {},\n eachItem: function eachItem(code) {\n for (var i = 0; i < this.fullOrder.length; i++) {\n var item = this.getItem(this.fullOrder[i]);\n code.call(this, item);\n }\n },\n find: function find(filter) {\n var result = [];\n this.eachItem(function (item) {\n if (filter(item)) {\n result.push(item);\n }\n });\n return result;\n },\n filter: function filter(rule) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeFilter\", []);\n }\n\n this.callEvent(\"onPreFilter\", []);\n var filteredOrder = powerArray.$create();\n var placeholderIds = [];\n this.eachItem(function (item) {\n if (this.callEvent(\"onFilterItem\", [item.id, item])) {\n if (isPlaceholderTask(item.id, null, this, this._ganttConfig)) {\n placeholderIds.push(item.id);\n } else {\n filteredOrder.push(item.id);\n }\n }\n });\n\n for (var i = 0; i < placeholderIds.length; i++) {\n filteredOrder.push(placeholderIds[i]);\n }\n\n this.visibleOrder = filteredOrder;\n this._searchVisibleOrder = {};\n\n for (var i = 0; i < this.visibleOrder.length; i++) {\n this._searchVisibleOrder[this.visibleOrder[i]] = i;\n }\n\n if (!this.isSilent()) {\n this.callEvent(\"onFilter\", []);\n }\n },\n getIndexRange: function getIndexRange(from, to) {\n var max = Math.min(to || Infinity, this.countVisible() - 1);\n var min = from || 0;\n var cacheKey = min + '-' + max;\n\n if (this._indexRangeCache[cacheKey]) {\n return this._indexRangeCache[cacheKey].slice();\n }\n\n var ret = [];\n\n for (var i = min; i <= max; i++) {\n ret.push(this.getItem(this.visibleOrder[i]));\n }\n\n this._indexRangeCache[cacheKey] = ret.slice();\n return ret;\n },\n getItems: function getItems() {\n if (this._getItemsCache) {\n return this._getItemsCache.slice();\n }\n\n var res = [];\n\n for (var i in this.pull) {\n res.push(this.pull[i]);\n }\n\n this._getItemsCache = res.slice();\n return res;\n },\n getIdByIndex: function getIdByIndex(index) {\n return this.visibleOrder[index];\n },\n getIndexById: function getIndexById(id) {\n var res = this._searchVisibleOrder[id];\n\n if (res === undefined) {\n res = -1;\n }\n\n return res;\n },\n _getNullIfUndefined: function _getNullIfUndefined(value) {\n if (value === undefined) {\n return null;\n } else {\n return value;\n }\n },\n getFirst: function getFirst() {\n return this._getNullIfUndefined(this.visibleOrder[0]);\n },\n getLast: function getLast() {\n return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length - 1]);\n },\n getNext: function getNext(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) + 1]);\n },\n getPrev: function getPrev(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) - 1]);\n },\n destructor: function destructor() {\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n this.$destroyed = true;\n this.pull = null;\n this.$initItem = null;\n this.visibleOrder = null;\n this.fullOrder = null;\n this._skip_refresh = null;\n this._filterRule = null;\n this._searchVisibleOrder = null;\n this._indexRangeCache = {};\n }\n};\nmodule.exports = DataStore;","function checkTimeout(host, updPerSecond) {\n if (!updPerSecond) return true;\n if (host._on_timeout) return false;\n var timeout = Math.ceil(1000 / updPerSecond);\n if (timeout < 2) return true;\n setTimeout(function () {\n delete host._on_timeout;\n }, timeout);\n host._on_timeout = true;\n return true;\n}\n\nmodule.exports = checkTimeout;","var utils = require(\"../../../utils/utils\");\n\nfunction createScope(addEvent, removeEvent) {\n addEvent = addEvent || utils.event;\n removeEvent = removeEvent || utils.eventRemove;\n var handlers = [];\n var eventScope = {\n attach: function attach(el, event, callback, capture) {\n handlers.push({\n element: el,\n event: event,\n callback: callback,\n capture: capture\n });\n addEvent(el, event, callback, capture);\n },\n detach: function detach(el, event, callback, capture) {\n removeEvent(el, event, callback, capture);\n\n for (var i = 0; i < handlers.length; i++) {\n var handler = handlers[i];\n\n if (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n handlers.splice(i, 1);\n i--;\n }\n }\n },\n detachAll: function detachAll() {\n var staticArray = handlers.slice(); // original handlers array can be spliced on every iteration\n\n for (var i = 0; i < staticArray.length; i++) {\n var handler = staticArray[i];\n eventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n eventScope.detach(handler.element, handler.event, handler.callback, undefined);\n eventScope.detach(handler.element, handler.event, handler.callback, false);\n eventScope.detach(handler.element, handler.event, handler.callback, true);\n }\n\n handlers.splice(0, handlers.length);\n },\n extend: function extend() {\n return createScope(this.event, this.eventRemove);\n }\n };\n return eventScope;\n}\n\nmodule.exports = createScope;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\nmodule.exports = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' ? self.FormData : window.FormData;","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar punycode = require('punycode');\n\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n} // Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\n\n\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\nsimplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\nunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\nautoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\nunsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that never have a hostname.\nhostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that always contain a // bit.\nslashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n},\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + _typeof(url));\n } // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n\n\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n var rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) hostEnd = rest.length;\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host; // strip [ and ] from the hostname\n // the host field still retains them, though\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n } // now rest is set to the post-host stuff.\n // chop off any delim chars.\n\n\n if (!unsafeProtocol[lowerProto]) {\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) continue;\n var esc = encodeURIComponent(ae);\n\n if (esc === ae) {\n esc = escape(ae);\n }\n\n rest = rest.split(ae).join(esc);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n\n if (rest) this.pathname = rest;\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n } //to support http.request\n\n\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n } // finally, reconstruct the href based on what has been validated.\n\n\n this.href = this.format();\n return this;\n}; // format a parsed object into a url string\n\n\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && util.isObject(this.query) && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || query && '?' + query || '';\n if (protocol && protocol.substr(-1) !== ':') protocol += ':'; // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n } // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n\n\n result.hash = relative.hash; // if the relative url is empty, then there's nothing left to do here.\n\n if (relative.href === '') {\n result.href = result.format();\n return result;\n } // hrefs like //foo/bar always cut to the protocol.\n\n\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') result[rkey] = relative[rkey];\n } //urlParse appends trailing / to urls like http://www.example.com\n\n\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n\n while (relPath.length && !(relative.host = relPath.shift())) {\n ;\n }\n\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port; // to support http.request\n\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol]; // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);\n }\n\n result.host = '';\n\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);\n }\n\n relative.host = null;\n }\n\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath; // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift(); //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n result.search = relative.search;\n result.query = relative.query; //to support http.request\n\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null; //to support http.request\n\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n\n result.href = result.format();\n return result;\n } // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n\n\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n\n var up = 0;\n\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/'; // put the host back\n\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || result.host && srcPath.length;\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n } //to support request.http\n\n\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) this.hostname = host;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n/*<replacement>*/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n\n case 'latin1':\n case 'binary':\n return 'latin1';\n\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n\n default:\n if (retried) return; // undefined\n\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n\n; // Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\n\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n} // StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\n\n\nexports.StringDecoder = StringDecoder;\n\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End; // Returns only complete characters in a Buffer\n\nStringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n}; // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\n\n\nfunction utf8CheckByte(_byte) {\n if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4;\n return _byte >> 6 === 0x02 ? -1 : -2;\n} // Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\n\n\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n\n return nb;\n }\n\n return 0;\n} // Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\n\n\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return \"\\uFFFD\";\n }\n }\n }\n} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\n\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n} // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\n\n\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n} // For UTF-8, a replacement character is added when ending on a partial\n// character.\n\n\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + \"\\uFFFD\";\n return r;\n} // UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\n\n\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n\n return r;\n }\n\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n} // For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\n\n\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\n\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options[\"final\"] === 'function') this._final = options[\"final\"];\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n// undocumented cb() API, needed for core, not for public API\n\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\n\nmodule.exports = EventEmitter; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n\nEventEmitter.defaultMaxListeners = 10; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\nEventEmitter.prototype.setMaxListeners = function (n) {\n if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function (type) {\n var er, handler, len, args, i, listeners;\n if (!this._events) this._events = {}; // If there is no 'error' event listener then throw.\n\n if (type === 'error') {\n if (!this._events.error || isObject(this._events.error) && !this._events.error.length) {\n er = arguments[1];\n\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n if (isUndefined(handler)) return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n\n case 2:\n handler.call(this, arguments[1]);\n break;\n\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n\n for (i = 0; i < len; i++) {\n listeners[i].apply(this, args);\n }\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function (type, listener) {\n var m;\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n if (!this._events) this._events = {}; // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n\n if (this._events.newListener) this.emit('newListener', type, isFunction(listener.listener) ? listener.listener : listener);\n if (!this._events[type]) // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;else if (isObject(this._events[type])) // If we've already got an array, just append.\n this._events[type].push(listener);else // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener]; // Check for listener leak\n\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' + 'leak detected. %d listeners added. ' + 'Use emitter.setMaxListeners() to increase limit.', this._events[type].length);\n\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function (type, listener) {\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n return this;\n}; // emits a 'removeListener' event iff the listener was removed\n\n\nEventEmitter.prototype.removeListener = function (type, listener) {\n var list, position, length, i;\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n if (!this._events || !this._events[type]) return this;\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener || isFunction(list.listener) && list.listener === listener) {\n delete this._events[type];\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener || list[i].listener && list[i].listener === listener) {\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function (type) {\n var key, listeners;\n if (!this._events) return this; // not listening for removeListener, no need to emit\n\n if (!this._events.removeListener) {\n if (arguments.length === 0) this._events = {};else if (this._events[type]) delete this._events[type];\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length) {\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n }\n\n delete this._events[type];\n return this;\n};\n\nEventEmitter.prototype.listeners = function (type) {\n var ret;\n if (!this._events || !this._events[type]) ret = [];else if (isFunction(this._events[type])) ret = [this._events[type]];else ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function (type) {\n if (this._events) {\n var evlistener = this._events[type];\n if (isFunction(evlistener)) return 1;else if (evlistener) return evlistener.length;\n }\n\n return 0;\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar debugUtil = require('util');\n\nvar debug = void 0;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/BufferList');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n return er;\n} // if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\n\n\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n}; // Don't raise the hwm > 8MB\n\n\nvar MAX_HWM = 0x800000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true; // emit 'readable' now to make sure it gets picked up.\n\n emitReadable(stream);\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n } // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n\n\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {}\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList; // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n} // Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n\n return ret;\n} // Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n} // Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState; // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');","var capability = require('./capability');\n\nvar inherits = require('inherits');\n\nvar stream = require('readable-stream');\n\nvar rStates = exports.readyStates = {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE: 4\n};\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n var self = this;\n stream.Readable.call(self);\n self._mode = mode;\n self.headers = {};\n self.rawHeaders = [];\n self.trailers = {};\n self.rawTrailers = []; // Fake the 'close' event, but only once 'end' fires\n\n self.on('end', function () {\n // The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n process.nextTick(function () {\n self.emit('close');\n });\n });\n\n if (mode === 'fetch') {\n var read = function read() {\n reader.read().then(function (result) {\n if (self._destroyed) return;\n\n if (result.done) {\n global.clearTimeout(fetchTimer);\n self.push(null);\n return;\n }\n\n self.push(new Buffer(result.value));\n read();\n })[\"catch\"](function (err) {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.emit('error', err);\n });\n };\n\n self._fetchResponse = response;\n self.url = response.url;\n self.statusCode = response.status;\n self.statusMessage = response.statusText;\n response.headers.forEach(function (header, key) {\n self.headers[key.toLowerCase()] = header;\n self.rawHeaders.push(key, header);\n });\n\n if (capability.writableStream) {\n var writable = new WritableStream({\n write: function write(chunk) {\n return new Promise(function (resolve, reject) {\n if (self._destroyed) {\n reject();\n } else if (self.push(new Buffer(chunk))) {\n resolve();\n } else {\n self._resumeFetch = resolve;\n }\n });\n },\n close: function close() {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.push(null);\n },\n abort: function abort(err) {\n if (!self._destroyed) self.emit('error', err);\n }\n });\n\n try {\n response.body.pipeTo(writable)[\"catch\"](function (err) {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.emit('error', err);\n });\n return;\n } catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\n } // fallback for when writableStream or pipeTo aren't available\n\n\n var reader = response.body.getReader();\n read();\n } else {\n self._xhr = xhr;\n self._pos = 0;\n self.url = xhr.responseURL;\n self.statusCode = xhr.status;\n self.statusMessage = xhr.statusText;\n var headers = xhr.getAllResponseHeaders().split(/\\r?\\n/);\n headers.forEach(function (header) {\n var matches = header.match(/^([^:]+):\\s*(.*)/);\n\n if (matches) {\n var key = matches[1].toLowerCase();\n\n if (key === 'set-cookie') {\n if (self.headers[key] === undefined) {\n self.headers[key] = [];\n }\n\n self.headers[key].push(matches[2]);\n } else if (self.headers[key] !== undefined) {\n self.headers[key] += ', ' + matches[2];\n } else {\n self.headers[key] = matches[2];\n }\n\n self.rawHeaders.push(matches[1], matches[2]);\n }\n });\n self._charset = 'x-user-defined';\n\n if (!capability.overrideMimeType) {\n var mimeType = self.rawHeaders['mime-type'];\n\n if (mimeType) {\n var charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/);\n\n if (charsetMatch) {\n self._charset = charsetMatch[1].toLowerCase();\n }\n }\n\n if (!self._charset) self._charset = 'utf-8'; // best guess\n }\n }\n};\n\ninherits(IncomingMessage, stream.Readable);\n\nIncomingMessage.prototype._read = function () {\n var self = this;\n var resolve = self._resumeFetch;\n\n if (resolve) {\n self._resumeFetch = null;\n resolve();\n }\n};\n\nIncomingMessage.prototype._onXHRProgress = function () {\n var self = this;\n var xhr = self._xhr;\n var response = null;\n\n switch (self._mode) {\n case 'text:vbarray':\n // For IE9\n if (xhr.readyState !== rStates.DONE) break;\n\n try {\n // This fails in IE8\n response = new global.VBArray(xhr.responseBody).toArray();\n } catch (e) {}\n\n if (response !== null) {\n self.push(new Buffer(response));\n break;\n }\n\n // Falls through in IE8\t\n\n case 'text':\n try {\n // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n response = xhr.responseText;\n } catch (e) {\n self._mode = 'text:vbarray';\n break;\n }\n\n if (response.length > self._pos) {\n var newData = response.substr(self._pos);\n\n if (self._charset === 'x-user-defined') {\n var buffer = new Buffer(newData.length);\n\n for (var i = 0; i < newData.length; i++) {\n buffer[i] = newData.charCodeAt(i) & 0xff;\n }\n\n self.push(buffer);\n } else {\n self.push(newData, self._charset);\n }\n\n self._pos = response.length;\n }\n\n break;\n\n case 'arraybuffer':\n if (xhr.readyState !== rStates.DONE || !xhr.response) break;\n response = xhr.response;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n\n case 'moz-chunked-arraybuffer':\n // take whole\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING || !response) break;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n\n case 'ms-stream':\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING) break;\n var reader = new global.MSStreamReader();\n\n reader.onprogress = function () {\n if (reader.result.byteLength > self._pos) {\n self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))));\n self._pos = reader.result.byteLength;\n }\n };\n\n reader.onload = function () {\n self.push(null);\n }; // reader.onerror = ??? // TODO: this\n\n\n reader.readAsArrayBuffer(response);\n break;\n } // The ms-stream case handles end separately in reader.onload()\n\n\n if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n self.push(null);\n }\n};","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream);\nexports.writableStream = isFunction(global.WritableStream);\nexports.abortController = isFunction(global.AbortController);\nexports.blobConstructor = false;\n\ntry {\n new Blob([new ArrayBuffer(1)]);\n exports.blobConstructor = true;\n} catch (e) {} // The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\n\n\nvar xhr;\n\nfunction getXHR() {\n // Cache the xhr value\n if (xhr !== undefined) return xhr;\n\n if (global.XMLHttpRequest) {\n xhr = new global.XMLHttpRequest(); // If XDomainRequest is available (ie only, where xhr might not work\n // cross domain), use the page location. Otherwise use example.com\n // Note: this doesn't actually make an http request.\n\n try {\n xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com');\n } catch (e) {\n xhr = null;\n }\n } else {\n // Service workers don't have XHR\n xhr = null;\n }\n\n return xhr;\n}\n\nfunction checkTypeSupport(type) {\n var xhr = getXHR();\n if (!xhr) return false;\n\n try {\n xhr.responseType = type;\n return xhr.responseType === type;\n } catch (e) {}\n\n return false;\n} // For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\n\n\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined';\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice); // If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\n\nexports.arraybuffer = exports.fetch || haveArrayBuffer && checkTypeSupport('arraybuffer'); // These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\n\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream');\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer && checkTypeSupport('moz-chunked-arraybuffer'); // If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\n\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false);\nexports.vbArray = isFunction(global.VBArray);\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nxhr = null; // Help gc","var ClientRequest = require('./lib/request');\n\nvar response = require('./lib/response');\n\nvar extend = require('xtend');\n\nvar statusCodes = require('builtin-status-codes');\n\nvar url = require('url');\n\nvar http = exports;\n\nhttp.request = function (opts, cb) {\n if (typeof opts === 'string') opts = url.parse(opts);else opts = extend(opts); // Normally, the page is loaded from http or https, so not specifying a protocol\n // will result in a (valid) protocol-relative url. However, this won't work if\n // the protocol is something else, like 'file:'\n\n var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '';\n var protocol = opts.protocol || defaultProtocol;\n var host = opts.hostname || opts.host;\n var port = opts.port;\n var path = opts.path || '/'; // Necessary for IPv6 addresses\n\n if (host && host.indexOf(':') !== -1) host = '[' + host + ']'; // This may be a relative url. The browser should always be able to interpret it correctly.\n\n opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path;\n opts.method = (opts.method || 'GET').toUpperCase();\n opts.headers = opts.headers || {}; // Also valid opts.auth, opts.mode\n\n var req = new ClientRequest(opts);\n if (cb) req.on('response', cb);\n return req;\n};\n\nhttp.get = function get(opts, cb) {\n var req = http.request(opts, cb);\n req.end();\n return req;\n};\n\nhttp.ClientRequest = ClientRequest;\nhttp.IncomingMessage = response.IncomingMessage;\n\nhttp.Agent = function () {};\n\nhttp.Agent.defaultMaxSockets = 4;\nhttp.globalAgent = new http.Agent();\nhttp.STATUS_CODES = statusCodes;\nhttp.METHODS = ['CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNLOCK', 'UNSUBSCRIBE'];","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","module.exports = function (gantt) {\n // TODO: why eslint fails on regexp?\n // eslint-disable-next-line no-control-regex\n var htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n var extraSpaces = new RegExp(\" +\", \"gm\");\n\n function stripHTMLLite(htmlText) {\n return (htmlText + \"\").replace(htmlTags, \" \").replace(extraSpaces, \" \");\n }\n\n var singleQuotes = new RegExp(\"'\", \"gm\");\n\n function escapeQuotes(text) {\n return (text + \"\").replace(singleQuotes, \"'\");\n }\n\n gantt._waiAria = {\n getAttributeString: function getAttributeString(attr) {\n var attributes = [\" \"];\n\n for (var i in attr) {\n var text = escapeQuotes(stripHTMLLite(attr[i]));\n attributes.push(i + \"='\" + text + \"'\");\n }\n\n attributes.push(\" \");\n return attributes.join(\" \");\n },\n getTimelineCellAttr: function getTimelineCellAttr(dateString) {\n return gantt._waiAria.getAttributeString({\n \"aria-label\": dateString\n });\n },\n _taskCommonAttr: function _taskCommonAttr(task, div) {\n if (!(task.start_date && task.end_date)) return;\n div.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n if (task.$dataprocessor_class) {\n div.setAttribute(\"aria-busy\", true);\n }\n },\n setTaskBarAttr: function setTaskBarAttr(task, div) {\n this._taskCommonAttr(task, div); // task bars are complex elements that should be treated as a single element\n\n\n div.setAttribute(\"role\", \"img\");\n\n if (!gantt.isReadonly(task) && gantt.config.drag_move) {\n if (task.id != gantt.getState(\"tasksDnd\").drag_id) {\n div.setAttribute(\"aria-grabbed\", false);\n } else {\n div.setAttribute(\"aria-grabbed\", true);\n }\n }\n },\n taskRowAttr: function taskRowAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.order_branch) {\n div.setAttribute(\"aria-grabbed\", false);\n }\n\n div.setAttribute(\"role\", \"row\"); // selected attribute should be added only to the grid because\n // other parts don't have the keyboard navigation\n\n div.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\"); // allowed values start from 1, set 1 for non-tree datastores\n\n div.setAttribute(\"aria-level\", task.$level + 1 || 1);\n\n if (gantt.hasChild(task.id)) {\n div.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n }\n },\n linkAttr: function linkAttr(link, div) {\n var linkTypes = gantt.config.links;\n var toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n var fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n var content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart); // links are complex elements that should be treated as a single element\n\n div.setAttribute(\"role\", \"img\");\n div.setAttribute(\"aria-label\", stripHTMLLite(content));\n\n if (gantt.isReadonly(link)) {\n div.setAttribute(\"aria-readonly\", true);\n }\n },\n gridSeparatorAttr: function gridSeparatorAttr(div) {\n // the only valid role for the grid header\n div.setAttribute(\"role\", \"columnheader\");\n },\n rowResizerAttr: function rowResizerAttr(div) {\n // the only valid role for the grid header\n div.setAttribute(\"role\", \"row\");\n },\n lightboxHiddenAttr: function lightboxHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n },\n lightboxVisibleAttr: function lightboxVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n lightboxAttr: function lightboxAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n div.setAttribute(\"aria-hidden\", \"true\");\n div.firstChild.setAttribute(\"role\", \"heading\");\n div.firstChild.setAttribute(\"aria-level\", \"1\");\n },\n lightboxButtonAttrString: function lightboxButtonAttrString(buttonName) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels[buttonName],\n \"tabindex\": \"0\"\n });\n },\n lightboxHeader: function lightboxHeader(div, headerText) {\n div.setAttribute(\"aria-label\", headerText);\n },\n lightboxSelectAttrString: function lightboxSelectAttrString(time_option) {\n var label = \"\";\n\n switch (time_option) {\n case \"%Y\":\n label = gantt.locale.labels.years;\n break;\n\n case \"%m\":\n label = gantt.locale.labels.months;\n break;\n\n case \"%d\":\n label = gantt.locale.labels.days;\n break;\n\n case \"%H:%i\":\n label = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n break;\n\n default:\n break;\n }\n\n return gantt._waiAria.getAttributeString({\n \"aria-label\": label\n });\n },\n lightboxDurationInputAttrString: function lightboxDurationInputAttrString(section) {\n return this.getAttributeString({\n \"aria-label\": gantt.locale.labels.column_duration,\n \"aria-valuemin\": \"0\",\n \"role\": \"spinbutton\"\n });\n },\n inlineEditorAttr: function inlineEditorAttr(div) {\n div.setAttribute(\"role\", \"row\");\n },\n gridAttrString: function gridAttrString() {\n return [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n },\n gridScaleRowAttrString: function gridScaleRowAttrString() {\n return \"role='row'\";\n },\n gridScaleCellAttrString: function gridScaleCellAttrString(column, label) {\n var attrs = \"\";\n\n if (column.name == \"add\") {\n // a more precise role is button, but it is not valid for the grid header\n attrs = this.getAttributeString({\n \"role\": \"columnheader\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n } else {\n var attributes = {\n \"role\": \"columnheader\",\n \"aria-label\": label\n };\n\n if (gantt._sort && gantt._sort.name == column.name) {\n if (gantt._sort.direction == \"asc\") {\n attributes[\"aria-sort\"] = \"ascending\";\n } else {\n attributes[\"aria-sort\"] = \"descending\";\n }\n }\n\n attrs = this.getAttributeString(attributes);\n }\n\n return attrs;\n },\n gridDataAttrString: function gridDataAttrString() {\n return \"role='rowgroup'\";\n },\n reorderMarkerAttr: function reorderMarkerAttr(div) {\n div.setAttribute(\"role\", \"grid\");\n div.firstChild.removeAttribute(\"aria-level\");\n div.firstChild.setAttribute(\"aria-grabbed\", \"true\");\n },\n gridCellAttrString: function gridCellAttrString(column, textValue, task) {\n var attributes = {\n \"role\": \"gridcell\",\n \"aria-label\": textValue\n };\n\n if (!column.editor || gantt.isReadonly(task)) {\n attributes[\"aria-readonly\"] = true;\n }\n\n return this.getAttributeString(attributes);\n },\n gridAddButtonAttrString: function gridAddButtonAttrString(column) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n },\n messageButtonAttrString: function messageButtonAttrString(buttonLabel) {\n return \"tabindex='0' role='button' aria-label='\" + buttonLabel + \"'\";\n },\n messageInfoAttr: function messageInfoAttr(div) {\n div.setAttribute(\"role\", \"alert\"); //div.setAttribute(\"tabindex\", \"-1\");\n },\n messageModalAttr: function messageModalAttr(div, uid) {\n div.setAttribute(\"role\", \"dialog\");\n\n if (uid) {\n div.setAttribute(\"aria-labelledby\", uid);\n } //\tdiv.setAttribute(\"tabindex\", \"-1\");\n\n },\n quickInfoAttr: function quickInfoAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n },\n quickInfoHeaderAttrString: function quickInfoHeaderAttrString() {\n return \" role='heading' aria-level='1' \";\n },\n quickInfoHeader: function quickInfoHeader(div, header) {\n div.setAttribute(\"aria-label\", header);\n },\n quickInfoButtonAttrString: function quickInfoButtonAttrString(label) {\n return gantt._waiAria.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": label,\n \"tabindex\": \"0\"\n });\n },\n tooltipAttr: function tooltipAttr(div) {\n div.setAttribute(\"role\", \"tooltip\");\n },\n tooltipVisibleAttr: function tooltipVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n tooltipHiddenAttr: function tooltipHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n }\n };\n\n function isDisabled() {\n return !gantt.config.wai_aria_attributes;\n }\n\n for (var i in gantt._waiAria) {\n gantt._waiAria[i] = function (payload) {\n return function () {\n if (isDisabled()) {\n return \"\";\n }\n\n return payload.apply(this, arguments);\n };\n }(gantt._waiAria[i]);\n }\n};","module.exports = function (gantt) {\n gantt._extend_to_optional = function (lightbox_block) {\n var duration = lightbox_block;\n var optional_time = {\n render: duration.render,\n focus: duration.focus,\n set_value: function set_value(node, value, task, section) {\n var mapping = gantt._resolve_default_mapping(section);\n\n if (!task[mapping.start_date] || mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task)) {\n optional_time.disable(node, section);\n var val = {};\n\n for (var i in mapping) {\n //take default values from the time control from task start/end dates\n val[mapping[i]] = task[i];\n }\n\n return duration.set_value.call(gantt, node, value, val, section); //set default value\n } else {\n optional_time.enable(node, section);\n return duration.set_value.call(gantt, node, value, task, section);\n }\n },\n get_value: function get_value(node, task, section) {\n if (section.disabled) {\n return {\n start_date: null\n };\n } else {\n return duration.get_value.call(gantt, node, task, section);\n }\n },\n update_block: function update_block(node, section) {\n gantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n node.style.display = section.disabled ? \"none\" : \"block\";\n\n if (section.button) {\n var button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n labels = gantt.locale.labels;\n var button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n button.innerHTML = button_text;\n }\n\n gantt.resizeLightbox();\n },\n disable: function disable(node, section) {\n section.disabled = true;\n optional_time.update_block(node, section);\n },\n enable: function enable(node, section) {\n section.disabled = false;\n optional_time.update_block(node, section);\n },\n button_click: function button_click(index, el, section, container) {\n if (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n return;\n }\n\n var config = gantt._get_typed_lightbox_config()[index];\n\n if (config.disabled) {\n optional_time.enable(container, config);\n } else {\n optional_time.disable(container, config);\n }\n }\n };\n return optional_time;\n };\n\n gantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n gantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function TypeselectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TypeselectControl, _super);\n\n TypeselectControl.prototype.render = function (sns) {\n var types = gantt.config.types,\n locale = gantt.locale.labels,\n options = [];\n\n var filter = sns.filter || function (typeKey, typeValue) {\n if (!types.placeholder || typeValue !== types.placeholder) {\n return true;\n }\n\n return false;\n };\n\n for (var i in types) {\n if (!filter(i, types[i]) === false) {\n options.push({\n key: types[i],\n label: locale[\"type_\" + i]\n });\n }\n }\n\n sns.options = options;\n var oldOnChange = sns.onchange;\n\n sns.onchange = function () {\n gantt.changeLightboxType(this.value);\n\n if (this.value === gantt.config.types.task) {\n gantt._lightbox_new_type = \"task\";\n }\n\n if (typeof oldOnChange == 'function') {\n oldOnChange.apply(this, arguments);\n }\n };\n\n return _super.prototype.render.apply(this, arguments);\n };\n\n return TypeselectControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function ConstraintControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ConstraintControl, _super);\n\n function isNonTimedConstraint(value) {\n if (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n return true;\n } else {\n return false;\n }\n }\n\n function toggleTimeSelect(timeSelects, typeValue) {\n var isNonTimed = isNonTimedConstraint(typeValue);\n\n for (var i = 0; i < timeSelects.length; i++) {\n timeSelects[i].disabled = isNonTimed;\n }\n }\n\n ConstraintControl.prototype.render = function (sns) {\n var height = (sns.height || 30) + \"px\";\n var html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n var options = [];\n\n for (var i in gantt.config.constraint_types) {\n options.push({\n key: gantt.config.constraint_types[i],\n label: gantt.locale.labels[gantt.config.constraint_types[i]]\n });\n }\n\n sns.options = sns.options || options;\n html += \"<span data-constraint-type-select>\" + htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"data-type\",\n value: \"constraint-type\"\n }]) + \"</span>\";\n var timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\n html += \"<label data-constraint-time-select>\" + timeLabel + \": \" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</label>\";\n html += \"</div>\";\n return html;\n };\n\n ConstraintControl.prototype.set_value = function (node, value, task, config) {\n var typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n var timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n var map = config._time_format_order;\n\n var mapping = gantt._resolve_default_mapping(config);\n\n if (!typeSelect._eventsInitialized) {\n typeSelect.addEventListener(\"change\", function (e) {\n toggleTimeSelect(timeSelects, e.target.value);\n });\n typeSelect._eventsInitialized = true;\n }\n\n var constraintDate = task[mapping.constraint_date] || new Date();\n\n gantt.form_blocks._fill_lightbox_select(timeSelects, 0, constraintDate, map, config);\n\n var constraintType = task[mapping.constraint_type] || gantt.getConstraintType(task);\n typeSelect.value = constraintType;\n toggleTimeSelect(timeSelects, constraintType);\n };\n\n ConstraintControl.prototype.get_value = function (node, task, config) {\n var typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n var timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n var constraintType = typeSelect.value;\n var constraintDate = null;\n\n if (!isNonTimedConstraint(constraintType)) {\n constraintDate = gantt.form_blocks.getTimePickerValue(timeSelects, config);\n }\n\n return {\n constraint_type: constraintType,\n constraint_date: constraintDate\n };\n };\n\n ConstraintControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"select\"));\n };\n\n return ConstraintControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function ParentControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ParentControl, _super);\n\n ParentControl.prototype.render = function (sns) {\n return _display(sns, false);\n };\n\n ParentControl.prototype.set_value = function (node, value, ev, config) {\n // GS-1051. If the value is `0`, the set_value function in the select control won't select \n // the first child because (0 || '') = '';\n if (value === 0) value = \"0\";\n var tmpDom = document.createElement(\"div\");\n tmpDom.innerHTML = _display(config, ev.id);\n var newOptions = tmpDom.removeChild(tmpDom.firstChild);\n node.onselect = null;\n node.parentNode.replaceChild(newOptions, node);\n return gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\n };\n\n function _display(config, item_id) {\n var tasks = [],\n options = [];\n\n if (item_id) {\n tasks = gantt.getTaskByTime();\n\n if (config.allow_root) {\n tasks.unshift({\n id: gantt.config.root_id,\n text: config.root_label || \"\"\n });\n }\n\n tasks = _filter(tasks, config, item_id);\n\n if (config.sort) {\n tasks.sort(config.sort);\n }\n }\n\n var text = config.template || gantt.templates.task_text;\n\n for (var i = 0; i < tasks.length; i++) {\n var label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\n\n if (label === undefined) {\n label = \"\";\n }\n\n options.push({\n key: tasks[i].id,\n label: label\n });\n }\n\n config.options = options;\n config.map_to = config.map_to || \"parent\";\n return gantt.form_blocks.select.render.apply(this, arguments);\n }\n\n function _filter(options, config, item_id) {\n var filter = config.filter || function () {\n return true;\n };\n\n options = options.slice(0);\n\n for (var i = 0; i < options.length; i++) {\n var task = options[i];\n\n if (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\n options.splice(i, 1);\n i--;\n }\n }\n\n return options;\n }\n\n return ParentControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar DurationFormatterNumeric = require(\"../../../common/duration_formatter_numeric\")[\"default\"];\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function DurationControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n function getFormatter(config) {\n return config.formatter || new DurationFormatterNumeric();\n }\n\n __extends(DurationControl, _super);\n\n DurationControl.prototype.render = function (sns) {\n var time = \"<div class='gantt_time_selects'>\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</div>\";\n var label = \" \" + gantt.locale.labels[gantt.config.duration_unit + \"s\"] + \" \";\n var singleDate = sns.single_date ? \" style='display:none'\" : \"\";\n var readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\n\n var ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\n\n var durationInputClass = \"gantt_duration_value\";\n\n if (sns.formatter) {\n label = \"\";\n durationInputClass += \" gantt_duration_value_formatted\";\n }\n\n var duration = \"<div class='gantt_duration' \" + singleDate + \">\" + \"<input type='button' class='gantt_duration_dec' value='−'\" + readonly + \">\" + \"<input type='text' value='5days' class='\" + durationInputClass + \"'\" + readonly + \" \" + ariaAttr + \">\" + \"<input type='button' class='gantt_duration_inc' value='+'\" + readonly + \">\" + label + \"<span></span>\" + \"</div>\";\n var html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;' class='gantt_section_time'>\" + time + \" \" + duration + \"</div>\";\n return html;\n };\n\n DurationControl.prototype.set_value = function (node, value, ev, config) {\n var s = node.getElementsByTagName(\"select\");\n var inps = node.getElementsByTagName(\"input\");\n var duration = inps[1];\n var btns = [inps[0], inps[2]];\n var endspan = node.getElementsByTagName(\"span\")[0];\n var map = config._time_format_order;\n var mapping;\n var start_date;\n var end_date;\n var duration_val;\n\n function _calc_date() {\n var start_date = _getStartDate.call(gantt, node, config);\n\n var duration = _getDuration.call(gantt, node, config);\n\n var end_date = gantt.calculateEndDate({\n start_date: start_date,\n duration: duration,\n task: ev\n });\n var template = gantt.templates.task_end_date || gantt.templates.task_date;\n endspan.innerHTML = template(end_date);\n }\n\n function _change_duration(step) {\n var value = duration.value;\n value = getFormatter(config).parse(value);\n if (window.isNaN(value)) value = 0;\n value += step;\n if (value < 1) value = 1;\n duration.value = getFormatter(config).format(value);\n\n _calc_date();\n }\n\n btns[0].onclick = gantt.bind(function () {\n _change_duration(-1 * gantt.config.duration_step);\n }, this);\n btns[1].onclick = gantt.bind(function () {\n _change_duration(1 * gantt.config.duration_step);\n }, this);\n s[0].onchange = _calc_date;\n s[1].onchange = _calc_date;\n s[2].onchange = _calc_date;\n if (s[3]) s[3].onchange = _calc_date;\n duration.onkeydown = gantt.bind(function (e) {\n var code;\n e = e || window.event;\n code = e.charCode || e.keyCode || e.which;\n\n if (code == gantt.constants.KEY_CODES.DOWN) {\n _change_duration(-1 * gantt.config.duration_step);\n\n return false;\n }\n\n if (code == gantt.constants.KEY_CODES.UP) {\n _change_duration(1 * gantt.config.duration_step);\n\n return false;\n }\n\n window.setTimeout(_calc_date, 1);\n }, this);\n duration.onchange = gantt.bind(_calc_date, this);\n mapping = gantt._resolve_default_mapping(config);\n if (typeof mapping === \"string\") mapping = {\n start_date: mapping\n };\n start_date = ev[mapping.start_date] || new Date();\n end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n duration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\n start_date: start_date,\n end_date: end_date,\n task: ev\n });\n duration_val = getFormatter(config).format(duration_val);\n\n gantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, config);\n\n duration.value = duration_val;\n\n _calc_date();\n };\n\n DurationControl.prototype.get_value = function (node, ev, config) {\n var startDate = _getStartDate(node, config);\n\n var duration = _getDuration(node, config);\n\n var endDate = gantt.calculateEndDate({\n start_date: startDate,\n duration: duration,\n task: ev\n });\n\n if (typeof gantt._resolve_default_mapping(config) == \"string\") {\n return startDate;\n }\n\n return {\n start_date: startDate,\n end_date: endDate,\n duration: duration\n };\n };\n\n DurationControl.prototype.focus = function (node) {\n gantt._focus(node.getElementsByTagName(\"select\")[0]);\n };\n\n function _getStartDate(node, config) {\n var s = node.getElementsByTagName(\"select\");\n var map = config._time_format_order;\n var hours = 0;\n var minutes = 0;\n\n if (gantt.defined(map[3])) {\n var input = s[map[3]];\n var time = parseInt(input.value, 10);\n\n if (isNaN(time) && input.hasAttribute(\"data-value\")) {\n time = parseInt(input.getAttribute(\"data-value\"), 10);\n }\n\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\n }\n\n function _getDuration(node, config) {\n var duration = node.getElementsByTagName(\"input\")[1];\n duration = getFormatter(config).parse(duration.value);\n if (!duration || window.isNaN(duration)) duration = 1;\n if (duration < 0) duration *= -1;\n return duration;\n }\n\n return DurationControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function RadioControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(RadioControl, _super);\n\n RadioControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"<label><input type='radio' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n }\n }\n\n html += \"</div>\";\n return html;\n };\n\n RadioControl.prototype.set_value = function (node, value, ev, sns) {\n var radio;\n if (!sns.options || !sns.options.length) return;\n radio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") || node.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\n if (!radio) return;\n\n if (!node._dhx_onchange && sns.onchange) {\n node.onchange = sns.onchange;\n node._dhx_onchange = true;\n }\n\n radio.checked = true;\n };\n\n RadioControl.prototype.get_value = function (node, ev) {\n var result = node.querySelector(\"input[type=radio]:checked\");\n return result ? result.value : \"\";\n };\n\n RadioControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"input[type=radio]\"));\n };\n\n return RadioControl;\n};","var helpers = require(\"../../../../utils/helpers\");\n\nvar __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function CheckboxControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(CheckboxControl, _super);\n\n CheckboxControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"<label><input type='checkbox' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n }\n } else {\n sns.single_value = true;\n html += \"<label><input type='checkbox' name='\" + sns.name + \"'></label>\";\n }\n\n html += \"</div>\";\n return html;\n };\n\n CheckboxControl.prototype.set_value = function (node, value, ev, sns) {\n var checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\n\n if (!node._dhx_onchange && sns.onchange) {\n node.onchange = sns.onchange;\n node._dhx_onchange = true;\n }\n\n if (sns.single_value) {\n var box = checkboxes[0];\n box.checked = !!value;\n } else {\n helpers.forEach(checkboxes, function (entry) {\n entry.checked = value ? value.indexOf(entry.value) >= 0 : false;\n });\n }\n };\n\n CheckboxControl.prototype.get_value = function (node, task, sns) {\n if (sns.single_value) {\n var box = node.querySelector(\"input[type=checkbox]\");\n return box.checked;\n } else {\n return helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function (entry) {\n return entry.value;\n });\n }\n };\n\n CheckboxControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"input[type=checkbox]\"));\n };\n\n return CheckboxControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TimeControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TimeControl, _super);\n\n TimeControl.prototype.render = function (sns) {\n var time = gantt.form_blocks.getTimePicker.call(this, sns);\n var html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;text-align:center;' class='gantt_section_time'>\";\n html += time;\n\n if (sns.single_date) {\n time = gantt.form_blocks.getTimePicker.call(this, sns, true);\n html += \"<span></span>\";\n } else {\n html += \"<span style='font-weight:normal; font-size:10pt;'> – </span>\";\n }\n\n html += time;\n html += \"</div>\";\n return html;\n };\n\n TimeControl.prototype.set_value = function (node, value, ev, config) {\n var cfg = config;\n var s = node.getElementsByTagName(\"select\");\n var map = config._time_format_order;\n\n if (cfg.auto_end_date) {\n var _update_lightbox_select = function _update_lightbox_select() {\n start_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\n end_date = gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n\n gantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n };\n\n for (var i = 0; i < 4; i++) {\n s[i].onchange = _update_lightbox_select;\n }\n }\n\n var mapping = gantt._resolve_default_mapping(config);\n\n if (typeof mapping === \"string\") mapping = {\n start_date: mapping\n };\n var start_date = ev[mapping.start_date] || new Date();\n var end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n\n gantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\n gantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n };\n\n TimeControl.prototype.get_value = function (node, ev, config) {\n var selects = node.getElementsByTagName(\"select\");\n var startDate;\n var map = config._time_format_order;\n\n function _getEndDate(selects, map, startDate) {\n var endDate = gantt.form_blocks.getTimePickerValue(selects, config, map.size); // GS-1010: We need to add a way to obtain exact end_date for validation\n\n if (endDate <= startDate) {\n // when end date seems wrong\n if (config.autofix_end !== false || config.single_date) {\n // auto correct it in two cases - when the auto correction is not disabled, or when we have 'single date' control and the user don't have the UI to specify the end date\n return gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\n }\n }\n\n return endDate;\n }\n\n startDate = gantt.form_blocks.getTimePickerValue(selects, config);\n\n if (typeof gantt._resolve_default_mapping(config) === \"string\") {\n return startDate;\n }\n\n return {\n start_date: startDate,\n end_date: _getEndDate(selects, map, startDate)\n };\n };\n\n TimeControl.prototype.focus = function (node) {\n gantt._focus(node.getElementsByTagName(\"select\")[0]);\n };\n\n return TimeControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TextareaControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextareaControl, _super);\n\n TextareaControl.prototype.render = function (sns) {\n var height = (sns.height || \"130\") + \"px\";\n return \"<div class='gantt_cal_ltext' style='height:\" + height + \";'><textarea></textarea></div>\";\n };\n\n TextareaControl.prototype.set_value = function (node, value) {\n gantt.form_blocks.textarea._get_input(node).value = value || \"\";\n };\n\n TextareaControl.prototype.get_value = function (node) {\n return gantt.form_blocks.textarea._get_input(node).value;\n };\n\n TextareaControl.prototype.focus = function (node) {\n var a = gantt.form_blocks.textarea._get_input(node);\n\n gantt._focus(a, true);\n };\n\n TextareaControl.prototype._get_input = function (node) {\n return node.querySelector(\"textarea\");\n };\n\n return TextareaControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TemplateControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TemplateControl, _super);\n\n TemplateControl.prototype.render = function (sns) {\n var height = (sns.height || \"30\") + \"px\";\n return \"<div class='gantt_cal_ltext gantt_cal_template' style='height:\" + height + \";'></div>\";\n };\n\n TemplateControl.prototype.set_value = function (node, value) {\n node.innerHTML = value || \"\";\n };\n\n TemplateControl.prototype.get_value = function (node) {\n return node.innerHTML || \"\";\n };\n\n TemplateControl.prototype.focus = function () {};\n\n return TemplateControl;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (gantt) {\n var domHelpers = require(\"../utils/dom_helpers\");\n\n var helpers = require(\"../../../utils/helpers\");\n\n var TemplateControl = require(\"./controls/template_control\")(gantt);\n\n var TextareaControl = require(\"./controls/textarea_control\")(gantt);\n\n var TimeControl = require(\"./controls/time_control\")(gantt);\n\n var SelectControl = require(\"./controls/select_control\")(gantt);\n\n var CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\n\n var RadioControl = require(\"./controls/radio_control\")(gantt);\n\n var DurationControl = require(\"./controls/duration_control\")(gantt);\n\n var ParentControl = require(\"./controls/parent_control\")(gantt);\n\n var ResourcesControl = require(\"./controls/resources_control\")(gantt);\n\n var ConstraintControl = require(\"./controls/constraint_control\")(gantt);\n\n var TypeselectControl = require(\"./controls/typeselect_control\")(gantt);\n\n gantt._lightbox_methods = {};\n gantt._lightbox_template = \"<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span></div><div class='gantt_cal_larea'></div>\"; // GS-1952. Attaching the lightbox to the BODY element is not considered secure.\n // Attach it to Gantt container for Salesforce and other secure environments\n\n gantt._lightbox_root = gantt.$root;\n\n function setParentNode() {\n var cspEnvironment = gantt.config.csp === true;\n var salesforceEnvironment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"] || '$shadowResolver$' in document.body;\n\n if (cspEnvironment || salesforceEnvironment) {\n gantt._lightbox_root = gantt.$root;\n } else {\n gantt._lightbox_root = document.body;\n }\n } //TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"lightbox\", function () {\n return {\n lightbox: gantt._lightbox_id\n };\n });\n\n gantt.showLightbox = function (id) {\n if (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n var task = this.getTask(id);\n var box = this.getLightbox(this.getTaskType(task.type));\n\n this._center_lightbox(box);\n\n this.showCover();\n\n this._fill_lightbox(id, box);\n\n this._waiAria.lightboxVisibleAttr(box);\n\n this.callEvent(\"onLightbox\", [id]);\n };\n\n function _is_chart_visible(gantt) {\n var timeline = gantt.$ui.getView(\"timeline\");\n\n if (timeline && timeline.isVisible()) {\n return true;\n } else {\n return false;\n }\n }\n\n gantt._get_timepicker_step = function () {\n if (this.config.round_dnd_dates) {\n var step;\n\n if (_is_chart_visible(this)) {\n var scale = gantt.getScale();\n step = helpers.getSecondsInUnit(scale.unit) * scale.step / 60; //timepicker step is measured in minutes\n }\n\n if (!step || step >= 60 * 24) {\n step = this.config.time_step;\n }\n\n return step;\n }\n\n return this.config.time_step;\n };\n\n gantt.getLabel = function (property, key) {\n var sections = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sections.length; i++) {\n if (sections[i].map_to == property) {\n var options = sections[i].options;\n\n for (var j = 0; j < options.length; j++) {\n if (options[j].key == key) {\n return options[j].label;\n }\n }\n }\n }\n\n return \"\";\n };\n\n gantt.updateCollection = function (list_name, collection) {\n collection = collection.slice(0);\n var list = gantt.serverList(list_name);\n if (!list) return false;\n list.splice(0, list.length);\n list.push.apply(list, collection || []);\n gantt.resetLightbox();\n };\n\n gantt.getLightboxType = function () {\n return this.getTaskType(this._lightbox_type);\n };\n\n gantt.getLightbox = function (type) {\n var lightboxDiv;\n var fullWidth;\n var html;\n var sns;\n var ds;\n var classNames = \"\";\n setParentNode();\n if (type === undefined) type = this.getLightboxType();\n\n if (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n this._lightbox_type = this.getTaskType(type);\n lightboxDiv = document.createElement(\"div\");\n classNames = \"gantt_cal_light\";\n fullWidth = this._is_lightbox_timepicker();\n if (gantt.config.wide_form || fullWidth) classNames += \" gantt_cal_light_wide\";\n\n if (fullWidth) {\n gantt.config.wide_form = true;\n classNames += \" gantt_cal_light_full\";\n }\n\n lightboxDiv.className = classNames;\n lightboxDiv.style.visibility = \"hidden\";\n html = this._lightbox_template;\n html += getHtmlButtons(this.config.buttons_left);\n html += getHtmlButtons(this.config.buttons_right, true);\n lightboxDiv.innerHTML = html;\n\n gantt._waiAria.lightboxAttr(lightboxDiv);\n\n if (gantt.config.drag_lightbox) {\n lightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\n lightboxDiv.firstChild.onselectstart = function () {\n return false;\n };\n\n lightboxDiv.firstChild.style.cursor = \"pointer\";\n\n gantt._init_dnd_events();\n } // GS-1428: If there is lightbox node, we need to remove it from the DOM\n\n\n if (this._lightbox) {\n this.resetLightbox();\n }\n\n gantt._lightbox_root.insertBefore(lightboxDiv, gantt._lightbox_root.firstChild);\n\n this._lightbox = lightboxDiv;\n sns = this._get_typed_lightbox_config(type);\n html = this._render_sections(sns);\n ds = lightboxDiv.querySelector(\"div.gantt_cal_larea\"); //GS-1131. If gantt_cal_larea is displayed, Firefox renders buttons incorrectly;\n\n var backup_overflow = ds.style.overflow;\n ds.style.overflow = 'hidden';\n ds.innerHTML = html;\n bindLabelsToInputs(sns); //sizes\n\n this.resizeLightbox();\n ds.style.overflow = backup_overflow;\n\n this._init_lightbox_events(this);\n\n lightboxDiv.style.display = \"none\";\n lightboxDiv.style.visibility = \"visible\";\n }\n\n return this._lightbox;\n };\n\n gantt._render_sections = function (sns) {\n var html = \"\";\n\n for (var i = 0; i < sns.length; i++) {\n var block = this.form_blocks[sns[i].type];\n if (!block) continue; //ignore incorrect blocks\n\n sns[i].id = \"area_\" + this.uid();\n var display = sns[i].hidden ? \" style='display:none'\" : \"\";\n var button = \"\";\n\n if (sns[i].button) {\n button = \"<div class='gantt_custom_button' data-index='\" + i + \"'><div class='gantt_custom_button_\" + sns[i].button + \"'></div><div class='gantt_custom_button_label'>\" + this.locale.labels[\"button_\" + sns[i].button] + \"</div></div>\";\n }\n\n if (this.config.wide_form) {\n html += \"<div class='gantt_wrap_section' \" + display + \">\";\n }\n\n html += \"<div id='\" + sns[i].id + \"' class='gantt_cal_lsection'><label>\" + button + this.locale.labels[\"section_\" + sns[i].name] + \"</label></div>\" + block.render.call(this, sns[i]);\n html += \"</div>\";\n }\n\n return html;\n };\n\n gantt.resizeLightbox = function () {\n if (!this._lightbox) return;\n\n var con = this._lightbox.querySelector(\".gantt_cal_larea\");\n\n con.style.height = \"0px\";\n con.style.height = con.scrollHeight + \"px\";\n this._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n con.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n };\n\n gantt._center_lightbox = function (box) {\n if (box) {\n box.style.display = \"block\";\n var scroll_top = window.pageYOffset || gantt._lightbox_root.scrollTop || document.documentElement.scrollTop;\n var scroll_left = window.pageXOffset || gantt._lightbox_root.scrollLeft || document.documentElement.scrollLeft;\n var view_height = window.innerHeight || document.documentElement.clientHeight;\n if (scroll_top) // if vertical scroll on window\n box.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";else // vertical scroll on body\n box.style.top = Math.round(Math.max((view_height - box.offsetHeight) / 2, 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n // not quite accurate but used for compatibility reasons\n\n if (document.documentElement.scrollWidth > gantt._lightbox_root.offsetWidth) // if horizontal scroll on the window\n box.style.left = Math.round(scroll_left + (gantt._lightbox_root.offsetWidth - box.offsetWidth) / 2) + \"px\";else // horizontal scroll on the body\n box.style.left = Math.round((gantt._lightbox_root.offsetWidth - box.offsetWidth) / 2) + \"px\";\n }\n };\n\n gantt.showCover = function () {\n if (this._cover) return;\n this._cover = document.createElement(\"DIV\");\n this._cover.className = \"gantt_cal_cover\";\n var rootElement = gantt._lightbox_root || gantt.$root;\n rootElement.appendChild(this._cover);\n };\n\n gantt.event(window, \"deviceorientation\", function () {\n if (gantt.getState().lightbox) {\n gantt._center_lightbox(gantt.getLightbox());\n }\n });\n\n gantt._init_lightbox_events = function () {\n gantt.lightbox_events = {};\n\n gantt.lightbox_events.gantt_save_btn = function () {\n gantt._save_lightbox();\n };\n\n gantt.lightbox_events.gantt_delete_btn = function () {\n gantt._lightbox_new_type = null;\n if (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id])) return;\n\n if (gantt.isTaskExists(gantt._lightbox_id)) {\n gantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n } else {\n gantt.hideLightbox();\n }\n };\n\n gantt.lightbox_events.gantt_cancel_btn = function () {\n gantt._cancel_lightbox();\n };\n\n gantt.lightbox_events[\"default\"] = function (e, src) {\n if (src.getAttribute(\"data-dhx-button\")) {\n gantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n } else {\n var index, block, sec;\n var className = domHelpers.getClassName(src);\n\n if (className.indexOf(\"gantt_custom_button\") != -1) {\n if (className.indexOf(\"gantt_custom_button_\") != -1) {\n index = src.parentNode.getAttribute(\"data-index\");\n sec = src;\n\n while (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n sec = sec.parentNode;\n }\n } else {\n index = src.getAttribute(\"data-index\");\n sec = src.parentNode;\n src = src.firstChild;\n }\n }\n\n var sections = gantt._get_typed_lightbox_config();\n\n if (index) {\n index = index * 1;\n block = gantt.form_blocks[sections[index * 1].type];\n block.button_click(index, src, sec, sec.nextSibling);\n }\n }\n };\n\n this.event(gantt.getLightbox(), \"click\", function (e) {\n e = e || window.event;\n var src = domHelpers.getTargetNode(e);\n var className = domHelpers.getClassName(src);\n\n if (!className) {\n src = src.previousSibling;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n src = src.firstChild;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className) {\n var func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n return func(e, src);\n }\n\n return false;\n });\n\n gantt.getLightbox().onkeydown = function (e) {\n var event = e || window.event;\n var target = e.target || e.srcElement;\n var buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n switch ((e || event).keyCode) {\n case gantt.constants.KEY_CODES.SPACE:\n {\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n }\n\n break;\n }\n\n case gantt.keys.edit_save:\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n } else {\n gantt._save_lightbox();\n }\n\n break;\n\n case gantt.keys.edit_cancel:\n gantt._cancel_lightbox();\n\n break;\n\n default:\n break;\n }\n };\n };\n\n gantt._cancel_lightbox = function () {\n var task = this.getLightboxValues();\n this.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\n if (gantt.isTaskExists(task.id) && task.$new) {\n this.silent(function () {\n gantt.$data.tasksStore.removeItem(task.id);\n\n gantt._update_flags(task.id, null);\n });\n this.refreshData();\n }\n\n this.hideLightbox();\n };\n\n gantt._save_lightbox = function () {\n var task = this.getLightboxValues();\n if (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new])) return; // GS-2170. Do not recalculate the indexes and dates of other tasks\n // as they will be recalculated in the `refreshData`\n\n gantt.$data.tasksStore._skipTaskRecalculation = \"lightbox\";\n\n if (task.$new) {\n delete task.$new;\n this.addTask(task, task.parent, this.getTaskIndex(task.id));\n } else if (this.isTaskExists(task.id)) {\n this.mixin(this.getTask(task.id), task, true);\n this.refreshTask(task.id);\n this.updateTask(task.id);\n }\n\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n this.refreshData(); // TODO: do we need any blockable events here to prevent closing lightbox?\n\n this.hideLightbox();\n };\n\n gantt._resolve_default_mapping = function (section) {\n var mapping = section.map_to;\n var time_controls = {\n \"time\": true,\n \"time_optional\": true,\n \"duration\": true,\n \"duration_optional\": true\n };\n\n if (time_controls[section.type]) {\n if (section.map_to == \"auto\") {\n mapping = {\n start_date: \"start_date\",\n end_date: \"end_date\",\n duration: \"duration\"\n };\n } else if (typeof section.map_to === \"string\") {\n mapping = {\n start_date: section.map_to\n };\n }\n } else if (section.type === \"constraint\") {\n if (!section.map_to || typeof section.map_to === \"string\") {\n mapping = {\n constraint_type: \"constraint_type\",\n constraint_date: \"constraint_date\"\n };\n }\n }\n\n return mapping;\n };\n\n gantt.getLightboxValues = function () {\n var task = {};\n\n if (gantt.isTaskExists(this._lightbox_id)) {\n task = this.mixin({}, this.getTask(this._lightbox_id));\n }\n\n var sns = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sns.length; i++) {\n var node = gantt._lightbox_root.querySelector(\"#\" + sns[i].id);\n\n node = node ? node.nextSibling : node;\n var block = this.form_blocks[sns[i].type];\n if (!block) continue;\n var res = block.get_value.call(this, node, task, sns[i]);\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n if (typeof map_to == \"string\" && map_to != \"auto\") {\n task[map_to] = res;\n } else if (_typeof(map_to) == \"object\") {\n for (var property in map_to) {\n if (map_to[property]) task[map_to[property]] = res[property];\n }\n }\n } // GS-1282 We need to preserve the task type even if the lightbox doesn't have the typeselect section\n\n\n if (gantt._lightbox_new_type == \"task\") {\n task.type = gantt.config.types.task;\n gantt._lightbox_new_type = null;\n }\n\n return task;\n };\n\n gantt.hideLightbox = function () {\n var box = this.getLightbox();\n if (box) box.style.display = \"none\";\n\n this._waiAria.lightboxHiddenAttr(box);\n\n this._lightbox_id = null;\n this.hideCover();\n this.callEvent(\"onAfterLightbox\", []);\n };\n\n gantt.hideCover = function () {\n if (this._cover) this._cover.parentNode.removeChild(this._cover);\n this._cover = null;\n };\n\n gantt.resetLightbox = function () {\n if (gantt._lightbox && !gantt._custom_lightbox) gantt._lightbox.parentNode.removeChild(gantt._lightbox);\n gantt._lightbox = null;\n gantt.hideCover();\n };\n\n gantt._set_lightbox_values = function (data, box) {\n var task = data;\n var s = box.getElementsByTagName(\"span\");\n var lightboxHeader = [];\n\n if (gantt.templates.lightbox_header) {\n lightboxHeader.push(\"\");\n lightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n s[1].innerHTML = \"\";\n s[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n } else {\n lightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n lightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\n s[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n s[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n }\n\n s[1].innerHTML = lightboxHeader[0];\n s[2].innerHTML = lightboxHeader[1];\n\n gantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n var sns = this._get_typed_lightbox_config(this.getLightboxType());\n\n for (var i = 0; i < sns.length; i++) {\n var section = sns[i];\n\n if (!this.form_blocks[section.type]) {\n continue; //skip incorrect sections, same check is done during rendering\n }\n\n var node = gantt._lightbox_root.querySelector(\"#\" + section.id).nextSibling;\n\n var block = this.form_blocks[section.type];\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n var value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n block.set_value.call(gantt, node, value, task, section);\n if (section.focus) block.focus.call(gantt, node);\n }\n\n if (gantt.isTaskExists(data.id)) {\n gantt._lightbox_id = data.id;\n }\n };\n\n gantt._fill_lightbox = function (id, box) {\n var task = this.getTask(id);\n\n this._set_lightbox_values(task, box);\n };\n\n gantt.getLightboxSection = function (name) {\n var config = this._get_typed_lightbox_config();\n\n var i = 0;\n\n for (i; i < config.length; i++) {\n if (config[i].name == name) break;\n }\n\n var section = config[i];\n if (!section) return null;\n if (!this._lightbox) this.getLightbox();\n\n var header = gantt._lightbox_root.querySelector(\"#\" + section.id);\n\n var node = header.nextSibling;\n var result = {\n section: section,\n header: header,\n node: node,\n getValue: function getValue(ev) {\n return gantt.form_blocks[section.type].get_value.call(gantt, node, ev || {}, section);\n },\n setValue: function setValue(value, ev) {\n return gantt.form_blocks[section.type].set_value.call(gantt, node, value, ev || {}, section);\n }\n };\n var handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n return handler ? handler(result) : result;\n };\n\n gantt._lightbox_methods.get_template_control = function (result) {\n result.control = result.node;\n return result;\n };\n\n gantt._lightbox_methods.get_select_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_textarea_control = function (result) {\n result.control = result.node.getElementsByTagName(\"textarea\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_time_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\"); // array\n\n return result;\n };\n\n gantt._init_dnd_events = function () {\n var eventElement = gantt._lightbox_root;\n this.event(eventElement, \"mousemove\", gantt._move_while_dnd);\n this.event(eventElement, \"mouseup\", gantt._finish_dnd); // GS-1952: In Salesforce environment, the lightbox is attached to the Gantt container. \n // So when Gantt is reinitialized, the events are no longer attached to the Gantt container.\n // gantt._init_dnd_events = function () {\n // };\n };\n\n gantt._move_while_dnd = function (event) {\n if (gantt._dnd_start_lb) {\n if (!document.gantt_unselectable) {\n gantt._lightbox_root.className += \" gantt_unselectable\";\n document.gantt_unselectable = true;\n }\n\n var lb = gantt.getLightbox();\n var now = [event.pageX, event.pageY];\n lb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n lb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n }\n };\n\n gantt._ready_to_dnd = function (event) {\n var lb = gantt.getLightbox();\n gantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n gantt._dnd_start_lb = [event.pageX, event.pageY];\n };\n\n gantt._finish_dnd = function () {\n if (gantt._lb_start) {\n gantt._lb_start = gantt._dnd_start_lb = false;\n gantt._lightbox_root.className = gantt._lightbox_root.className.replace(\" gantt_unselectable\", \"\");\n document.gantt_unselectable = false;\n }\n };\n\n gantt._focus = function (node, select) {\n if (node && node.focus) {\n if (gantt.config.touch) {//do not focus editor, to prevent auto-zoom\n } else {\n try {\n if (select && node.select) node.select();\n node.focus();\n } catch (e) {// silent errors\n }\n }\n }\n };\n\n gantt.form_blocks = {\n getTimePicker: function getTimePicker(sns, hidden) {\n var html = \"\";\n var cfg = this.config;\n var i;\n var options;\n var ariaAttrs;\n var readonly;\n var display;\n var settings = {\n first: 0,\n last: 24 * 60,\n date: this.date.date_part(new Date(gantt._min_date.valueOf())),\n timeFormat: getTimeFormat(sns)\n }; // map: default order => real one\n\n sns._time_format_order = {\n size: 0\n };\n\n if (gantt.config.limit_time_select) {\n settings.first = 60 * cfg.first_hour;\n settings.last = 60 * cfg.last_hour + 1;\n settings.date.setHours(cfg.first_hour);\n }\n\n for (i = 0; i < settings.timeFormat.length; i++) {\n // adding spaces between selects\n if (i > 0) {\n html += \" \";\n }\n\n options = getHtmlTimePickerOptions(sns, i, settings);\n\n if (options) {\n ariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n display = hidden ? \" style='display:none' \" : \"\";\n html += \"<select \" + readonly + display + ariaAttrs + \">\" + options + \"</select>\";\n }\n }\n\n return html;\n },\n getTimePickerValue: function getTimePickerValue(selects, config, offset) {\n var map = config._time_format_order;\n var needSetTime = gantt.defined(map[3]);\n var time;\n var hours = 0;\n var minutes = 0;\n var mapOffset = offset || 0;\n\n if (needSetTime) {\n time = parseInt(selects[map[3] + mapOffset].value, 10);\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n },\n _fill_lightbox_select: function _fill_lightbox_select(s, i, d, map) {\n s[i + map[0]].value = d.getDate();\n s[i + map[1]].value = d.getMonth();\n s[i + map[2]].value = d.getFullYear();\n\n if (gantt.defined(map[3])) {\n var v = d.getHours() * 60 + d.getMinutes();\n v = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n var input = s[i + map[3]];\n input.value = v; //in case option not shown\n\n input.setAttribute(\"data-value\", v);\n }\n },\n template: new TemplateControl(),\n textarea: new TextareaControl(),\n select: new SelectControl(),\n time: new TimeControl(),\n duration: new DurationControl(),\n parent: new ParentControl(),\n radio: new RadioControl(),\n checkbox: new CheckboxControl(),\n resources: new ResourcesControl(),\n constraint: new ConstraintControl(),\n typeselect: new TypeselectControl()\n };\n\n gantt._is_lightbox_timepicker = function () {\n var s = this._get_typed_lightbox_config();\n\n for (var i = 0; i < s.length; i++) {\n if (s[i].name == \"time\" && s[i].type == \"time\") return true;\n }\n\n return false;\n };\n\n gantt._simple_confirm = function (message, title, callback, ok) {\n if (!message) return callback();\n var opts = {\n text: message\n };\n if (title) opts.title = title;\n\n if (ok) {\n opts.ok = ok;\n }\n\n if (callback) {\n opts.callback = function (result) {\n if (result) callback();\n };\n }\n\n gantt.confirm(opts);\n };\n\n function _get_type_name(type_value) {\n for (var i in this.config.types) {\n if (this.config.types[i] == type_value) {\n return i;\n }\n }\n\n return \"task\";\n }\n\n gantt._get_typed_lightbox_config = function (type) {\n if (type === undefined) {\n type = this.getLightboxType();\n }\n\n var field = _get_type_name.call(this, type);\n\n if (gantt.config.lightbox[field + \"_sections\"]) {\n return gantt.config.lightbox[field + \"_sections\"];\n } else {\n return gantt.config.lightbox.sections;\n }\n };\n\n gantt._silent_redraw_lightbox = function (type) {\n var oldType = this.getLightboxType();\n\n if (this.getState().lightbox) {\n var taskId = this.getState().lightbox;\n var formData = this.getLightboxValues(),\n task = this.copy(this.getTask(taskId));\n this.resetLightbox();\n var updTask = this.mixin(task, formData, true);\n var box = this.getLightbox(type ? type : undefined);\n\n this._center_lightbox(this.getLightbox());\n\n this._set_lightbox_values(updTask, box);\n\n this.showCover();\n } else {\n this.resetLightbox();\n this.getLightbox(type ? type : undefined);\n }\n\n this.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n };\n\n function bindLabelsToInputs(sns) {\n var section;\n var label;\n var labelBlock;\n var inputBlock;\n var input;\n var i;\n\n for (i = 0; i < sns.length; i++) {\n section = sns[i];\n labelBlock = gantt._lightbox_root.querySelector(\"#\" + section.id);\n if (!section.id || !labelBlock) continue;\n label = labelBlock.querySelector(\"label\");\n inputBlock = labelBlock.nextSibling;\n if (!inputBlock) continue;\n input = inputBlock.querySelector(\"input, select, textarea\");\n\n if (input) {\n input.id = input.id || \"input_\" + gantt.uid();\n section.inputId = input.id;\n label.setAttribute(\"for\", section.inputId);\n }\n }\n }\n\n function getHtmlButtons(buttons, floatRight) {\n var button;\n var ariaAttr;\n var html = \"\";\n var i;\n\n for (i = 0; i < buttons.length; i++) {\n // needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n button = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n ariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n html += \"<div \" + ariaAttr + \" class='gantt_btn_set gantt_left_btn_set \" + button + \"_set'\" + (floatRight ? \" style='float:right;'\" : \"\") + \"><div dhx_button='1' data-dhx-button='1' class='\" + button + \"'></div><div>\" + gantt.locale.labels[button] + \"</div></div>\";\n }\n\n return html;\n }\n\n function getTimeFormat(sns) {\n var scale;\n var unit;\n var result;\n if (sns.time_format) return sns.time_format; // default order\n\n result = [\"%d\", \"%m\", \"%Y\"];\n scale = gantt.getScale();\n unit = scale ? scale.unit : gantt.config.duration_unit;\n\n if (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n result.push(\"%H:%i\");\n }\n\n return result;\n }\n\n function getHtmlTimePickerOptions(sns, index, settings) {\n var range;\n var offset;\n var start_year;\n var end_year;\n var i;\n var time;\n var diff;\n var tdate;\n var html = \"\";\n\n switch (settings.timeFormat[index]) {\n case \"%Y\":\n sns._time_format_order[2] = index;\n sns._time_format_order.size++; //year\n\n if (sns.year_range) {\n if (!isNaN(sns.year_range)) {\n range = sns.year_range;\n } else if (sns.year_range.push) {\n // if\n start_year = sns.year_range[0];\n end_year = sns.year_range[1];\n }\n }\n\n range = range || 10;\n offset = offset || Math.floor(range / 2);\n start_year = start_year || settings.date.getFullYear() - offset;\n end_year = end_year || gantt.getState().max_date.getFullYear() + offset;\n\n for (i = start_year; i < end_year; i++) {\n html += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n }\n\n break;\n\n case \"%m\":\n sns._time_format_order[1] = index;\n sns._time_format_order.size++; //month\n\n for (i = 0; i < 12; i++) {\n html += \"<option value='\" + i + \"'>\" + gantt.locale.date.month_full[i] + \"</option>\";\n }\n\n break;\n\n case \"%d\":\n sns._time_format_order[0] = index;\n sns._time_format_order.size++; //days\n\n for (i = 1; i < 32; i++) {\n html += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n }\n\n break;\n\n case \"%H:%i\":\n // var last = 24*60, first = 0;\n sns._time_format_order[3] = index;\n sns._time_format_order.size++; //hours\n\n i = settings.first;\n tdate = settings.date.getDate();\n sns._time_values = [];\n\n while (i < settings.last) {\n time = gantt.templates.time_picker(settings.date);\n html += \"<option value='\" + i + \"'>\" + time + \"</option>\";\n\n sns._time_values.push(i);\n\n settings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\n diff = settings.date.getDate() != tdate ? 1 : 0; // moved or not to the next day\n\n i = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\n }\n\n break;\n\n default:\n break;\n }\n\n return html;\n }\n};","module.exports = function (gantt) {\n gantt.config.touch_drag = 500; //nearly immediate dnd\n\n gantt.config.touch = true;\n gantt.config.touch_feedback = true;\n gantt.config.touch_feedback_duration = 1;\n gantt._prevent_touch_scroll = false;\n\n gantt._touch_feedback = function () {\n if (gantt.config.touch_feedback) {\n if (navigator.vibrate) navigator.vibrate(gantt.config.touch_feedback_duration);\n }\n };\n\n gantt.attachEvent(\"onGanttReady\", gantt.bind(function () {\n if (this.config.touch != \"force\") this.config.touch = this.config.touch && (navigator.userAgent.indexOf(\"Mobile\") != -1 || navigator.userAgent.indexOf(\"iPad\") != -1 || navigator.userAgent.indexOf(\"Android\") != -1 || navigator.userAgent.indexOf(\"Touch\") != -1) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (this.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n this._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: ev.target,\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }, function () {\n return false;\n });\n } else if (window.navigator.pointerEnabled) {\n this._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }, function (ev) {\n return !ev || ev.pointerType == \"mouse\";\n });\n } else if (window.navigator.msPointerEnabled) {\n this._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }, function (ev) {\n return !ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE;\n });\n }\n }\n }, gantt));\n\n function findTargetView(event) {\n var allViews = gantt.$layout.getCellsByType(\"viewCell\");\n\n for (var i = 0; i < allViews.length; i++) {\n var box = allViews[i].$view.getBoundingClientRect();\n\n if (event.clientX >= box.left && event.clientX <= box.right && event.clientY <= box.bottom && event.clientY >= box.top) {\n return allViews[i];\n }\n }\n }\n\n function getScrollState(view) {\n var scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n var scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n var scrollState = {\n x: null,\n y: null\n };\n\n if (scrollX) {\n var state = scrollX.getScrollState();\n\n if (state.visible) {\n scrollState.x = scrollX.$view.scrollLeft;\n }\n }\n\n if (scrollY) {\n var state = scrollY.getScrollState();\n\n if (state.visible) {\n scrollState.y = scrollY.$view.scrollTop;\n }\n }\n\n return scrollState;\n }\n\n function scrollView(view, left, top) {\n var scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n var scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n\n if (scrollX) {\n scrollX.scrollTo(left, null);\n }\n\n if (scrollY) {\n scrollY.scrollTo(null, top);\n }\n }\n\n function getTaskDND() {\n var tasksDnD;\n\n if (gantt.$ui.getView(\"timeline\")) {\n tasksDnD = gantt.$ui.getView(\"timeline\")._tasks_dnd;\n }\n\n return tasksDnD;\n }\n\n var touchHandlers = []; //we can't use native scrolling, as we need to sync momentum between different parts\n //so we will block native scroll and use the custom one\n //in future we can add custom momentum\n\n gantt._touch_events = function (names, accessor, ignore) {\n //webkit on android need to be handled separately\n var dblclicktime = 0;\n var actionMode = false;\n var scrollMode = false;\n var actionStart = null;\n var scrollState;\n var longTapTimer = null;\n var currentDndId = null;\n var dndNodes = [];\n var targetView = null;\n\n for (var i = 0; i < touchHandlers.length; i++) {\n gantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n }\n\n touchHandlers = []; //touch move\n\n touchHandlers.push([gantt.$container, names[0], function (e) {\n var tasksDnD = getTaskDND();\n if (ignore(e)) return; //ignore common and scrolling moves\n\n if (!actionMode) return;\n if (longTapTimer) clearTimeout(longTapTimer);\n var source = accessor(e);\n\n if (tasksDnD && (tasksDnD.drag.id || tasksDnD.drag.start_drag)) {\n tasksDnD.on_mouse_move(source);\n if (e.preventDefault) e.preventDefault();\n e.cancelBubble = true;\n return false;\n }\n\n if (!gantt._prevent_touch_scroll) {\n if (source && actionStart) {\n var dx = actionStart.pageX - source.pageX;\n var dy = actionStart.pageY - source.pageY;\n\n if (!scrollMode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\n scrollMode = true; //gantt._touch_scroll_active = scroll_mode = true;\n\n dblclicktime = 0;\n\n if (targetView) {\n scrollState = getScrollState(targetView);\n } else {\n scrollState = gantt.getScrollState();\n }\n }\n\n if (scrollMode) {\n var newScrollState;\n var scrollX = scrollState.x + dx;\n var scrollY = scrollState.y + dy;\n\n if (targetView) {\n scrollView(targetView, scrollX, scrollY);\n newScrollState = getScrollState(targetView);\n } else {\n gantt.scrollTo(scrollX, scrollY);\n newScrollState = gantt.getScrollState();\n }\n\n if (scrollState.x != newScrollState.x && dy > 2 * dx || scrollState.y != newScrollState.y && dx > 2 * dy) {\n return block_action(e);\n }\n }\n }\n\n return block_action(e);\n }\n\n return true;\n }]); //block touch context menu in IE10\n\n touchHandlers.push([this.$container, \"contextmenu\", function (e) {\n if (actionMode) return block_action(e);\n }]); //touch start\n\n touchHandlers.push([this.$container, names[1], function (e) {\n // block pull-to-refresh\n if (document && document.body) {\n document.body.classList.add(\"gantt_touch_active\");\n }\n\n if (ignore(e)) return;\n\n if (e.touches && e.touches.length > 1) {\n actionMode = false;\n return;\n }\n\n actionStart = accessor(e);\n targetView = findTargetView(actionStart);\n\n if (!gantt._locate_css(actionStart, \"gantt_hor_scroll\") && !gantt._locate_css(actionStart, \"gantt_ver_scroll\")) {\n actionMode = true;\n }\n\n var tasksDnD = getTaskDND(); //long tap\n\n longTapTimer = setTimeout(function () {\n var taskId = gantt.locate(actionStart);\n\n if (tasksDnD && taskId && !gantt._locate_css(actionStart, \"gantt_link_control\") && !gantt._locate_css(actionStart, \"gantt_grid_data\")) {\n tasksDnD.on_mouse_down(actionStart);\n\n if (tasksDnD.drag && tasksDnD.drag.start_drag) {\n cloneTaskRendered(taskId);\n\n tasksDnD._start_dnd(actionStart);\n\n gantt._touch_drag = true;\n gantt.refreshTask(taskId);\n\n gantt._touch_feedback();\n }\n }\n\n longTapTimer = null;\n }, gantt.config.touch_drag);\n }]); //touch end\n\n touchHandlers.push([this.$container, names[2], function (e) {\n if (document && document.body) {\n document.body.classList.remove(\"gantt_touch_active\");\n }\n\n if (ignore(e)) return;\n if (longTapTimer) clearTimeout(longTapTimer);\n gantt._touch_drag = false;\n actionMode = false;\n var source = accessor(e);\n var tasksDnD = getTaskDND();\n if (tasksDnD) tasksDnD.on_mouse_up(source);\n\n if (currentDndId && gantt.isTaskExists(currentDndId)) {\n gantt.refreshTask(currentDndId);\n\n if (dndNodes.length) {\n dndNodes.forEach(function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n\n gantt._touch_feedback();\n }\n } //gantt._touch_scroll_active = action_mode = scroll_mode = false;\n\n\n actionMode = scrollMode = false;\n dndNodes = [];\n currentDndId = null; //dbl-tap handling\n\n if (actionStart && dblclicktime) {\n var now = new Date();\n\n if (now - dblclicktime < 500) {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.onDoubleClick(actionStart);\n block_action(e);\n } else dblclicktime = now;\n } else {\n dblclicktime = new Date();\n }\n }]);\n\n for (var i = 0; i < touchHandlers.length; i++) {\n gantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n } //common helper, prevents event\n\n\n function block_action(e) {\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n\n e.cancelBubble = true;\n return false;\n }\n\n function cloneTaskRendered(taskId) {\n var renders = gantt._getTaskLayers();\n\n var task = gantt.getTask(taskId);\n\n if (task && gantt.isTaskVisible(taskId)) {\n currentDndId = taskId;\n\n for (var i = 0; i < renders.length; i++) {\n task = renders[i].rendered[taskId];\n\n if (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\n var copy = task.cloneNode(true);\n dndNodes.push(task);\n renders[i].rendered[taskId] = copy;\n task.style.display = \"none\";\n copy.className += \" gantt_drag_move \";\n task.parentNode.appendChild(copy); //return copy;\n }\n }\n }\n }\n };\n};","import * as env from \"../../../utils/env\";\r\nimport * as eventable from \"../../../utils/eventable\";\r\nimport { IScale, TModifierKeys } from \"../../common/config\";\r\n\r\ninterface ITimelineZoomConfig {\r\n\thandler?: (e: Event) => {};\r\n\tstartDate?: Date;\r\n\tendDate?: Date;\r\n\tlevels: IZoomLevel[];\r\n\tactiveLevelIndex?: number;\r\n\twidthStep?: number;\r\n\tminColumnWidth?: number;\r\n\tmaxColumnWidth?: number;\r\n\tuseKey?: \"ctrlKey\" | \"altKey\" | \"shiftKey\";\r\n\ttrigger?: \"wheel\" | null | undefined;\r\n\telement?: Element | (() => Element);\r\n}\r\n\r\nconst USE_KEY = [\"ctrlKey\", \"altKey\", \"shiftKey\", \"metaKey\"];\r\n\r\ninterface IZoomLevel {\r\n\tname?: string;\r\n\tscale_height?: number;\r\n\tmin_column_width: number;\r\n\tscales: IScale[];\r\n}\r\n\r\nconst _defaultScales = [\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"month\",\r\n\t\t\tdate: \"%M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d\",\r\n\t\t\tstep: 1\r\n\t\t}\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t}\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"hour\",\r\n\t\t\tdate: \"%H:00\",\r\n\t\t\tstep: 8\r\n\t\t},\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"hour\",\r\n\t\t\tdate: \"%H:00\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t],\r\n];\r\n\r\nexport default class TimelineZoom {\r\n\tpublic attachEvent: (eventName: string, handler: () => void) => string;\r\n\tpublic callEvent: (eventName: string, args: any[]) => any;\r\n\tpublic detachEvent: (eventName: string) => any;\r\n\tprotected _initialStartDate: Date;\r\n\tprotected _initialEndDate: Date;\r\n\tprotected _activeLevelIndex: number;\r\n\tprotected _levels: IZoomLevel[];\r\n\tprotected _handler: (e: any) => void;\r\n\tprotected $gantt;\r\n\tprotected _widthStep: number;\r\n\tprotected _minColumnWidth: number;\r\n\tprotected _maxColumnWidth: number;\r\n\tprotected _useKey: TModifierKeys;\r\n\tprotected _visibleDate: Date;\r\n\tprotected _initialized: boolean;\r\n\tprotected _domEvents: any;\r\n\r\n\tconstructor(gantt) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis._domEvents = this.$gantt._createDomEventScope();\r\n\t}\r\n\r\n\tpublic init(config: ITimelineZoomConfig) {\r\n\t\t// GS-1354 and GS-1318. If we check the headless mode using the function,\r\n\t\t// it will return false when Gantt is not initialized, but we may want to do it later\r\n\t\tif(this.$gantt.env.isNode){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._initialStartDate = config.startDate;\r\n\t\tthis._initialEndDate = config.endDate;\r\n\t\tthis._activeLevelIndex = config.activeLevelIndex ? config.activeLevelIndex : 0;\r\n\t\tthis._levels = this._mapScales(config.levels || _defaultScales);\r\n\t\tthis._handler = config.handler || this._defaultHandler;\r\n\t\tthis._minColumnWidth = config.minColumnWidth || 60;\r\n\t\tthis._maxColumnWidth = config.maxColumnWidth || 240;\r\n\t\tthis._widthStep = config.widthStep || 3/8 * config.minColumnWidth;\r\n\t\tthis._useKey = config.useKey;\r\n\r\n\t\tif(!this._initialized){\r\n\t\t\teventable(this);\r\n\t\t\tthis.$gantt.attachEvent(\"onGanttScroll\", () => {\r\n\t\t\t\tthis._getVisibleDate();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\r\n\t\tif(config.trigger === \"wheel\"){\r\n\t\t\tif(this.$gantt.$root){\r\n\t\t\t\tthis._attachWheelEvent(config);\r\n\t\t\t}else{\r\n\t\t\t\tthis.$gantt.attachEvent(\"onGanttReady\", () => {\r\n\t\t\t\t\tthis._attachWheelEvent(config);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initialized = true;\r\n\t\tthis.setLevel(this._activeLevelIndex);\r\n\t}\r\n\r\n\tpublic zoomIn = () => {\r\n\t\tconst index = this.getCurrentLevel() - 1;\r\n\t\tif(index < 0){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setLevel(index);\r\n\t}\r\n\r\n\tpublic zoomOut = () => {\r\n\t\tconst index = this.getCurrentLevel() + 1;\r\n\t\tif(index > this._levels.length - 1){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setLevel(index);\r\n\t}\r\n\r\n\tpublic getCurrentLevel = () => {\r\n\t\treturn this._activeLevelIndex;\r\n\t}\r\n\r\n\tpublic getLevels = () => {\r\n\t\treturn this._levels;\r\n\t}\r\n\r\n\tpublic setLevel = (level: number|string) => {\r\n\t\tconst zoomLevel = this._getZoomIndexByName(level);\r\n\r\n\t\tif(zoomLevel === -1){\r\n\t\t\tthis.$gantt.assert(zoomLevel !== -1, \"Invalid zoom level for gantt.ext.zoom.setLevel. \" + level + \" is not an expected value.\");\r\n\t\t}\r\n\t\tthis._setLevel(zoomLevel, 0);\r\n\t}\r\n\r\n\tprotected _getZoomIndexByName = (levelName: number|string) => {\r\n\t\tlet zoomLevel:number = -1;\r\n\t\tif(typeof levelName === \"string\"){\r\n\t\t\tif(!isNaN(Number(levelName)) && this._levels[Number(levelName)]){\r\n\t\t\t\tzoomLevel = Number(levelName);\r\n\t\t\t}else{\r\n\t\t\t\tfor(let i = 0; i < this._levels.length; i++){\r\n\t\t\t\t\tif(this._levels[i].name === levelName){\r\n\t\t\t\t\t\tzoomLevel = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tzoomLevel = levelName;\r\n\t\t}\r\n\t\treturn zoomLevel;\r\n\t}\r\n\r\n\tprotected _mapScales(levels: IScale[][] | any): IZoomLevel[]{\r\n\t\treturn levels.map((l) => {\r\n\t\t\tif(Array.isArray(l)){\r\n\t\t\t\treturn {\r\n\t\t\t\t\tscales: l\r\n\t\t\t\t};\r\n\t\t\t}else{\r\n\t\t\t\treturn l;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected _getVisibleDate = () => {\r\n\t\t// GS-1450. Don't try to get the visible date if there is no timeline\r\n\t\tif (!this.$gantt.$task){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst scrollPos = this.$gantt.getScrollState().x;\r\n\t\tconst viewPort = this.$gantt.$task.offsetWidth;\r\n\t\tthis._visibleDate = this.$gantt.dateFromPos(scrollPos + viewPort/2);\r\n\t}\r\n\r\n\tprotected _setLevel = (level: number, cursorOffset: number) => {\r\n\t\tthis._activeLevelIndex = level;\r\n\r\n\t\tconst gantt = this.$gantt;\r\n\t\tconst nextConfig = gantt.copy(this._levels[this._activeLevelIndex]);\r\n\t\tconst chartConfig = gantt.copy(nextConfig);\r\n\t\tdelete chartConfig.name;\r\n\r\n\t\tgantt.mixin(gantt.config, chartConfig, true);\r\n\r\n\t\tconst isRendered = !!gantt.$root && !!gantt.$task;\r\n\r\n\t\tif(isRendered){\r\n\t\t\tif(cursorOffset){\r\n\t\t\t\tconst cursorDate = this.$gantt.dateFromPos(cursorOffset + this.$gantt.getScrollState().x);\r\n\t\t\t\tthis.$gantt.render();\r\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(cursorDate);\r\n\t\t\t\tthis.$gantt.scrollTo(newPosition - cursorOffset);\r\n\t\t\t}else{\r\n\t\t\t\tconst viewPort = this.$gantt.$task.offsetWidth;\r\n\t\t\t\tif(!this._visibleDate){\r\n\t\t\t\t\tthis._getVisibleDate();\r\n\t\t\t\t}\r\n\t\t\t\tconst middleDate = this._visibleDate;\r\n\t\t\t\tthis.$gantt.render();\r\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(middleDate);\r\n\t\t\t\tthis.$gantt.scrollTo(newPosition - viewPort/2);\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onAfterZoom\", [this._activeLevelIndex, nextConfig]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _attachWheelEvent = (config) => {\r\n\t\tconst event = env.isFF ? \"wheel\" : \"mousewheel\";\r\n\t\tlet el: Element;\r\n\t\tif(typeof config.element === \"function\"){\r\n\t\t\tel = config.element();\r\n\t\t}else{\r\n\t\t\tel = config.element as Element;\r\n\t\t}\r\n\t\tif (!el){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(el, event, this.$gantt.bind(function(e) {\r\n\t\t\tif (this._useKey) {\r\n\t\t\t\tif (USE_KEY.indexOf(this._useKey) < 0) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!e[this._useKey]) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (typeof this._handler === \"function\") {\r\n\t\t\t\tthis._handler.apply(this, [e]);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}, this), {passive: false});\r\n\t}\r\n\r\n\tprivate _defaultHandler = (e: any):void => {\r\n\t\tconst timelineOffset = this.$gantt.$task.getBoundingClientRect().x;\r\n\t\tconst cursorOffset = e.clientX - timelineOffset;\r\n\t\tconst wheelY = this.$gantt.env.isFF ? (e.deltaY*-40) : e.wheelDelta;\r\n\t\tlet wheelUp = false;\r\n\t\tif (wheelY > 0) {\r\n\t\t\twheelUp = true;\r\n\t\t}\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tthis._setScaleSettings(wheelUp, cursorOffset);\r\n\t}\r\n\r\n\tprivate _setScaleSettings(wheelUp: boolean, cursorOffset: number) {\r\n\t\tif (wheelUp) {\r\n\t\t\tthis._stepUp(cursorOffset);\r\n\t\t} else {\r\n\t\t\tthis._stepDown(cursorOffset);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setScaleDates = () => {\r\n\t\tif(this._initialStartDate && this._initialEndDate){\r\n\t\t\tthis.$gantt.config.start_date = this._initialStartDate;\r\n\t\t\tthis.$gantt.config.end_date = this._initialEndDate;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _stepUp(cursorOffset) {\r\n\t\tif (this._activeLevelIndex >= this._levels.length - 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextLevel = this._activeLevelIndex;\r\n\t\tthis._setScaleDates();\r\n\r\n\t\tif(this._widthStep){\r\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width + this._widthStep;\r\n\t\t\tif (newColumnWidth > this._maxColumnWidth) {\r\n\t\t\t\tnewColumnWidth = this._minColumnWidth;\r\n\t\t\t\tnextLevel++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\r\n\t\t}else{\r\n\t\t\tnextLevel++;\r\n\t\t}\r\n\t\tthis._setLevel(nextLevel, cursorOffset);\r\n\t}\r\n\tprivate _stepDown(cursorOffset) {\r\n\t\tif (this._activeLevelIndex < 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextLevel = this._activeLevelIndex;\r\n\t\tthis._setScaleDates();\r\n\r\n\t\tif(this._widthStep){\r\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width - this._widthStep;\r\n\t\t\tif (newColumnWidth < this._minColumnWidth) {\r\n\t\t\t\tnewColumnWidth = this._maxColumnWidth;\r\n\t\t\t\tnextLevel--;\r\n\t\t\t}\r\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\r\n\t\t}else{\r\n\t\t\tnextLevel--;\r\n\t\t}\r\n\t\tthis._setLevel(nextLevel, cursorOffset);\r\n\t}\r\n}","if (window.dhtmlx) {\n if (!window.dhtmlx.attaches) window.dhtmlx.attaches = {};\n\n window.dhtmlx.attaches.attachGantt = function (start, end, gantt) {\n var obj = document.createElement(\"DIV\");\n gantt = gantt || window.gantt;\n obj.id = \"gantt_\" + gantt.uid();\n obj.style.width = \"100%\";\n obj.style.height = \"100%\";\n obj.cmp = \"grid\";\n document.body.appendChild(obj);\n this.attachObject(obj.id);\n this.dataType = \"gantt\";\n this.dataObj = gantt;\n var that = this.vs[this.av];\n that.grid = gantt;\n gantt.init(obj.id, start, end);\n obj.firstChild.style.border = \"none\";\n that.gridId = obj.id;\n that.gridObj = obj;\n var method_name = \"_viewRestore\";\n return this.vs[this[method_name]()].grid;\n };\n}\n\nif (typeof window.dhtmlXCellObject != \"undefined\") {\n window.dhtmlXCellObject.prototype.attachGantt = function (start, end, gantt) {\n gantt = gantt || window.gantt;\n var obj = document.createElement(\"DIV\");\n obj.id = \"gantt_\" + gantt.uid();\n obj.style.width = \"100%\";\n obj.style.height = \"100%\";\n obj.cmp = \"grid\";\n document.body.appendChild(obj);\n this.attachObject(obj.id);\n this.dataType = \"gantt\";\n this.dataObj = gantt;\n gantt.init(obj.id, start, end);\n obj.firstChild.style.border = \"none\";\n obj = null;\n this.callEvent(\"_onContentAttach\", []);\n return this.dataObj;\n };\n}\n\nmodule.exports = null;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nif (window.jQuery) {\n (function ($) {\n var methods = [];\n\n $.fn.dhx_gantt = function (config) {\n config = config || {};\n\n if (typeof config === 'string') {\n if (methods[config]) {\n return methods[config].apply(this, []);\n } else {\n $.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\n }\n } else {\n var views = [];\n this.each(function () {\n if (this && this.getAttribute) {\n if (!this.gantt && !(window.gantt.$root == this)) {\n var newgantt = window.gantt.$container && window.Gantt ? window.Gantt.getGanttInstance() : window.gantt;\n\n for (var key in config) {\n if (key != \"data\") newgantt.config[key] = config[key];\n }\n\n newgantt.init(this);\n if (config.data) newgantt.parse(config.data);\n views.push(newgantt);\n } else views.push(_typeof(this.gantt) == \"object\" ? this.gantt : window.gantt);\n }\n });\n if (views.length === 1) return views[0];\n return views;\n }\n };\n })(window.jQuery);\n}\n\nmodule.exports = null;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isHeadless = require(\"../../../utils/is_headless\");\n\nmodule.exports = function (gantt) {\n var scrollRange = 50,\n scrollStep = 30,\n scrollDelay = 10,\n scrollSpeed = 50;\n var interval = null,\n isMove = false,\n delayTimeout = null,\n startPos = {\n started: false\n },\n eventPos = {};\n\n function isDisplayed(element) {\n return element && domHelpers.isChildOf(element, gantt.$root) && element.offsetHeight;\n }\n\n function getAutoscrollContainer() {\n var element;\n\n if (isDisplayed(gantt.$task)) {\n element = gantt.$task;\n } else if (isDisplayed(gantt.$grid)) {\n element = gantt.$grid;\n } else {\n element = gantt.$root;\n }\n\n return element;\n }\n\n function isScrollState() {\n var dragMarker = !!document.querySelector(\".gantt_drag_marker\");\n var isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\") || !!document.querySelector(\".gantt_drag_marker.gantt_row_grid_resize_area\");\n var isLink = !!document.querySelector(\".gantt_link_direction\");\n var state = gantt.getState();\n var isClickDrag = state.autoscroll;\n isMove = dragMarker && !isResize && !isLink;\n return !(!state.drag_mode && !dragMarker || isResize) || isClickDrag;\n }\n\n function defineDelayTimeout(state) {\n if (delayTimeout) {\n clearTimeout(delayTimeout);\n delayTimeout = null;\n }\n\n if (state) {\n var speed = gantt.config.autoscroll_speed;\n if (speed && speed < 10) // limit speed value to 10\n speed = 10;\n delayTimeout = setTimeout(function () {\n interval = setInterval(tick, speed || scrollSpeed);\n }, gantt.config.autoscroll_delay || scrollDelay);\n }\n }\n\n function defineScrollInterval(state) {\n if (state) {\n defineDelayTimeout(true);\n\n if (!startPos.started) {\n startPos.x = eventPos.x;\n startPos.y = eventPos.y;\n startPos.started = true;\n }\n } else {\n if (interval) {\n clearInterval(interval);\n interval = null;\n }\n\n defineDelayTimeout(false);\n startPos.started = false;\n }\n }\n\n function autoscrollInterval(event) {\n var isScroll = isScrollState();\n\n if ((interval || delayTimeout) && !isScroll) {\n defineScrollInterval(false);\n }\n\n if (!gantt.config.autoscroll || !isScroll) {\n return false;\n }\n\n eventPos = {\n x: event.clientX,\n y: event.clientY\n }; // if it is a mobile device, we need to detect the touch event coords\n\n if (event.type == \"touchmove\") {\n eventPos.x = event.targetTouches[0].clientX;\n eventPos.y = event.targetTouches[0].clientY;\n }\n\n if (!interval && isScroll) {\n defineScrollInterval(true);\n }\n }\n\n function tick() {\n if (!isScrollState()) {\n defineScrollInterval(false);\n return false;\n }\n\n var container = getAutoscrollContainer();\n\n if (!container) {\n return;\n } // GS-1150: if we reorder or resize something in the grid, we should obtain the grid container\n\n\n var gridDrag = false;\n var gridMarkers = [\".gantt_drag_marker.gantt_grid_resize_area\", \".gantt_drag_marker .gantt_row.gantt_row_task\", \".gantt_drag_marker.gantt_grid_dnd_marker\"];\n gridMarkers.forEach(function (selector) {\n gridDrag = gridDrag || !!document.querySelector(selector);\n });\n\n if (gridDrag) {\n container = gantt.$grid;\n }\n\n var box = domHelpers.getNodePosition(container);\n var posX = eventPos.x - box.x;\n var posY = eventPos.y - box.y + window.scrollY; // GS-1315: window.scrollY here and below for the elements above Gantt\n\n var scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n var scrollTop = need_scroll(posY, box.height, startPos.y - box.y + window.scrollY);\n var scrollState = gantt.getScrollState();\n var currentScrollTop = scrollState.y,\n scrollOuterHeight = scrollState.inner_height,\n scrollInnerHeight = scrollState.height,\n currentScrollLeft = scrollState.x,\n scrollOuterWidth = scrollState.inner_width,\n scrollInnerWidth = scrollState.width; // do scrolling only if we have scrollable area to do so\n\n if (scrollTop && !scrollOuterHeight) {\n scrollTop = 0;\n } else if (scrollTop < 0 && !currentScrollTop) {\n scrollTop = 0;\n } else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n scrollTop = 0;\n }\n\n if (scrollLeft && !scrollOuterWidth) {\n scrollLeft = 0;\n } else if (scrollLeft < 0 && !currentScrollLeft) {\n scrollLeft = 0;\n } else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n scrollLeft = 0;\n }\n\n var step = gantt.config.autoscroll_step;\n if (step && step < 2) // limit step value to 2\n step = 2;\n scrollLeft = scrollLeft * (step || scrollStep);\n scrollTop = scrollTop * (step || scrollStep);\n\n if (scrollLeft || scrollTop) {\n scroll(scrollLeft, scrollTop);\n }\n }\n\n function need_scroll(pos, boxSize, startCoord) {\n if (pos - scrollRange < 0 && pos < startCoord) return -1;else if (pos > boxSize - scrollRange && pos > startCoord) return 1;\n return 0;\n }\n\n function scroll(left, top) {\n var scrollState = gantt.getScrollState();\n var scrollLeft = null,\n scrollTop = null;\n\n if (left) {\n scrollLeft = scrollState.x + left;\n scrollLeft = Math.min(scrollState.width, scrollLeft);\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (top) {\n scrollTop = scrollState.y + top;\n scrollTop = Math.min(scrollState.height, scrollTop);\n scrollTop = Math.max(0, scrollTop);\n }\n\n gantt.scrollTo(scrollLeft, scrollTop);\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\n gantt.eventRemove(eventElement, \"mousemove\", autoscrollInterval);\n gantt.event(eventElement, \"mousemove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"touchmove\", autoscrollInterval);\n gantt.event(eventElement, \"touchmove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"pointermove\", autoscrollInterval);\n gantt.event(eventElement, \"pointermove\", autoscrollInterval);\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n defineScrollInterval(false);\n });\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./autoscroll\"), require(\"./jquery_hooks\"), require(\"./dhtmlx_hooks\")];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n\n var TimelineZoom = require(\"./timeline_zoom\")[\"default\"];\n\n gantt.ext.zoom = new TimelineZoom(gantt);\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_white\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_black\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.material = {\n config: {\n grid_width: 411,\n row_height: 34,\n task_height_offset: 6,\n scale_height: 36,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 80\n },\n _second_column_width: 110,\n _third_column_width: 75,\n _redefine_lightbox_buttons: {\n \"buttons_left\": [\"dhx_delete_btn\"],\n \"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n }\n };\n gantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n var t = gantt.getTaskNode(id);\n\n if (t) {\n t.className += \" gantt_drag_animation\";\n setTimeout(function () {\n var indx = t.className.indexOf(\" gantt_drag_animation\");\n\n if (indx > -1) {\n t.className = t.className.slice(0, indx);\n }\n }, 200);\n }\n });\n};","module.exports = function (gantt) {\n gantt.skins.broadway = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 1,\n link_arrow_size: 7,\n lightbox_additional_height: 86\n },\n _second_column_width: 90,\n _third_column_width: 80,\n _lightbox_template: \"<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span><div class='gantt_cancel_btn'></div></div><div class='gantt_cal_larea'></div>\",\n _config_buttons_left: {},\n _config_buttons_right: {\n \"gantt_delete_btn\": \"icon_delete\",\n \"gantt_save_btn\": \"icon_save\"\n }\n };\n};","module.exports = function (gantt) {\n gantt.skins.terrace = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 90,\n _third_column_width: 70\n };\n};","module.exports = function (gantt) {\n gantt.skins.meadow = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 30,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 72\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.skyblue = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 27,\n link_line_width: 1,\n link_arrow_size: 8,\n lightbox_additional_height: 75\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","function _configure(col, data, force) {\n for (var key in data) {\n if (typeof col[key] == \"undefined\" || force) col[key] = data[key];\n }\n}\n\nfunction _get_skin(force, gantt) {\n var skin = gantt.skin;\n\n if (!skin || force) {\n var links = document.getElementsByTagName(\"link\");\n\n for (var i = 0; i < links.length; i++) {\n var res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\n\n if (res) {\n if (gantt.skins[res[1]] || !skin) {\n skin = res[1];\n break;\n }\n }\n }\n }\n\n gantt.skin = skin || \"terrace\";\n var skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"]; //apply skin related settings\n\n _configure(gantt.config, skinset.config, force);\n\n var config = gantt.getGridColumns();\n if (config[1] && !gantt.defined(config[1].width)) config[1].width = skinset._second_column_width;\n if (config[2] && !gantt.defined(config[2].width)) config[2].width = skinset._third_column_width;\n\n for (var i = 0; i < config.length; i++) {\n var column = config[i];\n\n if (column.name == \"add\") {\n if (!column.width) {\n column.width = 44;\n }\n\n if (!(gantt.defined(column.min_width) && gantt.defined(column.max_width))) {\n column.min_width = column.min_width || column.width;\n column.max_width = column.max_width || column.width;\n }\n\n if (column.min_width) column.min_width = +column.min_width;\n if (column.max_width) column.max_width = +column.max_width;\n\n if (column.width) {\n column.width = +column.width;\n column.width = column.min_width && column.min_width > column.width ? column.min_width : column.width;\n column.width = column.max_width && column.max_width < column.width ? column.max_width : column.width;\n }\n }\n }\n\n if (skinset.config.task_height) {\n gantt.config.task_height = skinset.config.task_height || \"full\";\n }\n\n if (skinset.config.bar_height) {\n gantt.config.bar_height = skinset.config.bar_height || \"full\";\n }\n\n if (skinset._lightbox_template) gantt._lightbox_template = skinset._lightbox_template;\n\n if (skinset._redefine_lightbox_buttons) {\n gantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n gantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n }\n\n gantt.resetLightbox();\n}\n\nmodule.exports = function (gantt) {\n if (!gantt.resetSkin) {\n gantt.resetSkin = function () {\n this.skin = \"\";\n\n _get_skin(true, this);\n };\n\n gantt.skins = {};\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n _get_skin(false, this);\n });\n }\n};","function createLayoutFacade() {\n function getTimeline(gantt) {\n return gantt.$ui.getView(\"timeline\");\n }\n\n function getGrid(gantt) {\n return gantt.$ui.getView(\"grid\");\n }\n\n function getBaseCell(gantt) {\n var timeline = getTimeline(gantt);\n\n if (timeline && !timeline.$config.hidden) {\n return timeline;\n } else {\n var grid = getGrid(gantt);\n\n if (grid && !grid.$config.hidden) {\n return grid;\n } else {\n return null;\n }\n }\n }\n\n function getVerticalScrollbar(gantt) {\n var baseCell = null; // GS-1150: if we reorder or resize something in the grid, we should obtain the grid container\n\n var gridDrag = false;\n var gridMarkers = [\".gantt_drag_marker.gantt_grid_resize_area\", \".gantt_drag_marker .gantt_row.gantt_row_task\", \".gantt_drag_marker.gantt_grid_dnd_marker\"];\n gridMarkers.forEach(function (selector) {\n gridDrag = gridDrag || !!document.querySelector(selector);\n });\n\n if (gridDrag) {\n baseCell = getGrid(gantt);\n } else {\n baseCell = getBaseCell(gantt);\n } // GS-1827. If there is no grid and timeline, there is no scrollbar for them\n\n\n if (!baseCell) {\n return null;\n }\n\n var verticalScrollbar = getAttachedScrollbar(gantt, baseCell, \"scrollY\");\n return verticalScrollbar;\n }\n\n function getHorizontalScrollbar(gantt) {\n var baseCell = getBaseCell(gantt);\n\n if (!baseCell || baseCell.id == \"grid\") {\n return null; // if the timeline is not displayed, do not return the scrollbar\n }\n\n var horizontalScrollbar = getAttachedScrollbar(gantt, baseCell, \"scrollX\");\n return horizontalScrollbar;\n }\n\n function getAttachedScrollbar(gantt, cell, type) {\n var attachedScrollbar = cell.$config[type];\n var scrollbarView = gantt.$ui.getView(attachedScrollbar);\n return scrollbarView;\n }\n\n var DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n function tryCall(getView, method, args, fallback) {\n var view = getView(this);\n\n if (!(view && view.isVisible())) {\n if (fallback) {\n return fallback();\n } else {\n return DEFAULT_VALUE;\n }\n } else {\n return view[method].apply(view, args);\n }\n }\n\n return {\n getColumnIndex: function getColumnIndex(name) {\n var res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n dateFromPos: function dateFromPos(x) {\n var res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\n if (res === DEFAULT_VALUE) {\n return this.getState().min_date;\n } else {\n return res;\n }\n },\n posFromDate: function posFromDate(date) {\n var res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getRowTop: function getRowTop(index) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getRowTop\", [index], function () {\n return tryCall.call(self, getGrid, \"getRowTop\", [index]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskTop: function getTaskTop(id) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemTop\", [id], function () {\n return tryCall.call(self, getGrid, \"getItemTop\", [id]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskPosition: function getTaskPosition(task, start_date, end_date) {\n var res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n if (res === DEFAULT_VALUE) {\n var top = this.getTaskTop(task.id);\n var height = this.getTaskBarHeight(task.id);\n return {\n left: 0,\n top: top,\n height: height,\n width: 0\n };\n } else {\n return res;\n }\n },\n getTaskBarHeight: function getTaskBarHeight(taskId, isMilestoneRender) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getBarHeight\", [taskId, isMilestoneRender], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskHeight: function getTaskHeight(taskId) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemHeight\", [taskId], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n roundTaskDates: function roundTaskDates() {\n tryCall.call(this, getTimeline, \"roundTaskDates\", []);\n },\n getScale: function getScale() {\n var res = tryCall.call(this, getTimeline, \"getScale\", []);\n\n if (res === DEFAULT_VALUE) {\n return null;\n } else {\n return res;\n }\n },\n getTaskNode: function getTaskNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline || !timeline.isVisible()) {\n return null;\n } else {\n var node = timeline._taskRenderer.rendered[id];\n\n if (!node) {\n var domAttr = timeline.$config.item_attribute;\n node = timeline.$task_bars.querySelector(\"[\" + domAttr + \"='\" + id + \"']\");\n }\n\n return node || null;\n }\n },\n getLinkNode: function getLinkNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline.isVisible()) {\n return null;\n } else {\n return timeline._linkRenderer.rendered[id];\n }\n },\n scrollTo: function scrollTo(left, top) {\n var vertical = getVerticalScrollbar(this);\n var horizontal = getHorizontalScrollbar(this);\n var oldH = {\n position: 0\n },\n oldV = {\n position: 0\n };\n\n if (vertical) {\n oldV = vertical.getScrollState();\n }\n\n if (horizontal) {\n oldH = horizontal.getScrollState();\n }\n\n var scrollHorizontal = horizontal && left * 1 == left;\n var scrollVertical = vertical && top * 1 == top;\n var scrollBoth = scrollHorizontal && scrollVertical;\n\n if (scrollBoth) {\n // some views will be scrolled both horizontally and vertically and smart rendering can be called twice\n // set flag in order not to invoke smart rendering at the horizontal scroll stage\n // so it will repaint only once when the scroll is completed\n var verticalViews = vertical._getLinkedViews();\n\n var horizontalViews = horizontal._getLinkedViews();\n\n var commonViews = [];\n\n for (var i = 0; i < verticalViews.length; i++) {\n for (var j = 0; j < horizontalViews.length; j++) {\n if (verticalViews[i].$config.id && horizontalViews[j].$config.id && verticalViews[i].$config.id === horizontalViews[j].$config.id) {\n commonViews.push(verticalViews[i].$config.id);\n }\n }\n }\n }\n\n if (scrollHorizontal) {\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = true;\n }.bind(this));\n }\n\n horizontal.scroll(left);\n\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = false;\n }.bind(this));\n }\n }\n\n if (scrollVertical) {\n vertical.scroll(top);\n }\n\n var newV = {\n position: 0\n },\n newH = {\n position: 0\n };\n\n if (vertical) {\n newV = vertical.getScrollState();\n }\n\n if (horizontal) {\n newH = horizontal.getScrollState();\n }\n\n this.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n },\n showDate: function showDate(date) {\n var date_x = this.posFromDate(date);\n var scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n this.scrollTo(scroll_to);\n },\n showTask: function showTask(id) {\n var pos = this.getTaskPosition(this.getTask(id)); // GS-1261: we need to show the start_date even in the RTL mode\n\n var leftPos = pos.left;\n if (this.config.rtl) leftPos = pos.left + pos.width;\n var left = Math.max(leftPos - this.config.task_scroll_offset, 0);\n\n var dataHeight = this._scroll_state().y;\n\n var top;\n\n if (!dataHeight) {\n top = pos.top;\n } else {\n top = pos.top - (dataHeight - this.getTaskBarHeight(id)) / 2;\n }\n\n this.scrollTo(left, top); // GS-1150: if the grid and timeline have different scrollbars, we need to scroll thegrid to show the task\n\n var gridCell = getGrid(this);\n var timelineCell = getTimeline(this);\n\n if (gridCell && timelineCell && gridCell.$config.scrollY != timelineCell.$config.scrollY) {\n var gridScrollbar = getAttachedScrollbar(this, gridCell, \"scrollY\");\n gridScrollbar.scrollTo(null, top);\n }\n },\n _scroll_state: function _scroll_state() {\n var result = {\n x: false,\n y: false,\n x_pos: 0,\n y_pos: 0,\n scroll_size: this.config.scroll_size + 1,\n //1px for inner content\n x_inner: 0,\n y_inner: 0\n };\n var scrollVer = getVerticalScrollbar(this),\n scrollHor = getHorizontalScrollbar(this);\n\n if (scrollHor) {\n var horState = scrollHor.getScrollState();\n\n if (horState.visible) {\n result.x = horState.size;\n result.x_inner = horState.scrollSize;\n }\n\n result.x_pos = horState.position || 0;\n }\n\n if (scrollVer) {\n var verState = scrollVer.getScrollState();\n\n if (verState.visible) {\n result.y = verState.size;\n result.y_inner = verState.scrollSize;\n }\n\n result.y_pos = verState.position || 0;\n }\n\n return result;\n },\n getScrollState: function getScrollState() {\n var state = this._scroll_state();\n\n return {\n x: state.x_pos,\n y: state.y_pos,\n inner_width: state.x,\n inner_height: state.y,\n width: state.x_inner,\n height: state.y_inner\n };\n },\n getLayoutView: function getLayoutView(cellName) {\n return this.$ui.getView(cellName);\n },\n scrollLayoutCell: function scrollLayoutCell(cellName, left, top) {\n var cell = this.$ui.getView(cellName);\n\n if (!cell) {\n return false;\n }\n\n if (left !== null) {\n var horizontalScroll = this.$ui.getView(cell.$config.scrollX);\n\n if (horizontalScroll) {\n horizontalScroll.scrollTo(left, null);\n }\n }\n\n if (top !== null) {\n var verticalScroll = this.$ui.getView(cell.$config.scrollY);\n\n if (verticalScroll) {\n verticalScroll.scrollTo(null, top);\n }\n }\n }\n };\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function (gantt) {\n delete gantt.addTaskLayer;\n delete gantt.addLinkLayer;\n};","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n getVerticalScrollbar: function getVerticalScrollbar() {\n return gantt.$ui.getView(\"scrollVer\");\n },\n getHorizontalScrollbar: function getHorizontalScrollbar() {\n return gantt.$ui.getView(\"scrollHor\");\n },\n _legacyGridResizerClass: function _legacyGridResizerClass(layout) {\n var resizers = layout.getCellsByType(\"resizer\");\n\n for (var i = 0; i < resizers.length; i++) {\n var r = resizers[i];\n var gridResizer = false;\n var prev = r.$parent.getPrevSibling(r.$id);\n\n if (prev && prev.$config && prev.$config.id === \"grid\") {\n gridResizer = true;\n } else {\n var next = r.$parent.getNextSibling(r.$id);\n\n if (next && next.$config && next.$config.id === \"grid\") {\n gridResizer = true;\n }\n }\n\n if (gridResizer) {\n r.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n }\n }\n },\n onCreated: function onCreated(layout) {\n var first = true;\n\n this._legacyGridResizerClass(layout);\n\n layout.attachEvent(\"onBeforeResize\", function () {\n var mainTimeline = gantt.$ui.getView(\"timeline\");\n if (mainTimeline) mainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n var mainGrid = gantt.$ui.getView(\"grid\");\n if (!mainGrid) return;\n\n var colsWidth = mainGrid._getColsTotalWidth();\n\n var hideGrid = !gantt.config.show_grid || !gantt.config.grid_width || colsWidth === 0;\n\n if (first && !hideGrid && colsWidth !== false) {\n gantt.config.grid_width = colsWidth;\n }\n\n mainGrid.$config.hidden = mainGrid.$parent.$config.hidden = hideGrid;\n\n if (!mainGrid.$config.hidden) {\n /* restrict grid width due to min_width, max_width, min_grid_column_width */\n var grid_limits = mainGrid._getGridWidthLimits();\n\n if (grid_limits[0] && gantt.config.grid_width < grid_limits[0]) gantt.config.grid_width = grid_limits[0];\n if (grid_limits[1] && gantt.config.grid_width > grid_limits[1]) gantt.config.grid_width = grid_limits[1];\n\n if (mainTimeline && gantt.config.show_chart) {\n mainGrid.$config.width = gantt.config.grid_width - 1; // GS-1314: Don't let the non-scrollable grid to be larger than the container with the correct width\n\n if (!mainGrid.$config.scrollable && mainGrid.$config.scrollY && gantt.$root.offsetWidth) {\n var ganttContainerWidth = mainGrid.$gantt.$layout.$container.offsetWidth;\n var verticalScrollbar = gantt.$ui.getView(mainGrid.$config.scrollY);\n var verticalScrollbarWidth = verticalScrollbar.$config.width;\n var gridOverflow = ganttContainerWidth - (mainGrid.$config.width + verticalScrollbarWidth);\n\n if (gridOverflow < 0) {\n mainGrid.$config.width += gridOverflow;\n gantt.config.grid_width += gridOverflow;\n }\n }\n\n if (!first) {\n if (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // timeline is being displayed after being not visible, reset grid with from full screen\n if (!mainGrid.$config.original_grid_width) {\n var skinSettings = gantt.skins[gantt.skin];\n\n if (skinSettings && skinSettings.config && skinSettings.config.grid_width) {\n mainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n } else {\n mainGrid.$config.original_grid_width = 0;\n }\n }\n\n gantt.config.grid_width = mainGrid.$config.original_grid_width;\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n } else {\n mainGrid.$parent._setContentSize(mainGrid.$config.width, null);\n\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: gantt.config.grid_width,\n isGravity: false\n });\n }\n } else {\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n\n if (mainGrid.$parent.$config.group) {\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: mainGrid.$parent.$config.width,\n isGravity: false\n });\n }\n }\n } else {\n if (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // hiding timeline, remember grid with to restore it when timeline is displayed again\n mainGrid.$config.original_grid_width = gantt.config.grid_width;\n }\n\n if (!first) {\n mainGrid.$parent.$config.width = 0;\n }\n }\n }\n\n first = false;\n });\n\n this._initScrollStateEvents(layout);\n },\n _initScrollStateEvents: function _initScrollStateEvents(layout) {\n gantt._getVerticalScrollbar = this.getVerticalScrollbar;\n gantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n var vertical = this.getVerticalScrollbar();\n var horizontal = this.getHorizontalScrollbar();\n\n if (vertical) {\n vertical.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n });\n }\n\n if (horizontal) {\n horizontal.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]); // if the grid doesn't fit the width, scroll the row container\n\n var grid = gantt.$ui.getView(\"grid\");\n\n if (grid && grid.$grid_data && !grid.$config.scrollable) {\n grid.$grid_data.style.left = grid.$grid.scrollLeft + \"px\";\n grid.$grid_data.scrollLeft = grid.$grid.scrollLeft;\n }\n });\n }\n\n layout.attachEvent(\"onResize\", function () {\n if (vertical && !gantt.$scroll_ver) {\n gantt.$scroll_ver = vertical.$scroll_ver;\n }\n\n if (horizontal && !gantt.$scroll_hor) {\n gantt.$scroll_hor = horizontal.$scroll_hor;\n }\n });\n },\n _findGridResizer: function _findGridResizer(layout, grid) {\n var resizers = layout.getCellsByType(\"resizer\");\n var gridFirst = true;\n var gridResizer;\n\n for (var i = 0; i < resizers.length; i++) {\n var res = resizers[i];\n\n res._getSiblings();\n\n var prev = res._behind;\n var next = res._front;\n\n if (prev && prev.$content === grid || prev.isChild && prev.isChild(grid)) {\n gridResizer = res;\n gridFirst = true;\n break;\n } else if (next && next.$content === grid || next.isChild && next.isChild(grid)) {\n gridResizer = res;\n gridFirst = false;\n break;\n }\n }\n\n return {\n resizer: gridResizer,\n gridFirst: gridFirst\n };\n },\n onInitialized: function onInitialized(layout) {\n var grid = gantt.$ui.getView(\"grid\");\n\n var resizeInfo = this._findGridResizer(layout, grid); // expose grid resize events\n\n\n if (resizeInfo.resizer) {\n var gridFirst = resizeInfo.gridFirst,\n next = resizeInfo.resizer;\n\n if (next.$config.mode !== \"x\") {\n return; // track only horizontal resize\n }\n\n var initialWidth;\n next.attachEvent(\"onResizeStart\", function (prevCellWidth, nextCellWidth) {\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n var limits = grid._getGridWidthLimits(); // min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\n\n if (!grid.$config.scrollable) viewCell.$config.minWidth = limits[0];\n viewCell.$config.maxWidth = limits[1];\n }\n\n initialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n return gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n });\n next.attachEvent(\"onResize\", function (newBehindSize, newFrontSize) {\n var newSize = gridFirst ? newBehindSize : newFrontSize;\n return gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n });\n next.attachEvent(\"onResizeEnd\", function (oldBackSize, oldFrontSize, newBackSize, newFrontSize) {\n var oldSize = gridFirst ? oldBackSize : oldFrontSize;\n var newSize = gridFirst ? newBackSize : newFrontSize;\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n viewCell.$config.minWidth = undefined;\n }\n\n var res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\n if (res && newSize !== 0) {\n // new size may be numeric zero when cell size is defined by 'gravity', actual size will be calculated by layout later\n gantt.config.grid_width = newSize;\n }\n\n return res;\n });\n }\n },\n onDestroyed: function onDestroyed(timeline) {}\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar initLinksDND = function initLinksDND(timeline, gantt) {\n var _link_landing,\n _link_target_task,\n _link_target_task_start,\n _link_source_task,\n _link_source_task_start,\n markerDefaultOffset = 10,\n scrollDefaultSize = 18;\n\n function getVisibleMilestoneWidth(taskId) {\n var origWidth = timeline.getBarHeight(taskId, true); //m-s have square shape\n\n return Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n }\n\n function isMilestone(task) {\n return gantt.getTaskType(task.type) == gantt.config.types.milestone;\n }\n\n function getDndState() {\n return {\n link_source_id: _link_source_task,\n link_target_id: _link_target_task,\n link_from_start: _link_source_task_start,\n link_to_start: _link_target_task_start,\n link_landing_area: _link_landing\n };\n }\n\n var services = gantt.$services;\n var state = services.getService(\"state\");\n var DnD = services.getService(\"dnd\");\n state.registerProvider(\"linksDnD\", getDndState);\n var start_marker = \"task_start_date\",\n end_marker = \"task_end_date\",\n link_edge_marker = \"gantt_link_point\",\n link_landing_hover_area = \"gantt_link_control\";\n var dnd = new DnD(timeline.$task_bars, {\n sensitivity: 0,\n updates_per_second: 60,\n mousemoveContainer: gantt.$root,\n selector: \".\" + link_edge_marker,\n preventDefault: true\n });\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var target = e.target || e.srcElement;\n resetDndState();\n if (gantt.getState(\"tasksDnd\").drag_id) return false;\n\n if (domHelpers.locateClassName(target, link_edge_marker)) {\n if (domHelpers.locateClassName(target, start_marker)) _link_source_task_start = true;\n var sid = gantt.locate(e);\n _link_source_task = sid;\n var t = gantt.getTask(sid);\n\n if (gantt.isReadonly(t)) {\n resetDndState();\n return false;\n }\n\n var shift = 0;\n this._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n return true;\n } else {\n return false;\n }\n }, this));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n if (gantt.config.touch) {\n gantt.refreshData();\n }\n\n updateMarkedHtml(dnd.config.marker);\n }, this));\n\n function getLinePos(task, to_start, shift, cfg, isStart) {\n var taskPos = getMilestonePosition(task, function (task) {\n return gantt.getTaskPosition(task);\n }, cfg);\n var pos = {\n x: taskPos.x,\n y: taskPos.y\n };\n\n if (!to_start) {\n pos.x = taskPos.xEnd;\n } //var pos = gantt._get_task_pos(task, !!to_start);\n\n\n pos.y += gantt.getTaskHeight(task.id) / 2;\n var offset = isMilestone(task) && isStart ? 2 : 0;\n shift = shift || 0;\n if (cfg.rtl) shift = shift * -1;\n pos.x += (to_start ? -1 : 1) * shift - offset;\n return pos;\n }\n\n function getMilestonePosition(task, getTaskPosition, cfg) {\n var pos = getTaskPosition(task);\n var res = {\n x: pos.left,\n y: pos.top,\n width: pos.width,\n height: pos.height\n };\n\n if (cfg.rtl) {\n res.xEnd = res.x;\n res.x = res.xEnd + res.width;\n } else {\n res.xEnd = res.x + res.width;\n }\n\n res.yEnd = res.y + res.height;\n\n if (gantt.getTaskType(task.type) == gantt.config.types.milestone) {\n var milestoneWidth = getVisibleMilestoneWidth(task.id);\n res.x += (!cfg.rtl ? -1 : 1) * (milestoneWidth / 2);\n res.xEnd += (!cfg.rtl ? 1 : -1) * (milestoneWidth / 2); //pos.x -= milestoneWidth / 2;\n //pos.xEnd += milestoneWidth / 2;\n\n res.width = pos.xEnd - pos.x;\n }\n\n return res;\n }\n\n function getVieportSize() {\n var root = gantt.$root;\n return {\n right: root.offsetWidth,\n bottom: root.offsetHeight\n };\n }\n\n function getMarkerSize(marker) {\n var width = 0,\n height = 0;\n\n if (marker) {\n width = marker.offsetWidth || 0;\n height = marker.offsetHeight || 0;\n }\n\n return {\n width: width,\n height: height\n };\n }\n\n function getPosition(e, marker) {\n var oldPos = dnd.getPosition(e);\n var markerSize = getMarkerSize(marker);\n var viewportSize = getVieportSize();\n var offsetX = gantt.config.tooltip_offset_x || markerDefaultOffset;\n var offsetY = gantt.config.tooltip_offset_y || markerDefaultOffset;\n var scrollSize = gantt.config.scroll_size || scrollDefaultSize; // GS-1315: Add offset if there are elements above Gantt\n\n var ganttOffsetY = gantt.$container.getBoundingClientRect().y + window.scrollY;\n var position = {\n y: oldPos.y + offsetY,\n x: oldPos.x + offsetX,\n bottom: oldPos.y + markerSize.height + offsetY + scrollSize,\n right: oldPos.x + markerSize.width + offsetX + scrollSize\n };\n\n if (position.bottom > viewportSize.bottom + ganttOffsetY) {\n position.y = viewportSize.bottom + ganttOffsetY - markerSize.height - offsetY;\n }\n\n if (position.right > viewportSize.right) {\n position.x = viewportSize.right - markerSize.width - offsetX;\n }\n\n return position;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var dd = dnd.config;\n var pos = getPosition(e, dd.marker);\n advanceMarker(dd.marker, pos);\n var landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n var prevTarget = _link_target_task;\n var prevLanding = _link_landing;\n var prevToStart = _link_target_task_start;\n var targ = gantt.locate(e),\n to_start = true; // can drag and drop link to another gantt on the page, such links are not supported\n\n var eventTarget = domHelpers.getTargetNode(e);\n var sameGantt = domHelpers.isChildOf(eventTarget, gantt.$root);\n\n if (!sameGantt) {\n landing = false;\n targ = null;\n }\n\n if (landing) {\n //refreshTask\n to_start = !domHelpers.locateClassName(e, end_marker);\n landing = !!targ;\n }\n\n _link_target_task = targ;\n _link_landing = landing;\n _link_target_task_start = to_start;\n\n if (landing) {\n var t = gantt.getTask(targ);\n var config = timeline.$getConfig();\n var node = domHelpers.locateClassName(e, link_landing_hover_area);\n var shift = 0;\n\n if (node) {\n shift = Math.floor(node.offsetWidth / 2);\n }\n\n this._dir_end = getLinePos(t, !!_link_target_task_start, shift, config);\n } else {\n this._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\n if (gantt.env.isEdge) {\n // to fix margin collapsing\n this._dir_end.y += window.scrollY;\n }\n }\n\n var targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\n if (targetChanged) {\n if (prevTarget) gantt.refreshTask(prevTarget, false);\n if (targ) gantt.refreshTask(targ, false);\n }\n\n if (targetChanged) {\n updateMarkedHtml(dd.marker);\n }\n\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n return true;\n }, this));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var drag = getDndState();\n\n if (drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id) {\n var type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n var link = {\n source: drag.link_source_id,\n target: drag.link_target_id,\n type: type\n };\n\n if (link.type && gantt.isLinkAllowed(link)) {\n if (gantt.callEvent(\"onLinkCreated\", [link])) {\n gantt.addLink(link);\n }\n }\n }\n\n resetDndState();\n\n if (gantt.config.touch) {\n gantt.refreshData();\n } else {\n if (drag.link_source_id) gantt.refreshTask(drag.link_source_id, false);\n if (drag.link_target_id) gantt.refreshTask(drag.link_target_id, false);\n }\n\n removeDirectionLine();\n }, this));\n\n function updateMarkedHtml(marker) {\n var link = getDndState();\n var css = [\"gantt_link_tooltip\"];\n\n if (link.link_source_id && link.link_target_id) {\n if (gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)) {\n css.push(\"gantt_allowed_link\");\n } else {\n css.push(\"gantt_invalid_link\");\n }\n }\n\n var className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n if (className) css.push(className);\n var html = \"<div class='\" + className + \"'>\" + gantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) + \"</div>\";\n marker.innerHTML = html;\n }\n\n function advanceMarker(marker, pos) {\n marker.style.left = pos.x + \"px\";\n marker.style.top = pos.y + \"px\";\n }\n\n function resetDndState() {\n _link_source_task = _link_source_task_start = _link_target_task = null;\n _link_target_task_start = true;\n }\n\n function showDirectingLine(s_x, s_y, e_x, e_y) {\n var div = getDirectionLine();\n var link = getDndState();\n var css = [\"gantt_link_direction\"];\n\n if (gantt.templates.link_direction_class) {\n css.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n }\n\n var dist = Math.sqrt(Math.pow(e_x - s_x, 2) + Math.pow(e_y - s_y, 2));\n dist = Math.max(0, dist - 3);\n if (!dist) return;\n div.className = css.join(\" \");\n var tan = (e_y - s_y) / (e_x - s_x),\n angle = Math.atan(tan);\n\n if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2) {\n angle += Math.PI;\n } else if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3) {\n angle -= Math.PI;\n }\n\n var sin = Math.sin(angle),\n cos = Math.cos(angle),\n top = Math.round(s_y),\n left = Math.round(s_x);\n var style = [\"-webkit-transform: rotate(\" + angle + \"rad)\", \"-moz-transform: rotate(\" + angle + \"rad)\", \"-ms-transform: rotate(\" + angle + \"rad)\", \"-o-transform: rotate(\" + angle + \"rad)\", \"transform: rotate(\" + angle + \"rad)\", \"width:\" + Math.round(dist) + \"px\"];\n\n if (window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1) {\n //ms-filter breaks styles in ie9, so add it only for 8th\n style.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n var shiftLeft = Math.abs(Math.round(s_x - e_x)),\n shiftTop = Math.abs(Math.round(e_y - s_y)); //fix rotation axis\n\n switch (coordinateCircleQuarter(s_x, e_x, s_y, e_y)) {\n case 1:\n top -= shiftTop;\n break;\n\n case 2:\n left -= shiftLeft;\n top -= shiftTop;\n break;\n\n case 3:\n left -= shiftLeft;\n break;\n\n default:\n break;\n }\n }\n\n style.push(\"top:\" + top + \"px\");\n style.push(\"left:\" + left + \"px\");\n div.style.cssText = style.join(\";\");\n }\n\n function ieTransform(sin, cos) {\n return \"progid:DXImageTransform.Microsoft.Matrix(\" + \"M11 = \" + cos + \",\" + \"M12 = -\" + sin + \",\" + \"M21 = \" + sin + \",\" + \"M22 = \" + cos + \",\" + \"SizingMethod = 'auto expand'\" + \")\";\n }\n\n function coordinateCircleQuarter(sX, eX, sY, eY) {\n if (eX >= sX) {\n if (eY <= sY) {\n return 1;\n } else {\n return 4;\n }\n } else {\n if (eY <= sY) {\n return 2;\n } else {\n return 3;\n }\n }\n }\n\n function getDirectionLine() {\n if (!dnd._direction || !dnd._direction.parentNode) {\n dnd._direction = document.createElement(\"div\");\n timeline.$task_links.appendChild(dnd._direction);\n }\n\n return dnd._direction;\n }\n\n function removeDirectionLine() {\n if (dnd._direction) {\n if (dnd._direction.parentNode) //the event line can be detached because of data refresh\n dnd._direction.parentNode.removeChild(dnd._direction);\n dnd._direction = null;\n }\n }\n\n gantt.attachEvent(\"onGanttRender\", gantt.bind(function () {\n if (dnd._direction) {\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n }\n }, this));\n};\n\nmodule.exports = {\n createLinkDND: function createLinkDND() {\n return {\n init: initLinksDND\n };\n }\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar timeout = require(\"../../../utils/timeout\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nfunction createTaskDND(timeline, gantt) {\n var services = gantt.$services;\n return {\n drag: null,\n dragMultiple: {},\n _events: {\n before_start: {},\n before_finish: {},\n after_finish: {}\n },\n _handlers: {},\n init: function init() {\n this._domEvents = gantt._createDomEventScope();\n this.clear_drag_state();\n var drag = gantt.config.drag_mode;\n this.set_actions();\n var stateService = services.getService(\"state\");\n stateService.registerProvider(\"tasksDnd\", utils.bind(function () {\n return {\n drag_id: this.drag ? this.drag.id : undefined,\n drag_mode: this.drag ? this.drag.mode : undefined,\n drag_from_start: this.drag ? this.drag.left : undefined\n };\n }, this));\n var evs = {\n \"before_start\": \"onBeforeTaskDrag\",\n \"before_finish\": \"onBeforeTaskChanged\",\n \"after_finish\": \"onAfterTaskDrag\"\n }; //for now, all drag operations will trigger the same events\n\n for (var stage in this._events) {\n for (var mode in drag) {\n this._events[stage][mode] = evs[stage];\n }\n }\n\n this._handlers[drag.move] = this._move;\n this._handlers[drag.resize] = this._resize;\n this._handlers[drag.progress] = this._resize_progress;\n },\n set_actions: function set_actions() {\n var data = timeline.$task_data;\n\n this._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\n this.on_mouse_move(e);\n }, this));\n\n this._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\n this.on_mouse_down(e);\n }, this));\n\n this._domEvents.attach(document.body, \"mouseup\", gantt.bind(function (e) {\n this.on_mouse_up(e);\n }, this));\n },\n clear_drag_state: function clear_drag_state() {\n this.drag = {\n id: null,\n mode: null,\n pos: null,\n start_x: null,\n start_y: null,\n obj: null,\n left: null\n };\n this.dragMultiple = {};\n },\n _resize: function _resize(task, shift, drag) {\n var cfg = timeline.$getConfig();\n\n var coords_x = this._drag_task_coords(task, drag);\n\n if (drag.left) {\n task.start_date = gantt.dateFromPos(coords_x.start + shift);\n\n if (!task.start_date) {\n task.start_date = new Date(gantt.getState().min_date);\n }\n } else {\n task.end_date = gantt.dateFromPos(coords_x.end + shift);\n\n if (!task.end_date) {\n task.end_date = new Date(gantt.getState().max_date);\n }\n }\n\n var minDurationInUnits = this._calculateMinDuration(cfg.min_duration, cfg.duration_unit);\n\n if (task.end_date - task.start_date < cfg.min_duration) {\n if (drag.left) task.start_date = gantt.calculateEndDate(task.end_date, -minDurationInUnits, cfg.duration_unit, task);else task.end_date = gantt.calculateEndDate(task.start_date, minDurationInUnits, cfg.duration_unit, task);\n }\n\n gantt._init_task_timing(task);\n },\n _calculateMinDuration: function _calculateMinDuration(duration, unit) {\n var inMs = {\n \"minute\": 60000,\n \"hour\": 3600000,\n \"day\": 86400000,\n \"week\": 604800000,\n \"month\": 2419200000,\n \"year\": 31356000000\n };\n return Math.ceil(duration / inMs[unit]);\n },\n _resize_progress: function _resize_progress(task, shift, drag) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var config = timeline.$getConfig();\n var diffValue = !config.rtl ? drag.pos.x - coords_x.start : coords_x.start - drag.pos.x;\n var diff = Math.max(0, diffValue);\n task.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n },\n _find_max_shift: function _find_max_shift(dragItems, shift) {\n var correctShift;\n\n for (var i in dragItems) {\n var drag = dragItems[i];\n var task = gantt.getTask(drag.id);\n\n var coords_x = this._drag_task_coords(task, drag);\n\n var minX = gantt.posFromDate(new Date(gantt.getState().min_date));\n var maxX = gantt.posFromDate(new Date(gantt.getState().max_date));\n\n if (coords_x.end + shift > maxX) {\n var maxShift = maxX - coords_x.end;\n\n if (maxShift < correctShift || correctShift === undefined) {\n correctShift = maxShift;\n }\n } else if (coords_x.start + shift < minX) {\n var minShift = minX - coords_x.start;\n\n if (minShift > correctShift || correctShift === undefined) {\n correctShift = minShift;\n }\n }\n }\n\n return correctShift;\n },\n _move: function _move(task, shift, drag, multipleDragShift) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var new_start = null,\n new_end = null; // GS-454: If we drag multiple tasks, rely on the dates instead of timeline coordinates\n\n if (multipleDragShift) {\n new_start = new Date(+drag.obj.start_date + multipleDragShift), new_end = new Date(+drag.obj.end_date + multipleDragShift);\n } else {\n new_start = gantt.dateFromPos(coords_x.start + shift), new_end = gantt.dateFromPos(coords_x.end + shift);\n }\n\n if (!new_start) {\n task.start_date = new Date(gantt.getState().min_date);\n task.end_date = gantt.dateFromPos(gantt.posFromDate(task.start_date) + (coords_x.end - coords_x.start));\n } else if (!new_end) {\n task.end_date = new Date(gantt.getState().max_date);\n task.start_date = gantt.dateFromPos(gantt.posFromDate(task.end_date) - (coords_x.end - coords_x.start));\n } else {\n task.start_date = new_start;\n task.end_date = new_end;\n }\n },\n _drag_task_coords: function _drag_task_coords(t, drag) {\n var start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n var end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n return {\n start: start,\n end: end\n };\n },\n _mouse_position_change: function _mouse_position_change(oldPos, newPos) {\n var dx = oldPos.x - newPos.x,\n dy = oldPos.y - newPos.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n _is_number: function _is_number(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n },\n on_mouse_move: function on_mouse_move(e) {\n if (this.drag.start_drag) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var sX = this.drag.start_drag.start_x,\n sY = this.drag.start_drag.start_y;\n\n if (Date.now() - this.drag.timestamp > 50 || this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n x: sX,\n y: sY\n }, pos) > 20) {\n this._start_dnd(e);\n }\n }\n\n var drag = this.drag;\n\n if (drag.mode) {\n if (!timeout(this, 40)) //limit update frequency\n return;\n\n this._update_on_move(e);\n }\n },\n _update_item_on_move: function _update_item_on_move(shift, id, mode, drag, e, multipleDragShift) {\n var task = gantt.getTask(id);\n var original = gantt.mixin({}, task);\n var copy = gantt.mixin({}, task);\n\n this._handlers[mode].apply(this, [copy, shift, drag, multipleDragShift]);\n\n gantt.mixin(task, copy, true); //gantt._update_parents(drag.id, true);\n\n gantt.callEvent(\"onTaskDrag\", [task.id, mode, copy, original, e]);\n gantt.mixin(task, copy, true);\n gantt.refreshTask(id);\n },\n _update_on_move: function _update_on_move(e) {\n var drag = this.drag;\n var config = timeline.$getConfig();\n\n if (drag.mode) {\n var pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n if (drag.pos && drag.pos.x == pos.x) return;\n drag.pos = pos;\n var curr_date = gantt.dateFromPos(pos.x);\n if (!curr_date || isNaN(curr_date.getTime())) return;\n var shift = pos.x - drag.start_x;\n var task = gantt.getTask(drag.id);\n\n if (this._handlers[drag.mode]) {\n if (drag.mode === config.drag_mode.move) {\n var dragHash = {};\n\n if (this._isMultiselect()) {\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n dragHash = this.dragMultiple;\n }\n }\n\n var dragProject = false;\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project) {\n var initialDrag = {};\n initialDrag[drag.id] = utils.copy(drag);\n dragProject = true;\n dragHash = utils.mixin(initialDrag, this.dragMultiple);\n }\n\n var maxShift = this._find_max_shift(dragHash, shift);\n\n if (maxShift !== undefined) {\n shift = maxShift;\n }\n\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\n for (var i in dragHash) {\n var childDrag = dragHash[i];\n\n if (dragProject && childDrag.id != drag.id) {\n gantt._bulk_dnd = true;\n } // GS-454: Calculate the date shift in milliseconds instead of pixels\n\n\n if (maxShift === undefined && (dragProject || Object.keys(dragHash).length > 1)) {\n var shiftDate = gantt.dateFromPos(drag.start_x);\n var multipleDragShift = curr_date - shiftDate;\n }\n\n this._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e, multipleDragShift);\n }\n\n gantt._bulk_dnd = false;\n } else {\n // for resize and progress\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n }\n\n gantt._update_parents(drag.id);\n }\n }\n },\n on_mouse_down: function on_mouse_down(e, src) {\n // on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n // let's ignore right mouse button then\n if (e.button == 2 && e.button !== undefined) return;\n var config = timeline.$getConfig();\n var id = gantt.locate(e);\n var task = null;\n\n if (gantt.isTaskExists(id)) {\n task = gantt.getTask(id);\n }\n\n if (gantt.isReadonly(task) || this.drag.mode) return;\n this.clear_drag_state();\n src = src || e.target || e.srcElement;\n var className = domHelpers.getClassName(src);\n\n var drag = this._get_drag_mode(className, src);\n\n if (!className || !drag) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);else return;\n }\n\n if (!drag) {\n if (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);\n }\n } else {\n if (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n id = gantt.locate(src);\n task = gantt.copy(gantt.getTask(id) || {});\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return false;\n }\n\n if (gantt.isSummaryTask(task) && !config.drag_project && drag.mode != config.drag_mode.progress) {\n //only progress drag is allowed for tasks with flexible duration\n this.clear_drag_state();\n return;\n }\n\n drag.id = id;\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n drag.start_x = pos.x;\n drag.start_y = pos.y;\n drag.obj = task;\n this.drag.start_drag = drag;\n this.drag.timestamp = Date.now();\n } else this.clear_drag_state();\n }\n },\n _fix_dnd_scale_time: function _fix_dnd_scale_time(task, drag) {\n var config = timeline.$getConfig();\n var unit = gantt.getScale().unit,\n step = gantt.getScale().step;\n\n if (!config.round_dnd_dates) {\n unit = 'minute';\n step = config.time_step;\n }\n\n function fixStart(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(task.start_date, undefined, task)) task.start_date = gantt.calculateEndDate({\n start_date: task.start_date,\n duration: -1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n function fixEnd(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task)) task.end_date = gantt.calculateEndDate({\n start_date: task.end_date,\n duration: 1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n } else {\n task.end_date = gantt.roundDate({\n date: task.end_date,\n unit: unit,\n step: step\n });\n fixEnd(task);\n }\n } else if (drag.mode == config.drag_mode.move) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n task.end_date = gantt.calculateEndDate(task);\n }\n },\n _fix_working_times: function _fix_working_times(task, drag) {\n var config = timeline.$getConfig();\n var drag = drag || {\n mode: config.drag_mode.move\n };\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n } else {\n task.end_date = gantt.getClosestWorkTime({\n date: task.end_date,\n dir: 'past',\n task: task\n });\n }\n } else if (drag.mode == config.drag_mode.move) {\n gantt.correctTaskWorkTime(task);\n }\n },\n _finalize_mouse_up: function _finalize_mouse_up(taskId, config, drag, e) {\n var task = gantt.getTask(taskId);\n\n if (config.work_time && config.correct_work_time) {\n this._fix_working_times(task, drag);\n }\n\n this._fix_dnd_scale_time(task, drag);\n\n if (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n //drag.obj._dhx_changed = false;\n this.clear_drag_state();\n\n if (taskId == drag.id) {\n drag.obj._dhx_changed = false;\n gantt.mixin(task, drag.obj, true);\n }\n\n gantt.refreshTask(task.id);\n } else {\n var drag_id = taskId;\n\n gantt._init_task_timing(task);\n\n this.clear_drag_state();\n gantt.updateTask(task.id);\n\n this._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n }\n },\n on_mouse_up: function on_mouse_up(e) {\n var drag = this.drag;\n\n if (drag.mode && drag.id) {\n var config = timeline.$getConfig(); //drop\n\n var task = gantt.getTask(drag.id);\n var dragMultiple = this.dragMultiple;\n var finalizingBulkMove = false;\n var moveCount = 0;\n\n if (drag.mode === config.drag_mode.move) {\n if (gantt.isSummaryTask(task) && config.drag_project || this._isMultiselect()) {\n finalizingBulkMove = true;\n moveCount = Object.keys(dragMultiple).length;\n }\n }\n\n var doFinalize = function doFinalize() {\n if (finalizingBulkMove) {\n for (var i in dragMultiple) {\n this._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n }\n }\n\n this._finalize_mouse_up(drag.id, config, drag, e);\n };\n\n if (finalizingBulkMove && moveCount > 10) {\n // 10 - arbitrary threshold for bulk dnd at which we start doing complete repaint to refresh\n gantt.batchUpdate(function () {\n doFinalize.call(this);\n }.bind(this));\n } else {\n doFinalize.call(this);\n }\n }\n\n this.clear_drag_state();\n },\n _get_drag_mode: function _get_drag_mode(className, el) {\n var config = timeline.$getConfig();\n var modes = config.drag_mode;\n var classes = (className || \"\").split(\" \");\n var classname = classes[0];\n var drag = {\n mode: null,\n left: null\n };\n\n switch (classname) {\n case \"gantt_task_line\":\n case \"gantt_task_content\":\n drag.mode = modes.move;\n break;\n\n case \"gantt_task_drag\":\n drag.mode = modes.resize;\n var dragProperty = el.getAttribute(\"data-bind-property\");\n\n if (dragProperty == \"start_date\") {\n drag.left = true;\n } else {\n drag.left = false;\n }\n\n break;\n\n case \"gantt_task_progress_drag\":\n drag.mode = modes.progress;\n break;\n\n case \"gantt_link_control\":\n case \"gantt_link_point\":\n drag.mode = modes.ignore;\n break;\n\n default:\n drag = null;\n break;\n }\n\n return drag;\n },\n _start_dnd: function _start_dnd(e) {\n var drag = this.drag = this.drag.start_drag;\n delete drag.start_drag;\n var cfg = timeline.$getConfig();\n var id = drag.id;\n\n if (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n this.clear_drag_state();\n } else {\n delete drag.start_drag;\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return;\n }\n\n if (this._isMultiselect()) {\n // for don't move selected tasks when drag unselected task\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n helpers.forEach(selectedTasksIds, gantt.bind(function (taskId) {\n var selectedTask = gantt.getTask(taskId);\n\n if (gantt.isSummaryTask(selectedTask) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(selectedTask.id);\n }\n\n this.dragMultiple[taskId] = gantt.mixin({\n id: selectedTask.id,\n obj: gantt.copy(selectedTask)\n }, this.drag);\n }, this));\n }\n } // for move unselected summary\n\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(task.id);\n }\n\n gantt.callEvent(\"onTaskDragStart\", []);\n }\n },\n _fireEvent: function _fireEvent(stage, mode, params) {\n gantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n var trigger = this._events[stage][mode];\n gantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n gantt.assert(params, \"Invalid event arguments\");\n if (!gantt.checkEvent(trigger)) return true;\n return gantt.callEvent(trigger, params);\n },\n round_task_dates: function round_task_dates(task) {\n var drag_state = this.drag;\n var config = timeline.$getConfig();\n\n if (!drag_state) {\n drag_state = {\n mode: config.drag_mode.move\n };\n }\n\n this._fix_dnd_scale_time(task, drag_state);\n },\n destructor: function destructor() {\n this._domEvents.detachAll();\n },\n _isMultiselect: function _isMultiselect() {\n return gantt.config.drag_multiple && !!(gantt.getSelectedTasks && gantt.getSelectedTasks().length > 0);\n },\n _addSubtasksToDragMultiple: function _addSubtasksToDragMultiple(summaryId) {\n gantt.eachTask(function (child) {\n this.dragMultiple[child.id] = gantt.mixin({\n id: child.id,\n obj: gantt.copy(child)\n }, this.drag);\n }, summaryId, this);\n }\n };\n}\n\nfunction initTaskDND() {\n var _tasks_dnd;\n\n return {\n extend: function extend(timeline) {\n timeline.roundTaskDates = function (task) {\n _tasks_dnd.round_task_dates(task);\n };\n },\n init: function init(timeline, gantt) {\n _tasks_dnd = createTaskDND(timeline, gantt); // TODO: entry point for touch handlers, move touch to timeline\n\n timeline._tasks_dnd = _tasks_dnd;\n return _tasks_dnd.init(gantt);\n },\n destructor: function destructor() {\n if (_tasks_dnd) {\n _tasks_dnd.destructor();\n\n _tasks_dnd = null;\n }\n }\n };\n}\n\nmodule.exports = {\n createTaskDND: initTaskDND\n};","var utils = require(\"../../../utils/utils\"),\n taskDnD = require(\"./tasks_dnd\"),\n linkDnD = require(\"./links_dnd\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n var services = gantt.$services;\n return {\n onCreated: function onCreated(timeline) {\n var config = timeline.$config;\n config.bind = utils.defined(config.bind) ? config.bind : \"task\";\n config.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n timeline._linksDnD = linkDnD.createLinkDND();\n timeline._tasksDnD = taskDnD.createTaskDND();\n\n timeline._tasksDnD.extend(timeline);\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(timeline) {\n this._attachDomEvents(gantt);\n\n this._attachStateProvider(gantt, timeline);\n\n timeline._tasksDnD.init(timeline, gantt);\n\n timeline._linksDnD.init(timeline, gantt);\n\n if (timeline.$config.id == \"timeline\") {\n this.extendDom(timeline);\n }\n },\n onDestroyed: function onDestroyed(timeline) {\n this._clearDomEvents(gantt);\n\n this._clearStateProvider(gantt);\n\n if (timeline._tasksDnD) {\n timeline._tasksDnD.destructor();\n }\n },\n extendDom: function extendDom(timeline) {\n gantt.$task = timeline.$task;\n gantt.$task_scale = timeline.$task_scale;\n gantt.$task_data = timeline.$task_data;\n gantt.$task_bg = timeline.$task_bg;\n gantt.$task_links = timeline.$task_links;\n gantt.$task_bars = timeline.$task_bars;\n },\n _clearDomEvents: function _clearDomEvents() {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n _attachDomEvents: function _attachDomEvents(gantt) {\n function _delete_link_handler(id, e) {\n if (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n var link = this.getLink(id);\n if (this.isReadonly(link)) return;\n var title = \"\";\n var question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n window.setTimeout(function () {\n gantt._simple_confirm(question, title, function () {\n gantt.deleteLink(id);\n });\n }, this.config.touch ? 300 : 1);\n }\n }\n\n this._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n var id = this.locate(e, this.config.link_attribute);\n\n if (id) {\n this.callEvent(\"onLinkClick\", [id, e]);\n }\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var date = gantt.dateFromPos(pos.x);\n var coll = Math.floor(gantt.columnIndexByDate(date));\n var coll_date = gantt.getScale().trace_x[coll];\n gantt.callEvent(\"onScaleClick\", [e, coll_date]);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e, gantt.config.link_attribute);\n\n _delete_link_handler.call(this, id, e);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e),\n task = this.getTask(id);\n var link = null;\n\n if (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n if (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n link = task.$target[0];\n } else {\n link = task.$source[0];\n }\n }\n\n if (link) _delete_link_handler.call(this, link, e);\n return false;\n }, gantt), this.$task);\n },\n _attachStateProvider: function _attachStateProvider(gantt, timeline) {\n var self = timeline;\n var state = services.getService(\"state\");\n state.registerProvider(\"tasksTimeline\", function () {\n return {\n scale_unit: self._tasks ? self._tasks.unit : undefined,\n scale_step: self._tasks ? self._tasks.step : undefined\n };\n });\n },\n _clearStateProvider: function _clearStateProvider() {\n var state = services.getService(\"state\");\n state.unregisterProvider(\"tasksTimeline\");\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../utils/dom_helpers\");\n/**\r\n * methods for highlighting current drag and drop position\r\n */\n\n\nfunction highlightPosition(target, root, grid) {\n var markerPos = getTaskMarkerPosition(target, grid); // setting position of row\n\n root.marker.style.left = markerPos.x + 9 + \"px\";\n root.marker.style.width = markerPos.width + \"px\";\n root.marker.style.overflow = \"hidden\";\n var markerLine = root.markerLine;\n\n if (!markerLine) {\n markerLine = document.createElement(\"div\");\n markerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n markerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n markerLine.style.pointerEvents = \"none\";\n }\n\n if (target.child) {\n highlightFolder(target, markerLine, grid);\n } else {\n highlightRow(target, markerLine, grid);\n }\n\n if (!root.markerLine) {\n document.body.appendChild(markerLine);\n root.markerLine = markerLine;\n }\n}\n\nfunction removeLineHighlight(root) {\n if (root.markerLine && root.markerLine.parentNode) {\n root.markerLine.parentNode.removeChild(root.markerLine);\n }\n\n root.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid) {\n var linePos = getLineMarkerPosition(target, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom + window.scrollY;\n markerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n markerLine.style.left = linePos.x + \"px\";\n markerLine.style.height = \"4px\";\n var markerLineTop = linePos.y - 2;\n markerLine.style.top = markerLineTop + \"px\";\n markerLine.style.width = linePos.width + \"px\";\n\n if (markerLineTop > maxBottom) {\n markerLine.style.top = maxBottom + 'px';\n }\n\n return markerLine;\n}\n\nfunction highlightFolder(target, markerFolder, grid) {\n var id = target.targetParent;\n var pos = gridToPageCoordinates({\n x: 0,\n y: grid.getItemTop(id)\n }, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom + window.scrollY;\n var folderHighlightWidth = setWidthWithinContainer(grid.$gantt, grid.$grid_data.offsetWidth);\n markerFolder.innerHTML = \"<div class='gantt_grid_dnd_marker_folder'></div>\";\n markerFolder.style.width = folderHighlightWidth + \"px\";\n markerFolder.style.top = pos.y + \"px\";\n markerFolder.style.left = pos.x + \"px\";\n markerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\n if (pos.y > maxBottom) {\n markerFolder.style.top = maxBottom + 'px';\n }\n\n return markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid) {\n var store = grid.$config.rowStore;\n var pos = {\n x: 0,\n y: 0\n };\n var indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n var indent = 15;\n var level = 0;\n\n if (indentNode) {\n indent = indentNode.offsetWidth;\n }\n\n var iconWidth = 40;\n\n if (target.targetId !== store.$getRootId()) {\n var itemTop = grid.getItemTop(target.targetId);\n var itemHeight = grid.getItemHeight(target.targetId);\n level = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n if (target.prevSibling) {\n pos.y = itemTop;\n } else if (target.nextSibling) {\n var childCount = 0;\n store.eachItem(function (child) {\n if (store.getIndexById(child.id) !== -1) childCount++;\n }, target.targetId);\n pos.y = itemTop + itemHeight + childCount * itemHeight;\n } else {\n pos.y = itemTop + itemHeight;\n level += 1;\n }\n }\n\n pos.x = iconWidth + level * indent;\n pos.width = setWidthWithinContainer(grid.$gantt, Math.max(grid.$grid_data.offsetWidth - pos.x, 0), pos.x);\n return gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid) {\n var gridPos = domHelpers.getNodePosition(grid.$grid_data);\n pos.x += gridPos.x + grid.$grid.scrollLeft;\n pos.y += gridPos.y - grid.$grid_data.scrollTop;\n return pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data); // row offset\n\n var x = pos.x + grid.$grid.scrollLeft;\n var y = ePos.y - 10;\n var rowHeight = grid.getItemHeight(e.targetId); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n pos.x = x;\n pos.y = y;\n pos.width = setWidthWithinContainer(grid.$gantt, pos.width, 9);\n return pos;\n}\n\nfunction setWidthWithinContainer(gantt, width) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var containerSize = domHelpers.getNodePosition(gantt.$root);\n\n if (width > containerSize.width) {\n width = containerSize.width - offset - 2;\n }\n\n return width;\n}\n\nmodule.exports = {\n removeLineHighlight: removeLineHighlight,\n highlightPosition: highlightPosition\n};","/**\r\n * resolve dnd position of the task when gantt.config.order_branch_free = true\r\n */\nvar dropTarget = require(\"./drop_target\");\n\nmodule.exports = function getMultiLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store) {\n var result;\n\n if (targetTaskId !== store.$getRootId()) {\n if (relTargetPos < 0.25) {\n result = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n } else if (relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)) {\n result = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n } else {\n result = dropTarget.firstChildTarget(dndTaskId, targetTaskId, store);\n }\n } else {\n var rootId = store.$getRootId();\n\n if (store.hasChild(rootId) && eventTop >= 0) {\n result = dropTarget.lastChildTarget(dndTaskId, rootId, store);\n } else {\n result = dropTarget.firstChildTarget(dndTaskId, rootId, store);\n }\n }\n\n return result;\n};","/**\r\n * resolve dnd position of the task when gantt.config.order_branch_free = false\r\n */\nvar dropTarget = require(\"./drop_target\");\n\nfunction getLast(store) {\n var current = store.getNext();\n\n while (store.exists(current)) {\n var next = store.getNext(current);\n\n if (!store.exists(next)) {\n return current;\n } else {\n current = next;\n }\n }\n\n return null;\n}\n\nfunction findClosesTarget(dndTaskId, taskId, allowedLevel, store, up) {\n var prev = taskId;\n\n while (store.exists(prev)) {\n var targetLevel = store.calculateItemLevel(store.getItem(prev));\n\n if ((targetLevel === allowedLevel || targetLevel === allowedLevel - 1) && store.getBranchIndex(prev) > -1) {\n break;\n } else {\n prev = up ? store.getPrev(prev) : store.getNext(prev);\n }\n }\n\n if (store.exists(prev)) {\n if (store.calculateItemLevel(store.getItem(prev)) === allowedLevel) {\n return up ? dropTarget.nextSiblingTarget(dndTaskId, prev, store) : dropTarget.prevSiblingTarget(dndTaskId, prev, store);\n } else {\n return dropTarget.firstChildTarget(dndTaskId, prev, store);\n }\n }\n\n return null;\n}\n\nfunction findTargetAbove(dndTaskId, taskId, allowedLevel, store) {\n return findClosesTarget(dndTaskId, taskId, allowedLevel, store, true);\n}\n\nfunction findTargetBelow(dndTaskId, taskId, allowedLevel, store) {\n return findClosesTarget(dndTaskId, taskId, allowedLevel, store, false);\n}\n\nmodule.exports = function getSameLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store, level) {\n var result;\n\n if (targetTaskId !== store.$getRootId()) {\n var targetTask = store.getItem(targetTaskId);\n var targetLevel = store.calculateItemLevel(targetTask);\n\n if (targetLevel === level) {\n var prevSibling = store.getPrevSibling(targetTaskId);\n\n if (relTargetPos < 0.5 && !prevSibling) {\n result = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n } else {\n if (relTargetPos < 0.5) {\n targetTaskId = prevSibling;\n }\n\n result = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n }\n } else if (targetLevel > level) {\n store.eachParent(function (parent) {\n if (store.calculateItemLevel(parent) === level) {\n targetTaskId = parent.id;\n }\n }, targetTask);\n result = findTargetAbove(dndTaskId, targetTaskId, level, store);\n } else {\n var targetAbove = findTargetAbove(dndTaskId, targetTaskId, level, store);\n var targetBelow = findTargetBelow(dndTaskId, targetTaskId, level, store);\n result = relTargetPos < 0.5 ? targetAbove : targetBelow;\n }\n } else {\n var rootId = store.$getRootId();\n var rootLevel = store.getChildren(rootId);\n result = dropTarget.createDropTargetObject();\n\n if (rootLevel.length && eventTop >= 0) {\n result = findTargetAbove(dndTaskId, getLast(store), level, store);\n } else {\n result = findTargetBelow(dndTaskId, rootId, level, store);\n }\n }\n\n return result;\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\n\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\n\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\n\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n var datastore = grid.$config.rowStore;\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task) || checkPlaceholderTask(id)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n dnd.config.marker.style.opacity = 0.4;\n element.style.position = \"static\";\n element.style.pointerEvents = \"none\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n dnd.config.level = store.calculateItemLevel(task);\n dnd.config.drop_target = dropTarget.createDropTargetObject({\n targetParent: store.getParent(task.id),\n targetIndex: store.getBranchIndex(task.id),\n targetId: task.id,\n nextSibling: true\n });\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n function getTargetTaskId(e) {\n var y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n var store = grid.$config.rowStore;\n\n if (!document.doctype) {\n y += window.scrollY;\n }\n\n y = y || 0; // limits for the marker according to the layout layer\n\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos + window.scrollY;\n var minTop = scrollPos;\n var firstVisibleTaskIndex = grid.getItemIndexByTopPosition(grid.$state.scrollTop);\n\n if (!store.exists(firstVisibleTaskIndex)) {\n firstVisibleTaskIndex = store.countVisible() - 1;\n }\n\n if (firstVisibleTaskIndex < 0) {\n return store.$getRootId();\n }\n\n var firstVisibleTaskId = store.getIdByIndex(firstVisibleTaskIndex);\n var firstVisibleTaskPos = grid.$state.scrollTop / grid.getItemHeight(firstVisibleTaskId);\n var hiddenTaskPart = firstVisibleTaskPos - Math.floor(firstVisibleTaskPos);\n\n if (hiddenTaskPart > 0.1 && hiddenTaskPart < 0.9) {\n maxBottom = maxBottom - grid.getItemHeight(firstVisibleTaskId) * hiddenTaskPart;\n minTop = minTop + grid.getItemHeight(firstVisibleTaskId) * (1 - hiddenTaskPart);\n } // GS-715. The placeholder task row shouldn't be draggable below the Gantt container\n\n\n var gridPosition = domHelpers.getNodePosition(grid.$grid_data);\n var gridBottom = gridPosition.y + gridPosition.height;\n var placeholderRowHeight = dnd.config.marker.offsetHeight;\n\n if (y + placeholderRowHeight + window.scrollY >= maxBottom) {\n dnd.config.marker.style.top = gridBottom - placeholderRowHeight + \"px\";\n }\n\n if (y >= maxBottom) {\n y = maxBottom;\n } else if (y <= minTop) {\n y = minTop;\n dnd.config.marker.style.top = gridPosition.y + \"px\";\n }\n\n var index = grid.getItemIndexByTopPosition(y);\n\n if (index > store.countVisible() - 1 || index < 0) {\n return store.$getRootId();\n }\n\n var targetId = store.getIdByIndex(index);\n\n if (checkPlaceholderTask(targetId)) {\n return store.getPrevSibling(targetId);\n }\n\n return store.getIdByIndex(index);\n }\n\n function getDropPosition(e) {\n var targetTaskId = getTargetTaskId(e);\n var relTargetPos = null;\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var lockLevel = !config.order_branch_free;\n var eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n if (!document.doctype) {\n eventTop += window.scrollY;\n }\n\n if (targetTaskId !== store.$getRootId()) {\n var rowTop = grid.getItemTop(targetTaskId);\n var rowHeight = grid.getItemHeight(targetTaskId);\n relTargetPos = (eventTop - rowTop) / rowHeight;\n }\n\n var result;\n\n if (!lockLevel) {\n result = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\n } else {\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\n if (result && result.targetParent && checkPlaceholderTask(result.targetParent)) {\n targetTaskId = store.getPrevSibling(result.targetParent);\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n }\n }\n\n return result;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var target = getDropPosition(e);\n\n if (!target || gantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n target = dropTarget.createDropTargetObject(dnd.config.drop_target);\n }\n\n higlighter.highlightPosition(target, dnd.config, grid);\n dnd.config.drop_target = target;\n\n gantt._waiAria.reorderMarkerAttr(dnd.config.marker);\n\n this.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n higlighter.removeLineHighlight(dnd.config);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n var target = dnd.config.drop_target;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n task.$drop_target = null;\n } else {\n store.move(dnd.config.id, target.targetIndex, target.targetParent);\n gantt.render();\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n }\n\n store.refresh(task.id);\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n if (checkPlaceholderTask(id)) return false;\n var datastore = getStore();\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n element.style.position = \"static\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n dnd.config.index = store.getBranchIndex(dnd.config.id);\n dnd.config.parent = task.parent;\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n dnd.lastTaskOfLevel = function (level) {\n var last_item = null;\n var store = getStore();\n var tasks = store.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n if (tasks[i].$level == level) {\n last_item = tasks[i];\n }\n }\n\n return last_item ? last_item.id : null;\n };\n\n dnd._getGridPos = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data); // row offset\n\n var x = pos.x + grid.$grid.scrollLeft;\n var y = e.pos.y - 10;\n var rowHeight = grid.getItemHeight(dnd.config.id); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n var maxBottom = pos.y + pos.height;\n\n if (y > maxBottom - rowHeight) {\n y = maxBottom - rowHeight;\n }\n\n pos.x = x;\n pos.y = y;\n return pos;\n }, gantt);\n dnd._getTargetY = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n var y = e.pageY - pos.y + scrollPos;\n\n if (y > maxBottom) {\n y = maxBottom;\n } else if (y < scrollPos) {\n y = scrollPos;\n }\n\n return y;\n }, gantt);\n dnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n var store = getStore();\n y = y || 0;\n var index = grid.getItemIndexByTopPosition(y);\n index = dropIndex < index ? index - 1 : index;\n if (index > store.countVisible() - 1) return null;\n return store.getIdByIndex(index);\n }, gantt);\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var gridDataSizes = gantt.$grid_data.getBoundingClientRect();\n var maxBottom = gridDataSizes.height + gridDataSizes.y + (grid.$state.scrollTop || 0) + window.scrollY;\n var dd = dnd.config;\n\n var pos = dnd._getGridPos(e);\n\n gantt._waiAria.reorderMarkerAttr(dd.marker);\n\n var config = grid.$getConfig(),\n store = getStore(); // setting position of row\n\n if (pos.y < maxBottom) {\n dd.marker.style.top = pos.y + \"px\";\n } else {\n dd.marker.style.top = maxBottom + \"px\";\n }\n\n dd.marker.style.left = pos.x + 10 + \"px\";\n var containerSize = domHelpers.getNodePosition(gantt.$root);\n\n if (pos.width > containerSize.width) {\n dd.marker.style.width = containerSize.width - 10 - 2 + \"px\";\n dd.marker.style.overflow = \"hidden\";\n } // highlight row when mouseover\n\n\n var item = store.getItem(dnd.config.id);\n\n var targetY = dnd._getTargetY(e);\n\n var el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n if (!store.exists(el)) {\n el = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\n if (el == dnd.config.id) {\n el = null;\n }\n }\n\n function allowedLevel(next, item) {\n return !store.isChildOf(over.id, item.id) && (next.$level == item.$level || config.order_branch_free);\n }\n\n if (store.exists(el)) {\n var over = store.getItem(el);\n var itemTop = grid.getItemTop(over.id);\n var itemHeight = grid.getItemHeight(over.id);\n\n if (itemTop + itemHeight / 2 < targetY) {\n //hovering over bottom part of item, check can be drop to bottom\n var index = store.getIndexById(over.id);\n var nextId = store.getNext(over.id); //adds +1 when hovering over placeholder\n\n var next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (next) {\n if (next.id != item.id) {\n over = next; //there is a valid target\n } else {\n if (config.order_branch_free) {\n if (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1)) return;else {\n store.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n return;\n }\n } else {\n return;\n }\n }\n } else {\n //we at end of the list, check and drop at the end of list\n nextId = store.getIdByIndex(index);\n next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (allowedLevel(next, item) && next.id != item.id) {\n store.move(item.id, -1, store.getParent(next.id));\n return;\n }\n }\n } else if (config.order_branch_free) {\n if (over.id != item.id && allowedLevel(over, item) && !checkPlaceholderTask(over.id)) {\n if (!store.hasChild(over.id)) {\n over.$open = true;\n store.move(item.id, -1, over.id);\n return;\n }\n\n if (store.getIndexById(over.id) || itemHeight / 3 < targetY) return;\n }\n } //if item is on different level, check the one before it\n\n\n var index = store.getIndexById(over.id),\n prevId = store.getIdByIndex(index - 1);\n var prev = store.getItem(prevId);\n var shift = 1;\n\n while ((!prev || prev.id == over.id) && index - shift >= 0) {\n prevId = store.getIdByIndex(index - shift);\n prev = store.getItem(prevId);\n shift++;\n }\n\n if (item.id == over.id || checkPlaceholderTask(over.id)) return; //replacing item under cursor\n\n if (allowedLevel(over, item) && item.id != over.id) {\n store.move(item.id, 0, 0, over.id);\n } else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n store.move(item.id, 0, over.id);\n } else if (prev && allowedLevel(prev, item) && item.id != prev.id) {\n store.move(item.id, -1, store.getParent(prev.id));\n }\n }\n\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n store.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n task.$drop_target = null;\n } else {\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n }\n\n gantt.render();\n this.refreshData();\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\n\nvar rowDnd = require(\"./tasks_grid_dnd\");\n\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n onCreated: function onCreated(grid) {\n grid.$config = utils.mixin(grid.$config, {\n bind: \"task\"\n });\n\n if (grid.$config.id == \"grid\") {\n this.extendGantt(grid);\n gantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n gantt.ext.inlineEditors.init();\n }\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(grid) {\n var config = grid.$getConfig();\n\n if (config.order_branch) {\n if (config.order_branch == \"marker\") {\n rowDndMarker.init(grid.$gantt, grid);\n } else {\n rowDnd.init(grid.$gantt, grid);\n }\n }\n\n this.initEvents(grid, gantt);\n\n if (grid.$config.id == \"grid\") {\n this.extendDom(grid);\n }\n },\n onDestroyed: function onDestroyed(grid) {\n if (grid.$config.id == \"grid\") {\n gantt.ext.inlineEditors.destructor();\n }\n\n this.clearEvents(grid, gantt);\n },\n initEvents: function initEvents(grid, gantt) {\n this._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n\n if (id !== null) {\n var task = this.getTask(id);\n if (config.scroll_on_click && !gantt._is_icon_open_click(e)) this.showDate(task.start_date);\n gantt.callEvent(\"onTaskRowClick\", [id, trg]);\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n var column = trg.getAttribute(\"data-column-id\");\n if (!gantt.callEvent(\"onGridHeaderClick\", [column, e])) return;\n var config = grid.$getConfig();\n\n if (column == \"add\") {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n return;\n }\n\n if (config.sort && column) {\n // GS-929: if there is no column name, we cannot sort the column\n var sorting_method = column,\n conf;\n\n for (var i = 0; i < config.columns.length; i++) {\n if (config.columns[i].name == column) {\n conf = config.columns[i];\n break;\n }\n }\n\n if (conf && conf.sort !== undefined && conf.sort !== true) {\n sorting_method = conf.sort;\n\n if (!sorting_method) {\n // column sort property 'false', no sorting\n return;\n }\n }\n\n var sort = this._sort && this._sort.direction && this._sort.name == column ? this._sort.direction : \"desc\"; // invert sort direction\n\n sort = sort == \"desc\" ? \"asc\" : \"desc\";\n this._sort = {\n name: column,\n direction: sort\n };\n this.sort(sorting_method, sort == \"desc\");\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n if (config.readonly) return;\n var item = {};\n this.createTask(item, id ? id : gantt.config.root_id);\n return false;\n }, gantt), grid.$grid);\n },\n clearEvents: function clearEvents(grid, gantt) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n extendDom: function extendDom(grid) {\n gantt.$grid = grid.$grid;\n gantt.$grid_scale = grid.$grid_scale;\n gantt.$grid_data = grid.$grid_data;\n },\n extendGantt: function extendGantt(grid) {\n gantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n grid.attachEvent(\"onColumnResizeStart\", function () {\n return gantt.callEvent(\"onColumnResizeStart\", arguments);\n });\n grid.attachEvent(\"onColumnResize\", function () {\n return gantt.callEvent(\"onColumnResize\", arguments);\n });\n grid.attachEvent(\"onColumnResizeEnd\", function () {\n return gantt.callEvent(\"onColumnResizeEnd\", arguments);\n });\n grid.attachEvent(\"onColumnResizeComplete\", function (columns, totalWidth) {\n gantt.config.grid_width = totalWidth;\n });\n grid.attachEvent(\"onBeforeRowResize\", function () {\n return gantt.callEvent(\"onBeforeRowResize\", arguments);\n });\n grid.attachEvent(\"onRowResize\", function () {\n return gantt.callEvent(\"onRowResize\", arguments);\n });\n grid.attachEvent(\"onBeforeRowResizeEnd\", function () {\n return gantt.callEvent(\"onBeforeRowResizeEnd\", arguments);\n });\n grid.attachEvent(\"onAfterRowResize\", function () {\n return gantt.callEvent(\"onAfterRowResize\", arguments);\n });\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridTaskRowResizerRender(gantt) {\n function _render_grid_item(item, view, viewport) {\n var config = view.$getConfig();\n var resize_el = document.createElement(\"div\");\n resize_el.className = \"gantt_task_grid_row_resize_wrap\";\n resize_el.style.top = view.getItemTop(item.id) + view.getItemHeight(item.id) + \"px\";\n resize_el.innerHTML = \"<div class='gantt_task_grid_row_resize' role='cell'></div>\";\n resize_el.setAttribute(config.task_grid_row_resizer_attribute, item.id);\n\n gantt._waiAria.rowResizerAttr(resize_el);\n\n return resize_el;\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createGridTaskRowResizerRender;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction renderBar(level, start, end, timeline) {\n var top = (1 - (level * 1 || 0)) * 100;\n var left = timeline.posFromDate(start);\n var right = timeline.posFromDate(end);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_hor_bar\";\n element.style.top = top + '%';\n element.style.left = left + \"px\";\n element.style.width = right - left + 1 + \"px\";\n return element;\n}\n\nfunction renderConnection(prevLevel, nextLevel, left) {\n if (prevLevel === nextLevel) {\n return null;\n }\n\n var top = 1 - Math.max(prevLevel, nextLevel);\n var height = Math.abs(prevLevel - nextLevel);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_vert_bar\";\n element.style.top = top * 100 + \"%\";\n element.style.height = height * 100 + \"%\";\n element.style.left = left + \"px\";\n return element;\n}\n\nfunction generateRenderResourceHistogram(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedHistogramCells = {};\n var renderedHistogramRows = {};\n var renderedHistogramCapacity = {};\n\n function detachRenderedHistogramCell(id, index) {\n var renderedRow = renderedHistogramCells[id];\n\n if (renderedRow && renderedRow[index] && renderedRow[index].parentNode) {\n renderedRow[index].parentNode.removeChild(renderedRow[index]);\n }\n }\n\n function renderHistogramLine(capacity, timeline, maxCapacity, viewport) {\n var scale = timeline.getScale();\n var el = document.createElement(\"div\");\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var i = range.start; i <= range.end; i++) {\n var colStart = scale.trace_x[i];\n var colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n var col = scale.trace_x[i].valueOf();\n var level = Math.min(capacity[col] / maxCapacity, 1) || 0; // do not render histogram for lines with below zero capacity, as it's reserved for folders\n\n if (level < 0) {\n return null;\n }\n\n var nextLevel = Math.min(capacity[colEnd.valueOf()] / maxCapacity, 1) || 0;\n var bar = renderBar(level, colStart, colEnd, timeline);\n\n if (bar) {\n el.appendChild(bar);\n }\n\n var connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\n if (connection) {\n el.appendChild(connection);\n }\n }\n\n return el;\n }\n\n function renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport) {\n var renderedElement = renderedHistogramCapacity[resource.id];\n\n if (renderedElement && renderedElement.parentNode) {\n renderedElement.parentNode.removeChild(renderedElement);\n }\n\n var capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\n\n if (capacityElement && sizes) {\n capacityElement.setAttribute(\"data-resource-id\", resource.id);\n capacityElement.setAttribute(timeline.$config.item_attribute, resource.id);\n capacityElement.style.position = \"absolute\";\n capacityElement.style.top = sizes.top + 1 + \"px\";\n capacityElement.style.height = timeline.getItemHeight(resource.id) - 1 + \"px\";\n capacityElement.style.left = 0;\n }\n\n return capacityElement;\n }\n\n function renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline) {\n var css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var el = document.createElement('div');\n el.className = [\"gantt_histogram_cell\", css].join(\" \");\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + (sizes.top + 1) + 'px'].join(\";\");\n\n if (content) {\n content = \"<div class='gantt_histogram_label'>\" + content + \"</div>\";\n }\n\n if (fill) {\n content = \"<div class='gantt_histogram_fill' style='height:\" + Math.min(fill / maxCapacity || 0, 1) * 100 + \"%;'></div>\" + content;\n }\n\n if (content) {\n el.innerHTML = content;\n }\n\n return el;\n }\n\n return null;\n }\n\n function renderResourceHistogram(resource, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n var cells = [];\n var capacityMatrix = {};\n var maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n renderedHistogramCells[resource.id] = {};\n renderedHistogramRows[resource.id] = null;\n renderedHistogramCapacity[resource.id] = null;\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n\n if (!day) {\n continue;\n }\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n continue;\n }\n\n var capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n capacityMatrix[day.start_date.valueOf()] = capacity || 0;\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n var el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\n if (el) {\n cells.push(el);\n renderedHistogramCells[resource.id][columnIndex] = el;\n }\n }\n\n var row = null;\n\n if (cells.length) {\n row = document.createElement(\"div\");\n\n for (var i = 0; i < cells.length; i++) {\n row.appendChild(cells[i]);\n }\n\n var capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\n if (capacityElement) {\n row.appendChild(capacityElement);\n renderedHistogramCapacity[resource.id] = capacityElement;\n }\n\n renderedHistogramRows[resource.id] = row;\n }\n\n return row;\n }\n\n function updateResourceHistogram(resource, node, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n var maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n var capacityMatrix = {};\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var range = getVisibleCellsRange(scale, viewport);\n var checkedColumns = {};\n\n if (renderedHistogramCells && renderedHistogramCells[resource.id]) {\n for (var i in renderedHistogramCells[resource.id]) {\n checkedColumns[i] = i;\n }\n }\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n checkedColumns[columnIndex] = false;\n\n if (!day) {\n continue;\n }\n\n var capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n capacityMatrix[day.start_date.valueOf()] = capacity || 0;\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n detachRenderedHistogramCell(resource.id, columnIndex);\n continue;\n }\n\n var renderedCell = renderedHistogramCells[resource.id];\n\n if (!renderedCell || !renderedCell[columnIndex]) {\n var el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\n if (el) {\n node.appendChild(el);\n renderedHistogramCells[resource.id][columnIndex] = el;\n }\n } else if (renderedCell && renderedCell[columnIndex] && !renderedCell[columnIndex].parentNode) {\n node.appendChild(renderedCell[columnIndex]);\n }\n }\n\n for (var i in checkedColumns) {\n if (checkedColumns[i] !== false) {\n detachRenderedHistogramCell(resource.id, i);\n }\n }\n\n var capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\n if (capacityElement) {\n node.appendChild(capacityElement);\n renderedHistogramCapacity[resource.id] = capacityElement;\n }\n }\n\n return {\n render: renderResourceHistogram,\n update: updateResourceHistogram,\n getRectangle: getRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = generateRenderResourceHistogram;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction generateRenderResourceLine(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedResourceLines = {};\n\n function renderResourceLineCell(resource, day, templates, config, timeline) {\n var css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n var el = document.createElement('div');\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.className = [\"gantt_resource_marker\", css].join(\" \");\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + sizes.top + 'px'].join(\";\");\n if (content) el.innerHTML = content;\n return el;\n }\n\n return null;\n }\n\n function detachRenderedResourceLine(id, index) {\n if (renderedResourceLines[id] && renderedResourceLines[id][index] && renderedResourceLines[id][index].parentNode) {\n renderedResourceLines[id][index].parentNode.removeChild(renderedResourceLines[id][index]);\n }\n }\n\n function renderResourceLine(resource, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var cells = [];\n renderedResourceLines[resource.id] = {};\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n\n if (!day) {\n continue;\n }\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n continue;\n }\n\n var cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\n if (cell) {\n cells.push(cell);\n renderedResourceLines[resource.id][columnIndex] = cell;\n }\n }\n\n var row = null;\n\n if (cells.length) {\n row = document.createElement(\"div\");\n\n for (var i = 0; i < cells.length; i++) {\n row.appendChild(cells[i]);\n }\n }\n\n return row;\n }\n\n function updateResourceLine(resource, node, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n var range = getVisibleCellsRange(scale, viewport);\n var checkedColumns = {};\n\n if (renderedResourceLines && renderedResourceLines[resource.id]) {\n for (var i in renderedResourceLines[resource.id]) {\n checkedColumns[i] = i;\n }\n }\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n checkedColumns[columnIndex] = false;\n\n if (!day) {\n continue;\n }\n\n if (!isColumnVisible(columnIndex, scale, viewport, gantt)) {\n detachRenderedResourceLine(resource.id, columnIndex);\n continue;\n }\n\n if (!renderedResourceLines[resource.id] || !renderedResourceLines[resource.id][columnIndex]) {\n var cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\n if (cell) {\n node.appendChild(cell);\n renderedResourceLines[resource.id][columnIndex] = cell;\n }\n } else if (renderedResourceLines[resource.id] && renderedResourceLines[resource.id][columnIndex] && !renderedResourceLines[resource.id][columnIndex].parentNode) {\n node.appendChild(renderedResourceLines[resource.id][columnIndex]);\n }\n }\n\n for (var i in checkedColumns) {\n if (checkedColumns[i] !== false) {\n detachRenderedResourceLine(resource.id, i);\n }\n }\n }\n\n return {\n render: renderResourceLine,\n update: updateResourceLine,\n getRectangle: getRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = generateRenderResourceLine;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"../../../utils/helpers\");\n\nvar getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridLineRender(gantt) {\n function _render_grid_item(item, view, config, viewport) {\n var columns = view.getGridColumns();\n var templates = view.$getTemplates();\n var store = view.$config.rowStore;\n var cells = [];\n var has_child;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i];\n var cell;\n var value;\n var textValue;\n\n if (col.name == \"add\") {\n var aria = gantt._waiAria.gridAddButtonAttrString(col);\n\n value = \"<div \" + aria + \" class='gantt_add'></div>\";\n textValue = \"\";\n } else {\n if (col.template) value = col.template(item);else value = item[col.name];\n\n if (helpers.isDate(value)) {\n value = templates.date_grid(value, item, col.name);\n }\n\n if (value === null || value === undefined) {\n value = \"\";\n }\n\n textValue = value;\n value = \"<div class='gantt_tree_content'>\" + value + \"</div>\";\n }\n\n var css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\n var tree = [];\n\n if (col.tree) {\n css += \" gantt_cell_tree\";\n\n for (var j = 0; j < item.$level; j++) {\n tree.push(templates.grid_indent(item));\n }\n\n has_child = store.hasChild(item.id) && !(gantt.isSplitTask(item) && !gantt.config.open_split_tasks);\n\n if (has_child) {\n tree.push(templates.grid_open(item));\n tree.push(templates.grid_folder(item));\n } else {\n tree.push(templates.grid_blank(item));\n tree.push(templates.grid_file(item));\n }\n }\n\n var style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\n\n if (this.defined(col.align)) {\n var flexAlign = {\n right: \"flex-end\",\n left: \"flex-start\",\n center: \"center\"\n };\n var justifyContent = flexAlign[col.align];\n style += \"text-align:\" + col.align + \";justify-content:\" + justifyContent + \";\";\n }\n\n var aria = gantt._waiAria.gridCellAttrString(col, textValue, item);\n\n tree.push(value);\n cell = \"<div class='\" + css + \"' data-column-index='\" + i + \"' data-column-name='\" + col.name + \"' style='\" + style + \"' \" + aria + \">\" + tree.join(\"\") + \"</div>\";\n cells.push(cell);\n } // GS-291. The odd class should be assigned correctly\n\n\n css = \"\";\n var storeName = store.$config.name;\n\n switch (storeName) {\n case \"task\":\n css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n break;\n\n case \"resource\":\n css = store.visibleOrder.indexOf(item.id) % 2 === 0 ? \"\" : \" odd\";\n break;\n }\n\n css += item.$transparent ? \" gantt_transparent\" : \"\";\n css += item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\";\n\n if (templates.grid_row_class) {\n var css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n if (css_template) css += \" \" + css_template;\n }\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n var height = view.getItemHeight(item.id);\n el.style.height = height + \"px\";\n el.style.lineHeight = height + \"px\";\n\n if (config.smart_rendering) {\n el.style.position = \"absolute\";\n el.style.left = \"0px\";\n el.style.top = view.getItemTop(item.id) + \"px\";\n }\n\n if (view.$config.item_attribute) {\n el.setAttribute(view.$config.item_attribute, item.id);\n el.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n gantt._waiAria.taskRowAttr(item, el);\n\n el.innerHTML = cells.join(\"\");\n return el;\n }\n\n function onrender(item, rowNode, view) {\n var columns = view.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n var column = columns[i];\n\n if (column.onrender) {\n // find cell node for current column\n var cellNode = rowNode.querySelector(\"[data-column-name=\" + column.name + \"]\");\n\n if (cellNode) {\n var content = column.onrender(item, cellNode);\n\n if (content && typeof content === \"string\") {\n cellNode.innerHTML = content;\n } else if (content && _typeof(content) === \"object\") {\n // render object to node using additional functionality\n if (gantt.config.external_render) {\n var adapter = gantt.config.external_render;\n\n if (adapter.isElement(content)) {\n adapter.renderElement(content, cellNode);\n }\n }\n }\n }\n }\n }\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n onrender: onrender\n };\n}\n\nmodule.exports = createGridLineRender;","var isInViewPort = require(\"./viewport/is_link_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/factory/get_visible_link_range\");\n\nfunction createLinkRender(gantt) {\n function _render_link_element(link, view, config) {\n var source = gantt.getTask(link.source);\n\n if (source.hide_bar) {\n return;\n }\n\n var target = gantt.getTask(link.target);\n\n if (target.hide_bar) {\n return;\n }\n\n var pt = path_builder.get_endpoint(link, view, source, target);\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n\n if (!dx && !dy) {\n return null;\n }\n\n var dots = path_builder.get_points(link, view, source, target);\n var lines = drawer.get_lines(dots, view);\n var div = document.createElement(\"div\");\n var css = \"gantt_task_link\";\n\n if (link.color) {\n css += \" gantt_link_inline_color\";\n }\n\n var cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\n if (cssTemplate) {\n css += \" \" + cssTemplate;\n }\n\n if (config.highlight_critical_path && gantt.isCriticalLink) {\n if (gantt.isCriticalLink(link)) css += \" gantt_critical_link\";\n }\n\n div.className = css;\n\n if (view.$config.link_attribute) {\n div.setAttribute(view.$config.link_attribute, link.id);\n div.setAttribute(\"link_id\", link.id);\n }\n\n for (var i = 0; i < lines.length; i++) {\n if (i == lines.length - 1) {\n lines[i].size -= config.link_arrow_size;\n }\n\n var el = drawer.render_line(lines[i], lines[i + 1], view, link.source);\n\n if (link.color) {\n el.firstChild.style.backgroundColor = link.color;\n }\n\n div.appendChild(el);\n }\n\n var direction = lines[lines.length - 1].direction;\n\n var endpoint = _render_link_arrow(dots[dots.length - 1], direction, view, link.source);\n\n if (link.color) {\n endpoint.style.borderColor = link.color;\n }\n\n div.appendChild(endpoint);\n\n gantt._waiAria.linkAttr(link, div);\n\n return div;\n }\n\n function _render_link_arrow(point, direction, view, targetId) {\n var config = view.$getConfig();\n var div = document.createElement(\"div\");\n var top = point.y;\n var left = point.x;\n var size = config.link_arrow_size;\n var className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\n switch (direction) {\n case drawer.dirs.right:\n top -= size / 2;\n left -= size;\n break;\n\n case drawer.dirs.left:\n top -= size / 2;\n break;\n\n case drawer.dirs.up:\n left -= size;\n break;\n\n case drawer.dirs.down:\n top += size * 2;\n left -= size;\n break;\n\n default:\n break;\n }\n\n div.style.cssText = [\"top:\" + top + \"px\", \"left:\" + left + 'px'].join(';');\n div.className = className;\n return div;\n }\n\n var drawer = {\n current_pos: null,\n dirs: {\n \"left\": 'left',\n \"right\": 'right',\n \"up\": 'up',\n \"down\": 'down'\n },\n path: [],\n clear: function clear() {\n this.current_pos = null;\n this.path = [];\n },\n point: function point(pos) {\n this.current_pos = gantt.copy(pos);\n },\n get_lines: function get_lines(dots) {\n this.clear();\n this.point(dots[0]);\n\n for (var i = 1; i < dots.length; i++) {\n this.line_to(dots[i]);\n }\n\n return this.get_path();\n },\n line_to: function line_to(pos) {\n var next = gantt.copy(pos);\n var prev = this.current_pos;\n\n var line = this._get_line(prev, next);\n\n this.path.push(line);\n this.current_pos = next;\n },\n get_path: function get_path() {\n return this.path;\n },\n get_wrapper_sizes: function get_wrapper_sizes(v, view, itemId) {\n var config = view.$getConfig();\n var res,\n wrapper_size = config.link_wrapper_width,\n y = v.y - wrapper_size / 2;\n\n switch (v.direction) {\n case this.dirs.left:\n res = {\n top: y,\n height: wrapper_size,\n lineHeight: wrapper_size,\n left: v.x - v.size - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.right:\n res = {\n top: y,\n lineHeight: wrapper_size,\n height: wrapper_size,\n left: v.x - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.up:\n res = {\n top: y - v.size,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n case this.dirs.down:\n res = {\n top: y\n /*- wrapper_size/2*/\n ,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n get_line_sizes: function get_line_sizes(v, view) {\n var config = view.$getConfig();\n var res,\n line_size = config.link_line_width,\n wrapper_size = config.link_wrapper_width,\n size = v.size + line_size;\n\n switch (v.direction) {\n case this.dirs.left:\n case this.dirs.right:\n res = {\n height: line_size,\n width: size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n case this.dirs.up:\n case this.dirs.down:\n res = {\n height: size,\n width: line_size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n render_line: function render_line(v, end, view, itemId) {\n var pos = this.get_wrapper_sizes(v, view, itemId);\n var wrapper = document.createElement(\"div\");\n wrapper.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"height:\" + pos.height + \"px\", \"width:\" + pos.width + \"px\"].join(';');\n wrapper.className = \"gantt_line_wrapper\";\n var innerPos = this.get_line_sizes(v, view);\n var inner = document.createElement(\"div\");\n inner.style.cssText = [\"height:\" + innerPos.height + \"px\", \"width:\" + innerPos.width + \"px\", \"margin-top:\" + innerPos.marginTop + \"px\", \"margin-left:\" + innerPos.marginLeft + \"px\"].join(\";\");\n inner.className = \"gantt_link_line_\" + v.direction;\n wrapper.appendChild(inner);\n return wrapper;\n },\n _get_line: function _get_line(from, to) {\n var direction = this.get_direction(from, to);\n var vect = {\n x: from.x,\n y: from.y,\n direction: this.get_direction(from, to)\n };\n\n if (direction == this.dirs.left || direction == this.dirs.right) {\n vect.size = Math.abs(from.x - to.x);\n } else {\n vect.size = Math.abs(from.y - to.y);\n }\n\n return vect;\n },\n get_direction: function get_direction(from, to) {\n var direction = 0;\n\n if (to.x < from.x) {\n direction = this.dirs.left;\n } else if (to.x > from.x) {\n direction = this.dirs.right;\n } else if (to.y > from.y) {\n direction = this.dirs.down;\n } else {\n direction = this.dirs.up;\n }\n\n return direction;\n }\n };\n var path_builder = {\n path: [],\n clear: function clear() {\n this.path = [];\n },\n current: function current() {\n return this.path[this.path.length - 1];\n },\n point: function point(next) {\n if (!next) return this.current();\n this.path.push(gantt.copy(next));\n return next;\n },\n point_to: function point_to(direction, diff, point) {\n if (!point) point = gantt.copy(this.point());else point = {\n x: point.x,\n y: point.y\n };\n var dir = drawer.dirs;\n\n switch (direction) {\n case dir.left:\n point.x -= diff;\n break;\n\n case dir.right:\n point.x += diff;\n break;\n\n case dir.up:\n point.y -= diff;\n break;\n\n case dir.down:\n point.y += diff;\n break;\n\n default:\n break;\n }\n\n return this.point(point);\n },\n get_points: function get_points(link, view, source, target) {\n var pt = this.get_endpoint(link, view, source, target);\n var xy = gantt.config;\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n var dir = drawer.dirs;\n var rowHeight = view.getItemHeight(link.source);\n this.clear();\n this.point({\n x: pt.x,\n y: pt.y\n });\n var shiftX = 2 * xy.link_arrow_size; //just random size for first line\n\n var lineType = this.get_line_type(link, view.$getConfig());\n var forward = pt.e_x > pt.x;\n\n if (lineType.from_start && lineType.to_start) {\n this.point_to(dir.left, shiftX);\n\n if (forward) {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n }\n\n this.point_to(dir.right, shiftX);\n } else if (!lineType.from_start && lineType.to_start) {\n forward = pt.e_x > pt.x + 2 * shiftX;\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n dx -= shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx -= 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.right, shiftX);\n }\n } else if (!lineType.from_start && !lineType.to_start) {\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n } else {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n }\n\n this.point_to(dir.left, shiftX);\n } else if (lineType.from_start && !lineType.to_start) {\n forward = pt.e_x > pt.x - 2 * shiftX;\n this.point_to(dir.left, shiftX);\n\n if (!forward) {\n dx += shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx += 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.left, shiftX);\n }\n }\n\n return this.path;\n },\n get_line_type: function get_line_type(link, config) {\n var types = config.links;\n var from_start = false,\n to_start = false;\n\n if (link.type == types.start_to_start) {\n from_start = to_start = true;\n } else if (link.type == types.finish_to_finish) {\n from_start = to_start = false;\n } else if (link.type == types.finish_to_start) {\n from_start = false;\n to_start = true;\n } else if (link.type == types.start_to_finish) {\n from_start = true;\n to_start = false;\n } else {\n gantt.assert(false, \"Invalid link type\");\n }\n\n if (config.rtl) {\n from_start = !from_start;\n to_start = !to_start;\n }\n\n return {\n from_start: from_start,\n to_start: to_start\n };\n },\n get_endpoint: function get_endpoint(link, view, source, target) {\n var config = view.$getConfig();\n var lineType = this.get_line_type(link, config);\n var from_start = lineType.from_start,\n to_start = lineType.to_start;\n var from = getMilestonePosition(source, view, config),\n to = getMilestonePosition(target, view, config);\n return {\n x: from_start ? from.left : from.left + from.width,\n e_x: to_start ? to.left : to.left + to.width,\n y: from.top + from.rowHeight / 2 - 1,\n e_y: to.top + to.rowHeight / 2 - 1\n };\n }\n };\n\n function getMilestonePosition(task, view, config) {\n var pos = view.getItemPosition(task);\n\n if (gantt.getTaskType(task.type) == config.types.milestone) {\n var milestoneHeight = view.getBarHeight(task.id, true);\n var milestoneWidth = Math.sqrt(2 * milestoneHeight * milestoneHeight);\n pos.left -= milestoneWidth / 2;\n pos.width = milestoneWidth;\n }\n\n return pos;\n }\n\n return {\n render: _render_link_element,\n update: null,\n //getRectangle: getLinkRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange()\n };\n}\n\nmodule.exports = createLinkRender;","module.exports = function (items, gantt) {\n var placeholderConfig = gantt.config.timeline_placeholder;\n items = items || [];\n\n if (placeholderConfig && items.filter(function (e) {\n return e.id === 'timeline_placeholder_task';\n }).length === 0) {\n var state = gantt.getState();\n var lastTaskId = null;\n var start_date = state.min_date;\n var end_date = state.max_date;\n\n if (items.length) {\n lastTaskId = items[items.length - 1].id;\n }\n\n var placeholderTask = {\n start_date: start_date,\n end_date: end_date,\n row_height: placeholderConfig.height || 0,\n id: \"timeline_placeholder_task\",\n unscheduled: true,\n lastTaskId: lastTaskId,\n calendar_id: placeholderConfig.calendar || \"global\",\n $source: [],\n $target: []\n };\n items.push(placeholderTask);\n }\n};","var getRowRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar bgPlaceholder = require(\"./prerender/task_bg_placeholder\");\n\nfunction createTaskBgRender(gantt) {\n var renderedCells = {};\n var visibleCells = {};\n\n function isRendered(item, columnIndex) {\n if (renderedCells[item.id][columnIndex] && renderedCells[item.id][columnIndex].parentNode) {\n return true;\n } else {\n return false;\n }\n }\n\n function detachRenderedCell(itemId, columnIndex) {\n if (renderedCells[itemId] && renderedCells[itemId][columnIndex] && renderedCells[itemId][columnIndex].parentNode) {\n renderedCells[itemId][columnIndex].parentNode.removeChild(renderedCells[itemId][columnIndex]);\n }\n }\n\n function getCellClassTemplate(view) {\n var templates = view.$getTemplates();\n var cssTemplate;\n\n if (typeof templates.task_cell_class !== \"undefined\") {\n cssTemplate = templates.task_cell_class; // eslint-disable-next-line no-console\n\n var log = console.warn || console.log;\n log('gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.');\n } else {\n cssTemplate = templates.timeline_cell_class;\n }\n\n return cssTemplate;\n }\n\n function getCellContentTemplate(view) {\n var templates = view.$getTemplates();\n var contentTemplate = templates.timeline_cell_content;\n return contentTemplate;\n }\n\n function renderCells(item, node, view, config, viewPort) {\n var cfg = view.getScale();\n var count = cfg.count;\n var cssTemplate = getCellClassTemplate(view);\n var contentTemplate = getCellContentTemplate(view);\n\n if (config.show_task_cells) {\n if (!renderedCells[item.id]) {\n renderedCells[item.id] = {};\n }\n\n if (!visibleCells[item.id]) {\n visibleCells[item.id] = {};\n }\n\n var range = getVisibleCellsRange(cfg, viewPort);\n\n for (var i in visibleCells[item.id]) {\n var index = visibleCells[item.id][i];\n\n if (Number(index) < range.start || Number(index) > range.end) {\n detachRenderedCell(item.id, index);\n }\n }\n\n visibleCells[item.id] = {}; // TODO: do not iterate all cell, only ones in the viewport and once that are already rendered\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cssTemplate, contentTemplate, config);\n\n if (!cell && isRendered(item, columnIndex)) {\n detachRenderedCell(item.id, columnIndex);\n } else if (cell && !cell.parentNode) {\n node.appendChild(cell);\n }\n }\n }\n }\n\n function renderOneCell(scale, columnIndex, item, viewPort, count, cssTemplate, contentTemplate, config) {\n var width = scale.width[columnIndex],\n cssclass = \"\";\n\n if (isColumnVisible(columnIndex, scale, viewPort, gantt)) {\n //do not render skipped columns\n var cssTemplateContent = cssTemplate(item, scale.trace_x[columnIndex]);\n var htmlTemplateContent = \"\";\n\n if (contentTemplate) {\n // for backward compatibility, contentTemplate was added in 7.2.0+, will be undefined if someone used copy of old config/template object\n htmlTemplateContent = contentTemplate(item, scale.trace_x[columnIndex]);\n }\n\n if (config.static_background) {\n // if cell render in static background is not allowed, or if it's a blank cell\n var customCell = !!(cssTemplateContent || htmlTemplateContent);\n\n if (!(config.static_background_cells && customCell)) {\n return null;\n }\n }\n\n if (renderedCells[item.id][columnIndex]) {\n visibleCells[item.id][columnIndex] = columnIndex;\n return renderedCells[item.id][columnIndex];\n }\n\n var cell = document.createElement(\"div\");\n cell.style.width = width + \"px\";\n cssclass = \"gantt_task_cell\" + (columnIndex == count - 1 ? \" gantt_last_cell\" : \"\");\n\n if (cssTemplateContent) {\n cssclass += \" \" + cssTemplateContent;\n }\n\n cell.className = cssclass;\n\n if (htmlTemplateContent) {\n cell.innerHTML = htmlTemplateContent;\n }\n\n cell.style.position = \"absolute\";\n cell.style.left = scale.left[columnIndex] + \"px\";\n renderedCells[item.id][columnIndex] = cell;\n visibleCells[item.id][columnIndex] = columnIndex;\n return cell;\n }\n\n return null;\n }\n\n function _render_bg_line(item, view, config, viewPort) {\n var templates = view.$getTemplates();\n var cfg = view.getScale();\n var count = cfg.count;\n\n if (config.static_background && !config.static_background_cells) {\n return null;\n }\n\n var row = document.createElement(\"div\");\n var cellCssTemplate = getCellClassTemplate(view);\n var cellHtmlTemplate = getCellContentTemplate(view);\n var range;\n\n if (!viewPort || !config.smart_rendering || isLegacyRender(gantt)) {\n range = {\n start: 0,\n end: count - 1\n };\n } else {\n range = getVisibleCellsRange(cfg, viewPort.x);\n }\n\n if (config.show_task_cells) {\n renderedCells[item.id] = {};\n visibleCells[item.id] = {};\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cellCssTemplate, cellHtmlTemplate, config);\n\n if (cell) {\n row.appendChild(cell);\n }\n }\n } // GS-291. The odd class should be assigned correctly\n\n\n var store = view.$config.rowStore;\n var odd = store.getIndexById(item.id) % 2 !== 0;\n var cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n var css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n row.className = css;\n\n if (config.smart_rendering) {\n row.style.position = \"absolute\";\n row.style.top = view.getItemTop(item.id) + \"px\";\n row.style.width = \"100%\";\n } else {\n row.style.position = \"relative\";\n }\n\n row.style.height = view.getItemHeight(item.id) + \"px\";\n\n if (item.id == \"timeline_placeholder_task\") {\n var placeholderTop = 0;\n\n if (item.lastTaskId) {\n var lastTaskTop = view.getItemTop(item.lastTaskId);\n var lastTaskHeight = view.getItemHeight(item.lastTaskId);\n placeholderTop = lastTaskTop + lastTaskHeight;\n }\n\n var maxHeight = item.row_height || view.$task_data.offsetHeight;\n var placeholderHeight = maxHeight - placeholderTop; // So that it won't exceed the placeholder timeline height\n\n if (placeholderHeight < 0) {\n placeholderHeight = 0;\n }\n\n if (config.smart_rendering) {\n row.style.top = placeholderTop + \"px\";\n }\n\n row.style.height = placeholderHeight + \"px\";\n }\n\n if (view.$config.item_attribute) {\n row.setAttribute(view.$config.item_attribute, item.id);\n row.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n return row;\n }\n\n return {\n render: _render_bg_line,\n update: renderCells,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n prepareData: bgPlaceholder\n };\n}\n\nmodule.exports = createTaskBgRender;","var createBaseBarRender = require(\"./task_bar_render\");\n\nvar isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n var renderedNodes = {};\n\n function checkVisibility(child, viewPort, timeline, config, gantt) {\n var isVisible = true; // GS-2123. Don't render rollup tasks that are outside the viewport\n\n if (config.smart_rendering) {\n isVisible = isInViewPort(child, viewPort, timeline, config, gantt);\n }\n\n return isVisible;\n }\n\n function generateChildElement(task, child, timeline, sizes) {\n var childCopy = gantt.copy(gantt.getTask(child.id));\n childCopy.$rendered_at = task.id; // a way to filter rollup tasks:\n\n var displayRollup = gantt.callEvent(\"onBeforeRollupTaskDisplay\", [childCopy.id, childCopy, task.id]);\n\n if (displayRollup === false) {\n return;\n }\n\n var element = defaultRender(childCopy, timeline);\n\n if (!element) {\n return;\n }\n\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_rollup_child\");\n element.setAttribute(\"data-rollup-parent-id\", task.id);\n return element;\n }\n\n function getKey(childId, renderParentId) {\n return childId + \"_\" + renderParentId;\n }\n\n function renderRollupTask(task, timeline, config, viewPort) {\n if (task.rollup !== false && task.$rollup && task.$rollup.length) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered\n\n viewPort.y = 0;\n viewPort.y_end = gantt.$task_bg.scrollHeight;\n task.$rollup.forEach(function (itemId) {\n if (!gantt.isTaskExists(itemId)) {\n return;\n }\n\n var child = gantt.getTask(itemId);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n var element = generateChildElement(task, child, timeline, sizes);\n\n if (element) {\n renderedNodes[getKey(child.id, task.id)] = element;\n el.appendChild(element);\n } else {\n renderedNodes[getKey(child.id, task.id)] = false;\n }\n });\n return el;\n }\n\n return false;\n }\n\n function repaintRollupTask(task, itemNode, timeline, config, viewPort) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered\n\n viewPort.y = 0;\n viewPort.y_end = gantt.$task_bg.scrollHeight;\n task.$rollup.forEach(function (itemId) {\n var child = gantt.getTask(itemId);\n var rollupKey = getKey(child.id, task.id);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[rollupKey]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[rollupKey] = element || false;\n } else {\n renderedNodes[rollupKey] = false;\n }\n }\n\n if (!!renderedNodes[rollupKey]) {\n el.appendChild(renderedNodes[rollupKey]);\n }\n\n itemNode.innerHTML = \"\";\n itemNode.appendChild(el);\n });\n }\n\n return {\n render: renderRollupTask,\n update: repaintRollupTask,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isBarInViewport = require(\"./is_bar_in_viewport\");\n\nmodule.exports = function isSplitTaskInViewport(item, viewport, view, config, gantt) {\n if (!gantt.isSplitTask(item)) {\n return false;\n }\n\n var range = gantt.getSubtaskDates(item.id);\n return isBarInViewport({\n id: item.id,\n start_date: range.start_date,\n end_date: range.end_date,\n parent: item.parent\n }, viewport, view, gantt);\n};","var createBaseBarRender = require(\"./task_bar_render\"); //const isInViewPort = require(\"./viewport/is_split_task_in_viewport\");\n\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar isInViewPortParent = require(\"./viewport/is_split_task_in_viewport\");\n\nvar isInViewPortChild = require(\"./viewport/is_bar_in_viewport\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n var renderedNodes = {};\n\n function checkVisibility(child, viewPort, timeline, config, gantt) {\n var isVisible = !child.hide_bar; // GS-1195. Don't render split tasks that are outside the viewport\n\n if (config.smart_rendering && isVisible) {\n isVisible = isInViewPortChild(child, viewPort, timeline, config, gantt);\n }\n\n return isVisible;\n }\n\n function generateChildElement(task, child, timeline, sizes) {\n if (child.hide_bar) {\n return;\n }\n\n var isProject = gantt.isSummaryTask(child);\n\n if (isProject) {\n gantt.resetProjectDates(child);\n }\n\n var childCopy = gantt.copy(gantt.getTask(child.id));\n childCopy.$rendered_at = task.id; // a way to filter split tasks:\n\n var showSplitTask = gantt.callEvent(\"onBeforeSplitTaskDisplay\", [childCopy.id, childCopy, task.id]);\n\n if (showSplitTask === false) {\n return;\n }\n\n var element = defaultRender(childCopy, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_split_child\");\n\n if (isProject) {\n element.classList.add(\"gantt_split_subproject\");\n }\n\n return element;\n }\n\n function getKey(childId, renderParentId) {\n return childId + \"_\" + renderParentId;\n }\n\n function shouldUseSplitRendering(task, config) {\n return gantt.isSplitTask(task) && (config.open_split_tasks && !task.$open || !config.open_split_tasks) && gantt.hasChild(task.id);\n }\n\n function renderSplitTask(task, timeline, config, viewPort) {\n if (shouldUseSplitRendering(task, config)) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n\n if (gantt.hasChild(task.id)) {\n gantt.eachTask(function (child) {\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n var element = generateChildElement(task, child, timeline, sizes);\n\n if (element) {\n renderedNodes[getKey(child.id, task.id)] = element;\n el.appendChild(element);\n } else {\n renderedNodes[getKey(child.id, task.id)] = false;\n }\n }, task.id);\n }\n\n return el;\n }\n\n return false;\n }\n\n function repaintSplitTask(task, itemNode, timeline, config, viewPort) {\n if (shouldUseSplitRendering(task, config)) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task);\n gantt.eachTask(function (child) {\n var splitKey = getKey(child.id, task.id);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[splitKey]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[splitKey] = element || false;\n } else {\n renderedNodes[splitKey] = false;\n }\n }\n\n if (!!renderedNodes[splitKey]) {\n el.appendChild(renderedNodes[splitKey]);\n }\n\n itemNode.innerHTML = \"\";\n itemNode.appendChild(el);\n }, task.id);\n }\n }\n\n return {\n render: renderSplitTask,\n update: repaintSplitTask,\n isInViewPort: isInViewPortParent,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar createBaseBarRender = require(\"./task_bar_render\");\n\nmodule.exports = function createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n return {\n render: defaultRender,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n};","module.exports = function (gantt) {\n return function processTaskDateProperties(item, mapTo, mode) {\n if (mode == \"keepDates\") {\n keepDatesOnEdit(item, mapTo);\n } else if (mode == \"keepDuration\") {\n keepDurationOnEdit(item, mapTo);\n } else {\n defaultActionOnEdit(item, mapTo);\n }\n }; // resize task\n // resize task when start/end/duration changes\n\n function keepDatesOnEdit(item, mapTo) {\n if (mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\" || mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } // move task(before 6.2)\n // move task when start/end dates changes\n // resize task when duration changes\n\n\n function keepDurationOnEdit(item, mapTo) {\n if (mapTo == \"end_date\") {\n item.start_date = decreaseStartDate(item);\n } else if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n }\n } // default behavior\n // move task when start date changes\n // resize task when end date/duration changes\n\n\n function defaultActionOnEdit(item, mapTo) {\n if (gantt.config.schedule_from_end) {\n if (mapTo == \"end_date\" || mapTo == \"duration\") {\n item.start_date = decreaseStartDate(item);\n } else if (mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } else {\n if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n }\n }\n\n function decreaseStartDate(item) {\n return gantt.calculateEndDate({\n start_date: item.end_date,\n duration: -item.duration,\n task: item\n });\n }\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.durationFormatter();\n }\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><input type='text' name='\".concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = getFormatter(column.editor).format(value);\n },\n get_value: function get_value(id, column, node) {\n return getFormatter(column.editor).parse(this.get_input(node).value || \"\");\n }\n }, true);\n return TextEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function PredecessorEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(PredecessorEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.linkFormatter();\n }\n\n function parseInputString(value, config) {\n var predecessors = (value || \"\").split(config.delimiter || \",\");\n\n for (var i = 0; i < predecessors.length; i++) {\n var val = predecessors[i].trim();\n\n if (val) {\n predecessors[i] = val;\n } else {\n predecessors.splice(i, 1);\n i--;\n }\n }\n\n predecessors.sort();\n return predecessors;\n }\n\n function formatPredecessors(task, config, gantt) {\n var links = task.$target;\n var labels = [];\n\n for (var i = 0; i < links.length; i++) {\n var link = gantt.getLink(links[i]);\n labels.push(getFormatter(config).format(link));\n }\n\n return labels.join((config.delimiter || \",\") + \" \");\n }\n\n function getSelectedLinks(taskId, predecessorCodes, config) {\n var links = [];\n predecessorCodes.forEach(function (code) {\n var link = getFormatter(config).parse(code);\n\n if (link) {\n link.target = taskId; // GS-1290 A way to preserve the link. Otherwise validation will return false\n // because the existing link ID is not passed there\n\n link.id = \"predecessor_generated\";\n\n if (gantt.isLinkAllowed(link)) {\n link.id = undefined;\n links.push(link);\n }\n }\n });\n return links;\n }\n\n function formatLinkKey(link) {\n return link.source + \"_\" + link.target + \"_\" + link.type + \"_\" + (link.lag || 0);\n }\n\n function getLinksDiff(task, predecessorCodes, config) {\n var selectedLinks = getSelectedLinks(task.id, predecessorCodes, config);\n var existingLinksSearch = {};\n task.$target.forEach(function (linkId) {\n var link = gantt.getLink(linkId);\n existingLinksSearch[formatLinkKey(link)] = link.id;\n });\n var linksToAdd = [];\n selectedLinks.forEach(function (link) {\n var linkKey = formatLinkKey(link);\n\n if (!existingLinksSearch[linkKey]) {\n linksToAdd.push(link);\n } else {\n delete existingLinksSearch[linkKey];\n }\n });\n var linksToDelete = [];\n\n for (var i in existingLinksSearch) {\n linksToDelete.push(existingLinksSearch[i]);\n }\n\n return {\n add: linksToAdd,\n remove: linksToDelete\n };\n }\n\n utils.mixin(PredecessorEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><input type='text' name='\".concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = formatPredecessors(value, column.editor, gantt);\n },\n get_value: function get_value(id, column, node) {\n return parseInputString(this.get_input(node).value || \"\", column.editor);\n },\n save: function save(id, column, node) {\n var task = gantt.getTask(id);\n var linksDiff = getLinksDiff(task, this.get_value(id, column, node), column.editor);\n\n if (linksDiff.add.length || linksDiff.remove.length) {\n gantt.batchUpdate(function () {\n linksDiff.add.forEach(function (link) {\n gantt.addLink(link);\n });\n linksDiff.remove.forEach(function (linkId) {\n gantt.deleteLink(linkId);\n });\n if (gantt.autoSchedule) gantt.autoSchedule();\n });\n }\n },\n is_changed: function is_changed(value, id, column, node) {\n var inputPredecessors = this.get_value(id, column, node);\n var taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\n return inputPredecessors.join() !== taskPredecessors.join();\n }\n }, true);\n return PredecessorEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n var html5DateFormat = \"%Y-%m-%d\";\n var dateToStr = null;\n var strToDate = null;\n\n function init() {\n if (!dateToStr) {\n dateToStr = gantt.date.date_to_str(html5DateFormat);\n }\n\n if (!strToDate) {\n strToDate = gantt.date.str_to_date(html5DateFormat);\n }\n }\n\n function DateEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(DateEditor, BaseEditor);\n\n utils.mixin(DateEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n init();\n var minValue = null;\n var maxValue = null;\n\n if (typeof config.min === \"function\") {\n minValue = config.min(id, column);\n } else {\n minValue = config.min;\n }\n\n if (typeof config.max === \"function\") {\n maxValue = config.max(id, column);\n } else {\n maxValue = config.max;\n }\n\n var minAttr = minValue ? \" min='\" + dateToStr(minValue) + \"' \" : \"\";\n var maxAttr = maxValue ? \" max='\" + dateToStr(maxValue) + \"' \" : \"\";\n var html = \"<div style='width:140px' role='cell'><input type='date' \".concat(minAttr, \" \").concat(maxAttr, \" name='\").concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n set_value: function set_value(value, id, column, node) {\n if (value && value.getFullYear) {\n this.get_input(node).value = dateToStr(value);\n } else {\n this.get_input(node).value = value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n if (!value || isNaN(value.getTime())) return false;\n return true;\n },\n get_value: function get_value(id, column, node) {\n var parsed;\n\n try {\n parsed = strToDate(this.get_input(node).value || \"\");\n } catch (e) {\n parsed = null; // return null will cancel changes\n }\n\n return parsed;\n }\n }, true);\n return DateEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function SelectEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(SelectEditor, BaseEditor);\n\n utils.mixin(SelectEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><select name='\".concat(column.name, \"' title='\").concat(column.name, \"'>\");\n var optionsHtml = [],\n options = config.options || [];\n\n for (var i = 0; i < options.length; i++) {\n optionsHtml.push(\"<option value='\" + config.options[i].key + \"'>\" + options[i].label + \"</option>\");\n }\n\n html += optionsHtml.join(\"\") + \"</select></div>\";\n placeholder.innerHTML = html;\n },\n get_input: function get_input(node) {\n return node.querySelector(\"select\");\n }\n }, true);\n return SelectEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function NumberEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(NumberEditor, BaseEditor);\n\n utils.mixin(NumberEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var min = config.min || 0,\n max = config.max || 100;\n var html = \"<div role='cell'><input type='number' min='\".concat(min, \"' max='\").concat(max, \"' name='\").concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_valid: function is_valid(value, id, column, node) {\n return !isNaN(parseInt(value, 10));\n }\n }, true);\n return NumberEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><input type='text' name='\".concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n }\n }, true);\n return TextEditor;\n};","module.exports = {\n init: function init(controller, grid) {\n var self = controller;\n var gantt = grid.$gantt;\n var onBlurDelay = null;\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onBeforeFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n clearTimeout(onBlurDelay);\n\n if (activeCell) {\n var columnName = activeCell.columnName;\n var id = activeCell.id;\n var editorState = self.getState();\n\n if (self.isVisible()) {\n if (editorState.id == id && editorState.columnName === columnName) {\n return false;\n }\n }\n }\n\n return true;\n });\n keyNav.attachEvent(\"onFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n var state = controller.getState();\n clearTimeout(onBlurDelay);\n\n if (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n if (self.isVisible()) {\n self.save();\n }\n }\n\n return true;\n });\n controller.attachEvent(\"onHide\", function () {\n clearTimeout(onBlurDelay);\n });\n keyNav.attachEvent(\"onBlur\", function () {\n onBlurDelay = setTimeout(function () {\n self.save();\n });\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n // block lightbox on double click inside editor\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n self.save();\n return true;\n });\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var activeCell = controller.locateCell(e.target);\n var hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n var state = controller.getState();\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.ENTER:\n if (controller.isVisible()) {\n controller.save();\n e.preventDefault();\n preventKeyNav = true;\n } else if (hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.ESC:\n if (controller.isVisible()) {\n controller.hide();\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n break;\n\n case keyboard.LEFT:\n case keyboard.RIGHT:\n if (hasEditor && controller.isVisible() || state.editorType === \"date\") {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.DELETE:\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n } else if (hasEditor && controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.TAB:\n if (controller.isVisible()) {\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n var newState = controller.getState();\n\n if (newState.id) {\n keyNav.focus({\n type: \"taskCell\",\n id: newState.id,\n column: newState.columnName\n });\n }\n\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n default:\n if (controller.isVisible()) preventKeyNav = true;else {\n // start editing on character key\n if (keyCode >= 48 && keyCode <= 57 || // [0-9]\n keyCode > 95 && keyCode < 112 || // numpad\n keyCode >= 64 && keyCode <= 91 || // [a-z]\n keyCode > 185 && keyCode < 193 || //;=-,etc\n keyCode > 218 && keyCode < 223) {\n var modifiers = command.modifiers;\n var anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\n\n if (modifiers.alt) {// don't start editing on alt+key\n } else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")) {// don't start editing if command already have a keyboard shortcut\n } else if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n }\n }\n }\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n },\n onShow: function onShow(controller, placeholder, grid) {},\n onHide: function onHide(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n gantt.focus();\n },\n destroy: function destroy() {}\n};","module.exports = {\n init: function init(controller, grid) {\n var gantt = grid.$gantt;\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n if (controller.isVisible() && controller.isChanged()) {\n controller.save();\n } else {\n controller.hide();\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n //GS-933 probably, we don't need to hide the inline editor because the lightbox cannot be opened if you double-click on an inline editor\n //remove this code later if people don't complain\n //controller.hide();\n return false;\n }\n\n return true;\n });\n },\n onShow: function onShow(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n\n if (gantt.ext && gantt.ext.keyboardNavigation) {\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n }\n\n placeholder.onkeydown = function (e) {\n e = e || window.event;\n var keyboard = gantt.constants.KEY_CODES;\n\n if (e.defaultPrevented || e.shiftKey && e.keyCode != keyboard.TAB) {\n return;\n }\n\n var shouldPrevent = true;\n\n switch (e.keyCode) {\n case gantt.keys.edit_save:\n controller.save();\n break;\n\n case gantt.keys.edit_cancel:\n controller.hide();\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n if (controller.isVisible()) {\n controller.hide();\n shouldPrevent = false;\n }\n\n break;\n\n case keyboard.TAB:\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n break;\n\n default:\n shouldPrevent = false;\n break;\n }\n\n if (shouldPrevent) {\n e.preventDefault();\n }\n };\n },\n onHide: function onHide() {},\n destroy: function destroy() {}\n};","var defaultMapping = require(\"./keyboard_mappings/default\");\n\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function (gantt) {\n var mapping = null;\n return {\n setMapping: function setMapping(map) {\n mapping = map;\n },\n getMapping: function getMapping() {\n if (mapping) {\n return mapping;\n } else if (gantt.config.keyboard_navigation_cells && gantt.ext.keyboardNavigation) {\n return keyNavMappings;\n } else {\n return defaultMapping;\n }\n }\n };\n};","var getKeyboardMapping = require(\"./keyboard_mappings\");\n\nvar textEditorFactory = require(\"./editors/text\"),\n numberEditorFactory = require(\"./editors/number\"),\n selectEditorFactory = require(\"./editors/select\"),\n dateEditorFactory = require(\"./editors/date\"),\n predecessorEditorFactory = require(\"./editors/predecessor\"),\n durationEditorFactory = require(\"./editors/duration\");\n\nvar utils = require(\"../../../../utils/utils\");\n\nvar domHelpers = require(\"../../utils/dom_helpers\");\n\nvar eventable = require(\"../../../../utils/eventable\");\n\nvar linkedPropertiesProcessor = require(\"./linked_properties\");\n\nfunction initConfigs(gantt) {\n gantt.config.editor_types = {\n text: new (textEditorFactory(gantt))(),\n number: new (numberEditorFactory(gantt))(),\n select: new (selectEditorFactory(gantt))(),\n date: new (dateEditorFactory(gantt))(),\n predecessor: new (predecessorEditorFactory(gantt))(),\n duration: new (durationEditorFactory(gantt))()\n };\n}\n\nfunction create(gantt) {\n var keyboardMapping = getKeyboardMapping(gantt);\n var eventBus = {};\n eventable(eventBus);\n\n function createGridEditors(grid) {\n function _getGridCellFromNode(node) {\n if (!domHelpers.isChildOf(node, grid.$grid)) {\n return null;\n }\n\n var row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n var cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\n if (row && cell) {\n var columnName = cell.getAttribute(\"data-column-name\");\n var id = row.getAttribute(grid.$config.item_attribute);\n return {\n id: id,\n columnName: columnName\n };\n }\n\n return null;\n }\n\n function _getEditorPosition(itemId, columnName) {\n var config = grid.$getConfig();\n var top = grid.getItemTop(itemId);\n var height = grid.getItemHeight(itemId);\n var cols = grid.getGridColumns();\n var left = 0,\n right = 0,\n width = 0;\n\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].name == columnName) {\n width = cols[i].width;\n break;\n }\n\n if (config.rtl) {\n right += cols[i].width;\n } else {\n left += cols[i].width;\n }\n }\n\n if (config.rtl) {\n return {\n top: top,\n right: right,\n height: height,\n width: width\n };\n } else {\n return {\n top: top,\n left: left,\n height: height,\n width: width\n };\n }\n }\n\n function findVisibleIndex(grid, columnName) {\n var columns = grid.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n function _createPlaceholder(itemId, columnName) {\n var config = grid.$getConfig();\n\n var pos = _getEditorPosition(itemId, columnName);\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_grid_editor_placeholder\";\n el.setAttribute(grid.$config.item_attribute, itemId);\n el.setAttribute(grid.$config.bind + \"_id\", itemId); // for backward compatibility\n\n el.setAttribute(\"data-column-name\", columnName);\n var visibleIndex = findVisibleIndex(grid, columnName);\n el.setAttribute(\"data-column-index\", visibleIndex);\n\n gantt._waiAria.inlineEditorAttr(el);\n\n if (config.rtl) {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"right:\" + pos.right + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n } else {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n }\n\n return el;\n }\n\n var updateTaskDateProperties = linkedPropertiesProcessor(gantt);\n var handlers = [];\n var ganttHandlers = [];\n var store = null;\n var controller = {\n _itemId: null,\n _columnName: null,\n _editor: null,\n _editorType: null,\n _placeholder: null,\n locateCell: _getGridCellFromNode,\n getEditorConfig: function getEditorConfig(columnName) {\n var column = grid.getColumn(columnName);\n return column.editor;\n },\n init: function init() {\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.init) {\n mapping.init(this, grid);\n }\n\n store = grid.$gantt.getDatastore(grid.$config.bind);\n var self = this;\n handlers.push(store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (self._itemId == oldId) {\n self._itemId = newId;\n }\n }));\n handlers.push(store.attachEvent(\"onStoreUpdated\", function () {\n if (grid.$gantt.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (self.isVisible() && !store.isVisible(self._itemId)) {\n self.hide();\n }\n }));\n ganttHandlers.push(gantt.attachEvent(\"onDataRender\", function () {\n if (self._editor && self._placeholder && !domHelpers.isChildOf(self._placeholder, gantt.$root)) {\n grid.$grid_data.appendChild(self._placeholder);\n }\n }));\n\n this.init = function () {};\n },\n getState: function getState() {\n return {\n editor: this._editor,\n editorType: this._editorType,\n placeholder: this._placeholder,\n id: this._itemId,\n columnName: this._columnName\n };\n },\n startEdit: function startEdit(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n\n if (gantt.isReadonly(store.getItem(itemId))) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n if (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n this.show(editorState.id, editorState.columnName);\n this.setValue();\n this.callEvent(\"onEditStart\", [editorState]);\n },\n isVisible: function isVisible() {\n return !!(this._editor && domHelpers.isChildOf(this._placeholder, gantt.$root));\n },\n show: function show(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n var column = grid.getColumn(editorState.columnName);\n var editorConfig = this.getEditorConfig(column.name);\n if (!editorConfig) return;\n var editor = grid.$getConfig().editor_types[editorConfig.type];\n\n var placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\n grid.$grid_data.appendChild(placeholder);\n editor.show(editorState.id, column, editorConfig, placeholder);\n this._editor = editor;\n this._placeholder = placeholder;\n this._itemId = editorState.id;\n this._columnName = editorState.columnName;\n this._editorType = editorConfig.type;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onShow) {\n mapping.onShow(this, placeholder, grid);\n }\n },\n setValue: function setValue() {\n var state = this.getState();\n var itemId = state.id,\n columnName = state.columnName;\n var column = grid.getColumn(columnName);\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n if (!editorConfig) return;\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(itemId);\n }\n\n this._editor.set_value(value, itemId, column, this._placeholder);\n\n this.focus();\n },\n focus: function focus() {\n this._editor.focus(this._placeholder);\n },\n getValue: function getValue() {\n var column = grid.getColumn(this._columnName);\n return this._editor.get_value(this._itemId, column, this._placeholder);\n },\n _getItemValue: function _getItemValue() {\n var editorConfig = this.getEditorConfig(this._columnName);\n if (!editorConfig) return;\n var item = gantt.getTask(this._itemId);\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(this._itemId);\n }\n\n return value;\n },\n isChanged: function isChanged() {\n var column = grid.getColumn(this._columnName);\n\n var value = this._getItemValue();\n\n return this._editor.is_changed(value, this._itemId, column, this._placeholder);\n },\n hide: function hide() {\n if (!this._itemId) return;\n var itemId = this._itemId,\n columnName = this._columnName;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onHide) {\n mapping.onHide(this, this._placeholder, grid);\n }\n\n this._itemId = null;\n this._columnName = null;\n this._editorType = null;\n if (!this._placeholder) return;\n\n if (this._editor && this._editor.hide) {\n this._editor.hide(this._placeholder);\n }\n\n this._editor = null;\n\n if (this._placeholder.parentNode) {\n this._placeholder.parentNode.removeChild(this._placeholder);\n }\n\n this._placeholder = null;\n this.callEvent(\"onEditEnd\", [{\n id: itemId,\n columnName: columnName\n }]);\n },\n save: function save() {\n if (!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n this.hide();\n return;\n }\n\n var itemId = this._itemId,\n columnName = this._columnName;\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n var editorState = {\n id: itemId,\n columnName: columnName,\n newValue: this.getValue(),\n oldValue: this._getItemValue()\n };\n\n if (this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n if (!this._editor.is_valid || this._editor.is_valid(editorState.newValue, editorState.id, grid.getColumn(columnName), this._placeholder)) {\n var mapTo = editorConfig.map_to;\n var value = editorState.newValue;\n\n if (mapTo != \"auto\") {\n item[mapTo] = value;\n updateTaskDateProperties(item, mapTo, gantt.config.inline_editors_date_processing);\n store.updateItem(itemId);\n } else {\n this._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n }\n\n this.callEvent(\"onSave\", [editorState]);\n }\n }\n\n this.hide();\n },\n _findEditableCell: function findEditableCell(start, direction) {\n var nextIndex = start;\n var columns = grid.getGridColumns();\n var nextColumn = columns[nextIndex];\n var columnName = nextColumn ? nextColumn.name : null;\n\n if (columnName) {\n while (columnName && !this.getEditorConfig(columnName)) {\n columnName = this._findEditableCell(start + direction, direction);\n }\n\n return columnName;\n }\n\n return null;\n },\n getNextCell: function moveCell(dir) {\n // GS-1257. true means to exclude hidden columns\n return this._findEditableCell(grid.getColumnIndex(this._columnName, true) + dir, dir);\n },\n getFirstCell: function getFirstCell() {\n return this._findEditableCell(0, 1);\n },\n getLastCell: function getLastCell() {\n return this._findEditableCell(grid.getGridColumns().length - 1, -1);\n },\n editNextCell: function nextCell(canChangeRow) {\n var cell = this.getNextCell(1);\n\n if (cell) {\n var nextColumn = this.getNextCell(1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(1)) {\n var task = this.moveRow(1);\n cell = this.getFirstCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n editPrevCell: function prevCell(canChangeRow) {\n var cell = this.getNextCell(-1);\n\n if (cell) {\n var nextColumn = this.getNextCell(-1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(-1)) {\n var task = this.moveRow(-1);\n cell = this.getLastCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n moveRow: function moveRow(dir) {\n var moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\n moveTask = gantt.bind(moveTask, gantt);\n var nextItem = moveTask(this._itemId); // skip readonly rows\n\n while (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\n nextItem = moveTask(nextItem);\n }\n\n return nextItem;\n },\n editNextRow: function nextRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var next = null;\n\n if (skipReadonly) {\n next = this.moveRow(1);\n } else {\n next = gantt.getNext(id);\n }\n\n if (gantt.isTaskExists(next)) {\n this.startEdit(next, this._columnName);\n }\n },\n editPrevRow: function prevRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var prev = null;\n\n if (skipReadonly) {\n prev = this.moveRow(-1);\n } else {\n prev = gantt.getPrev(id);\n }\n\n if (gantt.isTaskExists(prev)) {\n this.startEdit(prev, this._columnName);\n }\n },\n destructor: function destructor() {\n handlers.forEach(function (handlerId) {\n store.detachEvent(handlerId);\n });\n ganttHandlers.forEach(function (handlerId) {\n gantt.detachEvent(handlerId);\n });\n handlers = [];\n ganttHandlers = [];\n store = null;\n this.hide();\n this.detachAllEvents();\n }\n };\n utils.mixin(controller, keyboardMapping);\n utils.mixin(controller, eventBus);\n return controller;\n }\n\n var inlineEditController = {\n init: initConfigs,\n createEditors: createGridEditors\n };\n utils.mixin(inlineEditController, keyboardMapping);\n utils.mixin(inlineEditController, eventBus);\n return inlineEditController;\n}\n\nmodule.exports = create;","var createStaticBgHelper = function createStaticBgHelper() {\n return {\n render: function render() {},\n destroy: function destroy() {}\n };\n};\n\nmodule.exports = {\n create: function create() {\n return createStaticBgHelper();\n }\n};","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n env = require(\"../../../utils/env\"),\n Cell = require(\"./cell\");\n\nvar ScrollbarCell = function (_super) {\n \"use strict\";\n\n var SCROLL_MODIFIER_KEYS = [\"altKey\", \"shiftKey\", \"metaKey\"]; // it's no way to disable ctrl+wheel\n\n __extends(ScrollbarCell, _super);\n\n function ScrollbarCell(parent, config, factory, gantt) {\n var _this = _super.apply(this, arguments) || this;\n\n this.$config = utils.mixin(config, {\n scroll: \"x\"\n });\n _this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\n _this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\n _this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\n _this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\n _this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\n this.$config.hidden = true;\n var size = gantt.config.scroll_size;\n\n if (gantt.env.isIE) {\n // full element height/width must be bigger than just a browser scrollbar,\n // otherwise the scrollbar element won't be scrolled on click\n size += 1;\n }\n\n if (this._isHorizontal()) {\n _this.$config.height = size;\n _this.$parent.$config.height = size;\n } else {\n _this.$config.width = size;\n _this.$parent.$config.width = size;\n }\n\n this.$config.scrollPosition = 0;\n _this.$name = \"scroller\";\n return _this;\n }\n\n ScrollbarCell.prototype.init = function (container) {\n container.innerHTML = this.$toHTML();\n this.$view = container.firstChild;\n\n if (!this.$view) {\n this.init();\n }\n\n if (this._isVertical()) {\n this._initVertical();\n } else {\n this._initHorizontal();\n }\n\n this._initMouseWheel();\n\n this._initLinkedViews();\n };\n\n ScrollbarCell.prototype.$toHTML = function () {\n var className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\n return \"<div class='gantt_layout_cell \" + className + \"'><div style='\" + (this._isHorizontal() ? \"width:2000px\" : \"height:2000px\") + \"'></div></div>\";\n };\n\n ScrollbarCell.prototype._getRootParent = function () {\n var parent = this.$parent;\n\n while (parent && parent.$parent) {\n parent = parent.$parent;\n }\n\n if (parent) {\n return parent;\n }\n };\n\n function eachCell(root, res) {\n res.push(root);\n\n if (root.$cells) {\n for (var i = 0; i < root.$cells.length; i++) {\n eachCell(root.$cells[i], res);\n }\n }\n }\n\n ScrollbarCell.prototype._eachView = function () {\n var res = [];\n eachCell(this._getRootParent(), res);\n return res;\n };\n\n ScrollbarCell.prototype._getLinkedViews = function () {\n var views = this._eachView();\n\n var res = [];\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].$config && (this._isVertical() && views[i].$config.scrollY == this.$id || this._isHorizontal() && views[i].$config.scrollX == this.$id)) {\n res.push(views[i]);\n }\n }\n\n return res;\n };\n\n ScrollbarCell.prototype._initHorizontal = function () {\n this.$scroll_hor = this.$view;\n this.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\n };\n\n ScrollbarCell.prototype._initLinkedViews = function () {\n var views = this._getLinkedViews();\n\n var css = this._isVertical() ? \"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\n\n for (var i = 0; i < views.length; i++) {\n //views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\n domHelpers.addClassName(views[i].$view || views[i].getNode(), css);\n }\n };\n\n ScrollbarCell.prototype._initVertical = function () {\n this.$scroll_ver = this.$view;\n this.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\n };\n\n ScrollbarCell.prototype._updateLinkedViews = function () {};\n\n ScrollbarCell.prototype._initMouseWheel = function () {\n var ff = env.isFF;\n if (ff) this.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler, {\n passive: false\n });else this.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler, {\n passive: false\n });\n };\n\n ScrollbarCell.prototype.scrollHorizontally = function (left) {\n if (this._scrolling) return;\n this._scrolling = true;\n this.$scroll_hor.scrollLeft = left;\n this.$config.codeScrollLeft = left;\n left = this.$scroll_hor.scrollLeft;\n\n var views = this._getLinkedViews();\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].scrollTo) {\n views[i].scrollTo(left, undefined);\n }\n }\n\n var oldSize = this.$config.scrollPosition;\n this.$config.scrollPosition = left;\n this.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\n this._scrolling = false;\n };\n\n ScrollbarCell.prototype.scrollVertically = function (top) {\n if (this._scrolling) return;\n this._scrolling = true;\n this.$scroll_ver.scrollTop = top;\n top = this.$scroll_ver.scrollTop;\n\n var views = this._getLinkedViews();\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].scrollTo) {\n views[i].scrollTo(undefined, top);\n }\n }\n\n var oldSize = this.$config.scrollPosition;\n this.$config.scrollPosition = top;\n this.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\n this._scrolling = false;\n };\n\n ScrollbarCell.prototype._isVertical = function () {\n return this.$config.scroll == \"y\";\n };\n\n ScrollbarCell.prototype._isHorizontal = function () {\n return this.$config.scroll == \"x\";\n };\n\n ScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\n if (this._isVertical() || this._scrolling) {\n return;\n } //in safari we can catch previous onscroll after setting new value from mouse-wheel event\n //set delay to prevent value drifiting\n\n\n if (new Date() - (this._wheel_time || 0) < 100) return true; //if (this.$gantt._touch_scroll_active) return;\n\n var left = this.$scroll_hor.scrollLeft;\n this.scrollHorizontally(left);\n this._oldLeft = this.$scroll_hor.scrollLeft;\n };\n\n ScrollbarCell.prototype._outerScrollHorizontalHandler = function (e) {\n if (this._isVertical()) {\n return;\n }\n };\n\n ScrollbarCell.prototype.show = function () {\n this.$parent.show();\n };\n\n ScrollbarCell.prototype.hide = function () {\n this.$parent.hide();\n };\n\n ScrollbarCell.prototype._getScrollSize = function () {\n var scrollSize = 0;\n var outerSize = 0;\n\n var isHorizontal = this._isHorizontal();\n\n var linked = this._getLinkedViews();\n\n var view;\n var scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\n innerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\n var outerProperty = isHorizontal ? \"x\" : \"y\";\n\n var offset = this._getScrollOffset();\n\n for (var i = 0; i < linked.length; i++) {\n view = linked[i];\n if (!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\n var sizes = view.$content.getSize();\n var cellScrollSize;\n\n if (sizes.hasOwnProperty(scrollProperty)) {\n cellScrollSize = sizes[scrollProperty];\n } else {\n cellScrollSize = sizes[innerSizeProperty];\n }\n\n if (offset) {\n // precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\n if (sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && cellScrollSize > sizes[outerProperty] - offset + 2) {\n scrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\n outerSize = sizes[outerProperty];\n }\n } else {\n var nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\n var scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\n cellScrollSize = cellScrollSize + nonScrollableSize;\n\n if (cellScrollSize > scrollableViewPortSize && cellScrollSize > scrollSize) {\n //|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\n scrollSize = cellScrollSize;\n outerSize = sizes[outerProperty];\n }\n }\n }\n\n return {\n outerScroll: outerSize,\n innerScroll: scrollSize\n };\n };\n\n ScrollbarCell.prototype.scroll = function (position) {\n if (this._isHorizontal()) {\n this.scrollHorizontally(position);\n } else {\n this.scrollVertically(position);\n }\n };\n\n ScrollbarCell.prototype.getScrollState = function () {\n return {\n visible: this.isVisible(),\n direction: this.$config.scroll,\n size: this.$config.outerSize,\n scrollSize: this.$config.scrollSize || 0,\n position: this.$config.scrollPosition || 0\n };\n };\n\n ScrollbarCell.prototype.setSize = function (width, height) {\n _super.prototype.setSize.apply(this, arguments);\n\n var scrollSizes = this._getScrollSize();\n\n var ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\n\n if (scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll) {\n scrollSizes.innerScroll += ownSize - scrollSizes.outerScroll;\n }\n\n this.$config.scrollSize = scrollSizes.innerScroll;\n this.$config.width = width;\n this.$config.height = height;\n\n this._setScrollSize(scrollSizes.innerScroll);\n };\n\n ScrollbarCell.prototype.isVisible = function () {\n return !!(this.$parent && this.$parent.$view.parentNode);\n };\n\n ScrollbarCell.prototype.shouldShow = function () {\n var scrollSizes = this._getScrollSize();\n\n if (!scrollSizes.innerScroll && this.$parent && this.$parent.$view.parentNode) {\n return false;\n } else if (scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)) {\n return true;\n } else {\n return false;\n }\n };\n\n ScrollbarCell.prototype.shouldHide = function () {\n var scrollSizes = this._getScrollSize();\n\n if (!scrollSizes.innerScroll && this.$parent && this.$parent.$view.parentNode) {\n return true;\n } else {\n return false;\n }\n };\n\n ScrollbarCell.prototype.toggleVisibility = function () {\n if (this.shouldHide()) {\n this.hide();\n } else if (this.shouldShow()) {\n this.show();\n }\n };\n\n ScrollbarCell.prototype._getScaleOffset = function (view) {\n var offset = 0;\n\n if (view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")) {\n offset = view.$content.$getConfig().scale_height;\n }\n\n return offset;\n };\n\n ScrollbarCell.prototype._getScrollOffset = function () {\n var offset = 0;\n\n if (this._isVertical()) {\n var parentLayout = this.$parent.$parent;\n offset = Math.max(this._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)), this._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id)));\n } else {\n var linked = this._getLinkedViews();\n\n for (var i = 0; i < linked.length; i++) {\n var view = linked[i],\n vparent = view.$parent;\n var cells = vparent.$cells;\n var last = cells[cells.length - 1];\n\n if (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\n offset = last.$config.width;\n break;\n }\n }\n }\n\n return offset || 0;\n };\n\n ScrollbarCell.prototype._setScrollSize = function (size) {\n var property = this._isHorizontal() ? \"width\" : \"height\";\n var scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\n\n var offset = this._getScrollOffset();\n\n var node = scrollbar.firstChild;\n\n if (offset) {\n if (this._isVertical()) {\n this.$config.outerSize = this.$config.height - offset + 3;\n scrollbar.style.height = this.$config.outerSize + \"px\";\n scrollbar.style.top = offset - 1 + \"px\";\n domHelpers.addClassName(scrollbar, this.$parent._borders.top);\n domHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n } else {\n this.$config.outerSize = this.$config.width - offset + 1;\n scrollbar.style.width = this.$config.outerSize + \"px\"; //domHelpers.addClassName(scrollbar, this.$parent._borders.right);\n }\n } else {\n scrollbar.style.top = \"auto\";\n domHelpers.removeClassName(scrollbar, this.$parent._borders.top);\n domHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n this.$config.outerSize = this.$config.height;\n }\n\n node.style[property] = size + \"px\";\n };\n\n ScrollbarCell.prototype._scrollVerticalHandler = function (e) {\n if (this._scrollHorizontalHandler() || this._scrolling) {\n return;\n } //if (this.$gantt._touch_scroll_active) return;\n\n\n var top = this.$scroll_ver.scrollTop;\n var prev = this._oldTop;\n if (top == prev) return;\n this.scrollVertically(top);\n this._oldTop = this.$scroll_ver.scrollTop;\n };\n\n ScrollbarCell.prototype._outerScrollVerticalHandler = function (e) {\n if (this._scrollHorizontalHandler()) {\n return;\n }\n };\n\n ScrollbarCell.prototype._checkWheelTarget = function (targetNode) {\n var connectedViews = this._getLinkedViews().concat(this);\n\n for (var i = 0; i < connectedViews.length; i++) {\n var node = connectedViews[i].$view;\n\n if (domHelpers.isChildOf(targetNode, node)) {\n return true;\n }\n }\n\n return false;\n };\n\n ScrollbarCell.prototype._mouseWheelHandler = function (e) {\n var target = e.target || e.srcElement;\n if (!this._checkWheelTarget(target)) return;\n this._wheel_time = new Date();\n var res = {};\n var wheelSpeed = {\n x: 1,\n y: 1\n };\n var wheelSpeedConfig = this.$gantt.config.wheel_scroll_sensitivity;\n\n if (typeof wheelSpeedConfig == \"number\" && !!wheelSpeedConfig) {\n wheelSpeed = {\n x: wheelSpeedConfig,\n y: wheelSpeedConfig\n };\n } else if ({}.toString.apply(wheelSpeedConfig) == \"[object Object]\") {\n wheelSpeed = {\n x: wheelSpeedConfig.x,\n y: wheelSpeedConfig.y\n };\n }\n\n var ff = env.isFF;\n var deltaX = ff ? e.deltaX : e.wheelDeltaX;\n var deltaY = ff ? e.deltaY : e.wheelDelta;\n var multiplier = -20;\n\n if (ff) {\n if (e.deltaMode !== 0) {\n multiplier = -40;\n } else {\n multiplier = -10;\n }\n }\n\n var wx = ff ? deltaX * multiplier * wheelSpeed.x : deltaX * 2 * wheelSpeed.x;\n var wy = ff ? deltaY * multiplier * wheelSpeed.y : deltaY * wheelSpeed.y;\n var horizontalScrollModifier = this.$gantt.config.horizontal_scroll_key;\n\n if (horizontalScrollModifier !== false) {\n if (SCROLL_MODIFIER_KEYS.indexOf(horizontalScrollModifier) >= 0) {\n if (e[horizontalScrollModifier] && !(e.deltaX || e.wheelDeltaX)) {\n // shift+mousewheel for horizontal scroll\n wx = wy * 2;\n wy = 0;\n }\n }\n }\n\n if (wx && Math.abs(wx) > Math.abs(wy)) {\n if (this._isVertical()) {\n return;\n }\n\n if (res.x) return true; //no horisontal scroll, must not block scrolling\n\n if (!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\n var dir = wx / -40;\n var oldLeft = this._oldLeft;\n var left = oldLeft + dir * 30;\n this.scrollHorizontally(left);\n this.$scroll_hor.scrollLeft = left; // not block scroll if position hasn't changed\n\n if (oldLeft == this.$scroll_hor.scrollLeft) {\n return true;\n }\n\n this._oldLeft = this.$scroll_hor.scrollLeft;\n } else {\n if (this._isHorizontal()) {\n return;\n }\n\n if (res.y) return true; //no vertical scroll, must not block scrolling\n\n if (!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\n var dir = wy / -40;\n if (typeof wy == \"undefined\") dir = e.detail;\n var oldTop = this._oldTop;\n var top = this.$scroll_ver.scrollTop + dir * 30; //if(!this.$gantt.config.prevent_default_scroll &&\n //\t(this.$gantt._cached_scroll_pos && ((this.$gantt._cached_scroll_pos.y == top) || (this.$gantt._cached_scroll_pos.y <= 0 && top <= 0)))) return true;\n\n this.scrollVertically(top);\n this.$scroll_ver.scrollTop = top; // not block scroll if position hasn't changed\n\n if (oldTop == this.$scroll_ver.scrollTop) {\n return true;\n }\n\n this._oldTop = this.$scroll_ver.scrollTop;\n }\n\n if (e.preventDefault) e.preventDefault();\n e.cancelBubble = true;\n return false;\n };\n\n return ScrollbarCell;\n}(Cell);\n\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\n utils = require(\"../../../utils/utils\"),\n Cell = require(\"./cell\");\n\nvar ViewCell = function (_super) {\n \"use strict\";\n\n __extends(ViewCell, _super);\n\n function ViewCell(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (config.view) {\n if (config.id) {\n // pass id to the nested view\n this.$id = utils.uid();\n }\n\n var childConfig = utils.copy(config);\n delete childConfig.config;\n delete childConfig.templates;\n this.$content = this.$factory.createView(config.view, this, childConfig, this);\n if (!this.$content) return false;\n }\n\n _this.$name = \"viewCell\";\n return _this;\n }\n\n ViewCell.prototype.destructor = function () {\n this.clear();\n\n _super.prototype.destructor.call(this);\n };\n\n ViewCell.prototype.clear = function () {\n this.$initialized = false; // call destructor\n\n if (this.$content) {\n var method = this.$content.unload || this.$content.destructor;\n\n if (method) {\n method.call(this.$content);\n }\n }\n\n _super.prototype.clear.call(this);\n };\n\n ViewCell.prototype.scrollTo = function (left, top) {\n if (this.$content && this.$content.scrollTo) {\n this.$content.scrollTo(left, top);\n } else {\n _super.prototype.scrollTo.call(this, left, top);\n }\n };\n\n ViewCell.prototype._setContentSize = function (x, y) {\n var borders = this._getBorderSizes();\n\n if (typeof x === \"number\") {\n var outerX = x + borders.horizontal;\n this.$config.width = outerX;\n }\n\n if (typeof y === \"number\") {\n var outerY = y + borders.vertical;\n this.$config.height = outerY;\n }\n };\n\n ViewCell.prototype.setSize = function (x, y) {\n _super.prototype.setSize.call(this, x, y);\n\n if (!this.$preResize && this.$content) {\n if (!this.$initialized) {\n this.$initialized = true;\n var header = this.$view.childNodes[0];\n var content = this.$view.childNodes[1];\n if (!content) content = header;\n /*if(this.$content.$config){\r\n \tthis.$content.$config.width = this.$lastSize.contentX;\r\n \tthis.$content.$config.height = this.$lastSize.contentY;\r\n }*/\n\n this.$content.init(content);\n }\n }\n };\n\n ViewCell.prototype.setContentSize = function () {\n if (!this.$preResize && this.$content) {\n if (this.$initialized) {\n this.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\n }\n }\n };\n\n ViewCell.prototype.getContentSize = function () {\n var size = _super.prototype.getContentSize.call(this);\n\n if (this.$content && this.$initialized) {\n var childSize = this.$content.getSize();\n size.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\n size.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\n }\n\n var borders = this._getBorderSizes();\n\n size.width += borders.horizontal;\n size.height += borders.vertical;\n return size;\n };\n\n return ViewCell;\n}(Cell);\n\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\n Layout = require(\"./layout\"),\n Cell = require(\"./cell\");\n\nvar ViewLayout = function (_super) {\n \"use strict\";\n\n __extends(ViewLayout, _super);\n\n function ViewLayout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n for (var i = 0; i < _this.$cells.length; i++) {\n _this.$cells[i].$config.hidden = i !== 0;\n }\n\n _this.$cell = _this.$cells[0];\n _this.$name = \"viewLayout\";\n return _this;\n }\n\n ViewLayout.prototype.cell = function (id) {\n var cell = _super.prototype.cell.call(this, id);\n\n if (!cell.$view) {\n this.$fill(null, this);\n }\n\n return cell;\n };\n\n ViewLayout.prototype.moveView = function (view) {\n var body = this.$view;\n\n if (this.$cell) {\n this.$cell.$config.hidden = true;\n body.removeChild(this.$cell.$view);\n }\n\n this.$cell = view;\n body.appendChild(view.$view);\n };\n\n ViewLayout.prototype.setSize = function (x, y) {\n Cell.prototype.setSize.call(this, x, y);\n };\n\n ViewLayout.prototype.setContentSize = function () {\n var size = this.$lastSize;\n this.$cell.setSize(size.contentX, size.contentY);\n };\n\n ViewLayout.prototype.getSize = function () {\n var sizes = _super.prototype.getSize.call(this);\n\n if (this.$cell) {\n var cellSize = this.$cell.getSize();\n\n if (this.$config.byMaxSize) {\n for (var i = 0; i < this.$cells.length; i++) {\n var otherCell = this.$cells[i].getSize();\n\n for (var cell in cellSize) {\n cellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\n }\n }\n }\n\n for (var size in sizes) {\n sizes[size] = sizes[size] || cellSize[size];\n }\n\n sizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\n }\n\n return sizes;\n };\n\n return ViewLayout;\n}(Layout);\n\nmodule.exports = ViewLayout;","module.exports = function (item, view, config) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: left,\n width: right - left\n };\n};","var barRectangle = require(\"./get_bar_rectangle\");\n\nmodule.exports = function getLinkBox(item, view, config, gantt) {\n if (!gantt.isTaskExists(item.source)) {\n return null;\n }\n\n if (!gantt.isTaskExists(item.target)) {\n return null;\n }\n\n var sourceBox = barRectangle(gantt.getTask(item.source), view, gantt);\n var targetBox = barRectangle(gantt.getTask(item.target), view, gantt);\n\n if (!sourceBox || !targetBox) {\n return null;\n }\n\n var padding = 100;\n var left = Math.min(sourceBox.left, targetBox.left) - padding;\n var right = Math.max(sourceBox.left + sourceBox.width, targetBox.left + targetBox.width) + padding;\n var top = Math.min(sourceBox.top, targetBox.top) - padding;\n var bottom = Math.max(sourceBox.top + sourceBox.height, targetBox.top + targetBox.height) + padding;\n return {\n top: top,\n height: bottom - top,\n bottom: bottom,\n left: left,\n width: right - left,\n right: right\n };\n};","module.exports = function (viewport, box) {\n if (!box) {\n return false;\n }\n\n if (box.left > viewport.x_end || box.left + box.width < viewport.x) {\n return false;\n }\n\n if (box.top > viewport.y_end || box.top + box.height < viewport.y) {\n return false;\n }\n\n return true;\n};","var genericViewPortChecker = require(\"./viewport/is_in_viewport\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar basicGetRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar basicGetRange = require(\"./viewport/get_visible_bars_range\");\n\nvar rendererFactory = function rendererFactory(gantt) {\n //hash of dom elements is needed to redraw single bar/link\n var task_area_pulls = {},\n task_area_renderers = {};\n\n function getView(layer) {\n var view = null;\n\n if (typeof layer.view === \"string\") {\n view = gantt.$ui.getView(layer.view);\n } else if (layer.view) {\n view = layer.view;\n }\n\n return view;\n }\n\n function getRenderer(id, layer, node) {\n if (task_area_renderers[id]) return task_area_renderers[id];\n if (!layer.renderer) gantt.assert(false, \"Invalid renderer call\");\n var renderMethod = null;\n var updateMethod = null;\n var getRectangle = null;\n var renderCallbackMethod = null;\n var specializedViewPortChecker = null;\n\n if (typeof layer.renderer === \"function\") {\n renderMethod = layer.renderer;\n getRectangle = basicGetRectangle;\n } else {\n renderMethod = layer.renderer.render;\n updateMethod = layer.renderer.update;\n renderCallbackMethod = layer.renderer.onrender;\n\n if (layer.renderer.isInViewPort) {\n specializedViewPortChecker = layer.renderer.isInViewPort;\n } else {\n getRectangle = layer.renderer.getRectangle;\n }\n\n if (!getRectangle && getRectangle !== null) {\n getRectangle = basicGetRectangle;\n }\n }\n\n var filter = layer.filter;\n if (node) node.setAttribute(gantt.config.layer_attribute, true);\n task_area_renderers[id] = {\n render_item: function render_item(item, container, viewPort, layerView, viewConfig) {\n container = container || node;\n\n if (filter) {\n if (!filter(item)) {\n this.remove_item(item.id);\n return;\n }\n }\n\n var view = layerView || getView(layer);\n var config = viewConfig || (view ? view.$getConfig() : null);\n var rendererViewPort = viewPort;\n\n if (!rendererViewPort && config && config.smart_rendering) {\n rendererViewPort = view.getViewPort();\n }\n\n var dom = null;\n\n if (!isLegacyRender(gantt) && (getRectangle || specializedViewPortChecker) && rendererViewPort) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, rendererViewPort, view, config, gantt);\n } else {\n isVisible = genericViewPortChecker(rendererViewPort, getRectangle(item, view, config, gantt));\n }\n\n if (isVisible) {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n } else {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n\n this.append(item, dom, container);\n var useBuffer = container.nodeType == 11; //DocumentFragment\n\n if (renderCallbackMethod && !useBuffer && dom) {\n renderCallbackMethod.call(gantt, item, dom, view);\n }\n },\n clear: function clear(container) {\n this.rendered = task_area_pulls[id] = {};\n if (!layer.append) this.clear_container(container);\n },\n clear_container: function clear_container(container) {\n container = container || node;\n\n if (container) {\n container.innerHTML = \"\";\n }\n },\n get_visible_range: function get_visible_range(datastore) {\n var view = getView(layer);\n var viewport;\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewport = view.getViewPort();\n }\n\n var range;\n\n if (view && viewport) {\n if (typeof layer.renderer === \"function\") {\n range = basicGetRange(gantt, view, viewConfig, datastore, viewport);\n } else if (layer.renderer && layer.renderer.getVisibleRange) {\n range = layer.renderer.getVisibleRange(gantt, view, viewConfig, datastore, viewport);\n }\n }\n\n if (!range) {\n range = {\n start: 0,\n end: datastore.count()\n };\n }\n\n return range;\n },\n prepare_data: function prepare_data(items) {\n if (layer.renderer && layer.renderer.prepareData) {\n return layer.renderer.prepareData(items, gantt, layer);\n }\n },\n render_items: function render_items(items, container) {\n container = container || node;\n var buffer = document.createDocumentFragment();\n this.clear(container);\n var viewPort = null;\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewPort = view.getViewPort();\n }\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n\n container.appendChild(buffer, container);\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n update_items: function update_items(items, container) {\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (!view || !view.$getConfig().smart_rendering || isLegacyRender(gantt)) {\n return;\n }\n\n if (!this.rendered) {\n return;\n }\n\n if (!(getRectangle || specializedViewPortChecker)) {\n return;\n }\n\n container = container || node;\n var buffer = document.createDocumentFragment();\n var viewPort = null;\n\n if (view) {\n viewPort = view.getViewPort();\n }\n\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n var nodesToRemove = {};\n\n for (var i in this.rendered) {\n nodesToRemove[i] = true;\n renderedItems[i] = true;\n }\n\n var renderCalledFor = {};\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n var item = items[i];\n var itemNode = this.rendered[item.id];\n nodesToRemove[item.id] = false;\n\n if (itemNode && itemNode.parentNode) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, viewPort, view, viewConfig, gantt);\n } else {\n isVisible = genericViewPortChecker(viewPort, getRectangle(item, view, viewConfig, gantt));\n }\n\n if (!isVisible) {\n nodesToRemove[item.id] = true;\n } else {\n if (updateMethod) {\n updateMethod.call(gantt, item, itemNode, view, viewConfig, viewPort);\n }\n\n this.restore(item, buffer);\n }\n } else {\n renderCalledFor[items[i].id] = true;\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n }\n\n for (var i in nodesToRemove) {\n if (nodesToRemove[i]) {\n this.hide(i);\n }\n }\n\n if (buffer.childNodes.length) {\n container.appendChild(buffer, container);\n }\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i] || renderCalledFor[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n append: function append(item, node, container) {\n if (!this.rendered) {\n return;\n }\n\n if (!node) {\n if (this.rendered[item.id]) {\n this.remove_item(item.id);\n }\n\n return;\n }\n\n if (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n this.replace_item(item.id, node);\n } else {\n container.appendChild(node);\n }\n\n this.rendered[item.id] = node;\n },\n replace_item: function replace_item(item_id, newNode) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.replaceChild(newNode, item);\n }\n\n this.rendered[item_id] = newNode;\n },\n remove_item: function remove_item(item_id) {\n this.hide(item_id);\n delete this.rendered[item_id];\n },\n hide: function hide(item_id) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.removeChild(item);\n }\n },\n restore: function restore(item, container) {\n var dom = this.rendered[item.id];\n\n if (dom) {\n if (!dom.parentNode) {\n this.append(item, dom, container || node);\n }\n } else {\n this.render_item(item, container || node);\n }\n },\n change_id: function change_id(oldid, newid) {\n this.rendered[newid] = this.rendered[oldid];\n delete this.rendered[oldid];\n },\n rendered: task_area_pulls[id],\n node: node,\n destructor: function destructor() {\n this.clear();\n delete task_area_renderers[id];\n delete task_area_pulls[id];\n }\n };\n return task_area_renderers[id];\n }\n\n function clearRenderers() {\n for (var i in task_area_renderers) {\n getRenderer(i).destructor();\n }\n }\n\n return {\n getRenderer: getRenderer,\n clearRenderers: clearRenderers\n };\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\n\nvar utils = require(\"../../../utils/utils\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar layerFactory = function layerFactory(gantt) {\n var renderFactory = renderFactoryProvider(gantt);\n return {\n createGroup: function createGroup(getContainer, relativeRoot, defaultFilters, initLayer) {\n var renderGroup = {\n tempCollection: [],\n renderers: {},\n container: getContainer,\n filters: [],\n getLayers: function getLayers() {\n this._add(); // add pending layers\n\n\n var res = [];\n\n for (var i in this.renderers) {\n res.push(this.renderers[i]);\n }\n\n return res;\n },\n getLayer: function getLayer(id) {\n return this.renderers[id];\n },\n _add: function _add(layer) {\n if (layer) {\n layer.id = layer.id || utils.uid();\n this.tempCollection.push(layer);\n }\n\n var container = this.container();\n var pending = this.tempCollection;\n\n for (var i = 0; i < pending.length; i++) {\n layer = pending[i];\n if (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n var node = layer.container,\n id = layer.id,\n topmost = layer.topmost;\n\n if (!node.parentNode) {\n //insert on top or below the tasks\n if (topmost) {\n container.appendChild(node);\n } else {\n var rel = relativeRoot ? relativeRoot() : container.firstChild; // GS-1274: if we don't add the second check, Gantt stops working if\n // we add the task layer without the timeline and switch to a layout with the timeline\n\n if (rel && rel.parentNode == container) container.insertBefore(node, rel);else container.appendChild(node);\n }\n }\n\n this.renderers[id] = renderFactory.getRenderer(id, layer, node);\n\n if (initLayer) {\n initLayer(layer, gantt);\n }\n\n this.tempCollection.splice(i, 1);\n i--;\n }\n },\n addLayer: function addLayer(config) {\n if (config) {\n if (typeof config == \"function\") {\n config = {\n renderer: config\n };\n }\n\n if (config.filter === undefined) {\n config.filter = mergeFilters(defaultFilters || []);\n } else if (config.filter instanceof Array) {\n config.filter.push(defaultFilters);\n config.filter = mergeFilters(config.filter);\n }\n\n if (!config.container) {\n config.container = document.createElement(\"div\");\n }\n\n var self = this;\n\n config.requestUpdate = function () {\n if (gantt.config.smart_rendering && !isLegacyRender(gantt)) {\n if (self.renderers[config.id]) {\n self.onUpdateRequest(self.renderers[config.id]);\n }\n }\n };\n }\n\n this._add(config);\n\n return config ? config.id : undefined;\n },\n onUpdateRequest: function onUpdateRequest(layer) {},\n eachLayer: function eachLayer(code) {\n for (var i in this.renderers) {\n code(this.renderers[i]);\n }\n },\n removeLayer: function removeLayer(id) {\n if (!this.renderers[id]) return;\n this.renderers[id].destructor();\n delete this.renderers[id];\n },\n clear: function clear() {\n for (var i in this.renderers) {\n this.renderers[i].destructor();\n }\n\n this.renderers = {};\n } //,\n //prepareConfig: prepareConfig\n\n };\n gantt.attachEvent(\"onDestroy\", function () {\n renderGroup.clear();\n renderGroup = null;\n });\n return renderGroup;\n }\n };\n};\n\nfunction mergeFilters(filter_methods) {\n if (!(filter_methods instanceof Array)) {\n filter_methods = Array.prototype.slice.call(arguments, 0);\n }\n\n return function (obj) {\n var res = true;\n\n for (var i = 0, len = filter_methods.length; i < len; i++) {\n var filter_method = filter_methods[i];\n\n if (filter_method) {\n res = res && filter_method(obj.id, obj) !== false;\n }\n }\n\n return res;\n };\n}\n\nmodule.exports = layerFactory;","var createLayerFactory = require(\"./render/layer_engine\");\n\nvar getVisibleTaskRange = require(\"./render/viewport/get_visible_bars_range\");\n\nvar getVisibleLinksRangeFactory = require(\"./render/viewport/factory/get_visible_link_range\");\n\nvar isLinkInViewport = require(\"./render/viewport/is_link_in_viewport\");\n\nfunction initLayer(layer, gantt) {\n if (!layer.view) {\n return;\n }\n\n var view = layer.view;\n\n if (typeof view === \"string\") {\n view = gantt.$ui.getView(view);\n }\n\n if (view && view.attachEvent) {\n view.attachEvent(\"onScroll\", function () {\n var state = gantt.$services.getService(\"state\"); // don't repaint if we're inside batchUpdate, a complete repaint will be called afterwards\n\n if (!state.getState(\"batchUpdate\").batch_update && !view.$config.$skipSmartRenderOnScroll) {\n if (layer.requestUpdate) {\n layer.requestUpdate();\n }\n }\n });\n }\n}\n\nvar createLayerEngine = function createLayerEngine(gantt) {\n var factory = createLayerFactory(gantt);\n return {\n getDataRender: function getDataRender(name) {\n return gantt.$services.getService(\"layer:\" + name) || null;\n },\n createDataRender: function createDataRender(config) {\n var name = config.name,\n defaultContainer = config.defaultContainer,\n previusSiblingContainer = config.defaultContainerSibling;\n var layers = factory.createGroup(defaultContainer, previusSiblingContainer, function (itemId, item) {\n if (layers.filters) {\n for (var i = 0; i < layers.filters.length; i++) {\n if (layers.filters[i](itemId, item) === false) {\n return false;\n }\n }\n } else {\n return true;\n }\n }, initLayer);\n gantt.$services.setService(\"layer:\" + name, function () {\n return layers;\n });\n gantt.attachEvent(\"onGanttReady\", function () {\n layers.addLayer(); // init layers on start\n });\n return layers;\n },\n init: function init() {\n var taskLayers = this.createDataRender({\n name: \"task\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n },\n defaultContainerSibling: function defaultContainerSibling() {\n if (gantt.$task_links) {\n return gantt.$task_links;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_links;\n }\n },\n filter: function filter(item) {}\n }, gantt);\n var linkLayers = this.createDataRender({\n name: \"link\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n }\n }, gantt);\n return {\n addTaskLayer: function addTaskLayer(config) {\n var rangeFunction = getVisibleTaskRange;\n\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: rangeFunction\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = rangeFunction;\n }\n }\n\n config.view = \"timeline\";\n return taskLayers.addLayer(config);\n },\n _getTaskLayers: function _getTaskLayers() {\n return taskLayers.getLayers();\n },\n removeTaskLayer: function removeTaskLayer(id) {\n taskLayers.removeLayer(id);\n },\n _clearTaskLayers: function _clearTaskLayers() {\n taskLayers.clear();\n },\n addLinkLayer: function addLinkLayer(config) {\n var rangeFunction = getVisibleLinksRangeFactory();\n\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: rangeFunction\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = rangeFunction;\n }\n }\n\n config.view = \"timeline\";\n\n if (config && config.renderer) {\n if (!config.renderer.getRectangle && !config.renderer.isInViewPort) {\n config.renderer.isInViewPort = isLinkInViewport;\n }\n }\n\n return linkLayers.addLayer(config);\n },\n _getLinkLayers: function _getLinkLayers() {\n return linkLayers.getLayers();\n },\n removeLinkLayer: function removeLinkLayer(id) {\n linkLayers.removeLayer(id);\n },\n _clearLinkLayers: function _clearLinkLayers() {\n linkLayers.clear();\n }\n };\n }\n };\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar createMouseHandler = function (domHelpers) {\n return function (gantt) {\n var eventHandlers = {\n \"click\": {},\n \"doubleclick\": {},\n \"contextMenu\": {}\n };\n\n function addEventTarget(event, className, handler, root) {\n if (!eventHandlers[event][className]) {\n eventHandlers[event][className] = [];\n }\n\n eventHandlers[event][className].push({\n handler: handler,\n root: root\n });\n }\n\n function callHandler(eventName, className, root, args) {\n var handlers = eventHandlers[eventName][className];\n\n if (handlers) {\n for (var i = 0; i < handlers.length; i++) {\n if (!(root || handlers[i].root) || handlers[i].root === root) {\n handlers[i].handler.apply(this, args);\n }\n }\n }\n }\n\n function onClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.click);\n var res = true;\n\n if (id !== null) {\n res = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n } else {\n gantt.callEvent(\"onEmptyClick\", [e]);\n }\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return; // GS-1025: if we don't do that, the dropdown or date select will be closed for unselected tasks\n // GS-1078: or for the built-in select inline editor\n\n switch (e.target.nodeName) {\n case \"SELECT\":\n case 'INPUT':\n return;\n } //allow task selection when the multiselect plugin is not enabled\n\n\n if (id && gantt.getTask(id) && !gantt._multiselect && gantt.config.select_task) {\n gantt.selectTask(id);\n }\n }\n }\n\n function onContextMenu(e) {\n e = e || window.event;\n var src = e.target || e.srcElement,\n taskId = gantt.locate(src),\n linkId = gantt.locate(src, gantt.config.link_attribute);\n var res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\n if (!res) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n return res;\n }\n\n function findEventHandlers(e, hash) {\n var trg = e.target || e.srcElement;\n var handlers = [];\n\n while (trg) {\n var css = domHelpers.getClassName(trg);\n\n if (css) {\n css = css.split(\" \");\n\n for (var i = 0; i < css.length; i++) {\n if (!css[i]) continue;\n\n if (hash[css[i]]) {\n var delegateHandlers = hash[css[i]];\n\n for (var h = 0; h < delegateHandlers.length; h++) {\n if (delegateHandlers[h].root) {\n if (!domHelpers.isChildOf(trg, delegateHandlers[h].root)) {\n continue;\n }\n }\n\n handlers.push(delegateHandlers[h].handler);\n }\n }\n }\n }\n\n trg = trg.parentNode;\n }\n\n return handlers;\n }\n\n function callEventHandlers(handlers, e, id) {\n var res = true;\n\n for (var i = 0; i < handlers.length; i++) {\n var handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n res = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n }\n\n return res;\n }\n\n function onDoubleClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.doubleclick); // when doubleclick fired not on task, id === null\n\n var res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return;\n\n if (id !== null && gantt.getTask(id)) {\n if (res && gantt.config.details_on_dblclick && !gantt.isReadonly(id)) {\n gantt.showLightbox(id);\n }\n }\n }\n }\n\n function onMouseMove(e) {\n if (gantt.checkEvent(\"onMouseMove\")) {\n var id = gantt.locate(e);\n gantt._last_move_event = e;\n gantt.callEvent(\"onMouseMove\", [id, e]);\n }\n }\n\n function detach(eventName, className, handler, root) {\n if (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n var handlers = eventHandlers[eventName];\n var elementHandlers = handlers[className];\n\n for (var i = 0; i < elementHandlers.length; i++) {\n if (elementHandlers[i].root == root) {\n elementHandlers.splice(i, 1);\n i--;\n }\n }\n\n if (!elementHandlers.length) {\n delete handlers[className];\n }\n }\n }\n\n var domEvents = gantt._createDomEventScope();\n\n function reset(node) {\n domEvents.detachAll();\n\n if (node) {\n domEvents.attach(node, \"click\", onClick);\n domEvents.attach(node, \"dblclick\", onDoubleClick);\n domEvents.attach(node, \"mousemove\", onMouseMove);\n domEvents.attach(node, \"contextmenu\", onContextMenu);\n }\n }\n\n return {\n reset: reset,\n global: function global(event, classname, handler) {\n addEventTarget(event, classname, handler, null);\n },\n delegate: addEventTarget,\n detach: detach,\n callHandler: callHandler,\n onDoubleClick: onDoubleClick,\n onMouseMove: onMouseMove,\n onContextMenu: onContextMenu,\n onClick: onClick,\n destructor: function destructor() {\n reset();\n eventHandlers = null;\n domEvents = null;\n }\n };\n };\n}(domHelpers);\n\nmodule.exports = {\n init: createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction extendSettings(store, parentSettings) {\n var own = this.$config[store];\n\n if (own) {\n if (!own.$extendedConfig) {\n own.$extendedConfig = true;\n Object.setPrototypeOf(own, parentSettings);\n }\n\n return own;\n } else {\n return parentSettings;\n }\n}\n\nvar configurable = function configurable(parentView) {\n var parentConfig, parentTemplates;\n return {\n $getConfig: function $getConfig() {\n if (!parentConfig) {\n parentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n }\n\n if (!this.$config.config) {\n return parentConfig;\n } else {\n return extendSettings.call(this, \"config\", parentConfig);\n }\n },\n $getTemplates: function $getTemplates() {\n if (!parentTemplates) {\n parentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n }\n\n if (!this.$config.templates) {\n return parentTemplates;\n } else {\n return extendSettings.call(this, \"templates\", parentTemplates);\n }\n }\n };\n};\n\nmodule.exports = function (obj, parent) {\n utils.mixin(obj, configurable(parent));\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\"),\n configurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt) {\n var views = {};\n\n function ui(cell, parentView) {\n var content;\n var view = \"cell\";\n\n if (cell.view) {\n view = \"viewcell\";\n } else if (cell.resizer) {\n view = \"resizer\";\n } else if (cell.rows || cell.cols) {\n view = \"layout\";\n } else if (cell.views) {\n view = \"multiview\";\n }\n\n content = createView.call(this, view, null, cell, parentView);\n return content;\n }\n\n var createdViews = {};\n\n function createView(name, parent, config, parentView) {\n var creator = views[name];\n if (!creator || !creator.create) return false;\n\n if (name == \"resizer\" && !config.mode) {\n if (parentView.$config.cols) {\n config.mode = \"x\";\n } else {\n config.mode = \"y\";\n }\n }\n\n if (name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll) {\n if (parentView.$config.cols) {\n config.scroll = \"y\";\n } else {\n config.scroll = \"x\";\n }\n }\n\n var config = utils.copy(config);\n\n if (!config.id && !createdViews[config.view]) {\n config.id = config.view;\n }\n\n if (config.id && !config.css) {\n config.css = config.id + \"_cell\";\n }\n\n var view = new creator.create(parent, config, this, gantt);\n\n if (creator.configure) {\n creator.configure(view);\n }\n\n configurable(view, parentView);\n\n if (!view.$id) {\n view.$id = config.id || gantt.uid();\n }\n\n if (!view.$parent && _typeof(parent) == \"object\") {\n view.$parent = parent;\n }\n\n if (!view.$config) {\n view.$config = config;\n }\n\n if (createdViews[view.$id]) {\n view.$id = gantt.uid();\n }\n\n createdViews[view.$id] = view;\n return view;\n }\n\n function reset() {\n createdViews = {};\n }\n\n function register(name, viewConstructor, configure) {\n views[name] = {\n create: viewConstructor,\n configure: configure\n };\n }\n\n function getView(id) {\n return createdViews[id];\n }\n\n var factory = {\n initUI: ui,\n reset: reset,\n registerView: register,\n createView: createView,\n getView: getView\n };\n return factory;\n};\n\nmodule.exports = {\n createFactory: uiFactory\n};","var uiFactory = require(\"./ui_factory\"),\n mouseEvents = require(\"./mouse\"),\n createLayers = require(\"./gantt_layers\"),\n Cell = require(\"./layout/cell\"),\n Layout = require(\"./layout/layout\"),\n ViewLayout = require(\"./layout/view_layout\"),\n ViewCell = require(\"./layout/view_cell\"),\n Resizer = require(\"./layout/resizer_cell\"),\n Scrollbar = require(\"./layout/scrollbar_cell\"),\n Timeline = require(\"./timeline/timeline\"),\n Grid = require(\"./grid/grid\"),\n ResourceGrid = require(\"./grid/resource_grid\"),\n ResourceTimeline = require(\"./timeline/resource_timeline\"),\n ResourceHistogram = require(\"./timeline/resource_histogram\");\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\nvar renderTaskBar = require(\"./render/task_bar_smart_render\"),\n renderSplitTaskBar = require(\"./render/task_split_render\"),\n renderRollupTaskBar = require(\"./render/task_rollup_render\"),\n renderTaskBg = require(\"./render/task_bg_render\"),\n renderLink = require(\"./render/link_render\"),\n gridRenderer = require(\"./render/task_grid_line_render\"),\n resourceMatrixRenderer = require(\"./render/resource_matrix_render\"),\n resourceHistogramRenderer = require(\"./render/resource_histogram_render\"),\n gridTaskRowResizerRenderer = require(\"./render/task_grid_row_resize_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\n\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\n\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt) {\n function attachInitializer(view, initializer) {\n var ext = initializer(gantt);\n if (ext.onCreated) ext.onCreated(view);\n view.attachEvent(\"onReady\", function () {\n if (ext.onInitialized) ext.onInitialized(view);\n });\n view.attachEvent(\"onDestroy\", function () {\n if (ext.onDestroyed) ext.onDestroyed(view);\n });\n }\n\n var factory = uiFactory.createFactory(gantt);\n factory.registerView(\"cell\", Cell);\n factory.registerView(\"resizer\", Resizer);\n factory.registerView(\"scrollbar\", Scrollbar);\n factory.registerView(\"layout\", Layout, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"main\") {\n attachInitializer(view, mainLayoutInitializer);\n }\n });\n factory.registerView(\"viewcell\", ViewCell);\n factory.registerView(\"multiview\", ViewLayout);\n factory.registerView(\"timeline\", Timeline, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"timeline\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainTimelineInitializer);\n }\n });\n factory.registerView(\"grid\", Grid, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"grid\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainGridInitializer);\n }\n });\n factory.registerView(\"resourceGrid\", ResourceGrid);\n factory.registerView(\"resourceTimeline\", ResourceTimeline);\n factory.registerView(\"resourceHistogram\", ResourceHistogram);\n var layersEngine = createLayers(gantt);\n var inlineEditors = gridEditorsFactory(gantt);\n gantt.ext.inlineEditors = inlineEditors;\n gantt.ext._inlineEditors = inlineEditors;\n inlineEditors.init(gantt);\n return {\n factory: factory,\n mouseEvents: mouseEvents.init(gantt),\n layersApi: layersEngine.init(),\n render: {\n gridLine: function gridLine() {\n return gridRenderer(gantt);\n },\n taskBg: function taskBg() {\n return renderTaskBg(gantt);\n },\n taskBar: function taskBar() {\n return renderTaskBar(gantt);\n },\n taskRollupBar: function taskRollupBar() {\n return renderRollupTaskBar(gantt);\n },\n taskSplitBar: function taskSplitBar() {\n return renderSplitTaskBar(gantt);\n },\n link: function link() {\n return renderLink(gantt);\n },\n resourceRow: function resourceRow() {\n return resourceMatrixRenderer(gantt);\n },\n resourceHistogram: function resourceHistogram() {\n return resourceHistogramRenderer(gantt);\n },\n gridTaskRowResizer: function gridTaskRowResizer() {\n return gridTaskRowResizerRenderer(gantt);\n }\n },\n layersService: {\n getDataRender: function getDataRender(name) {\n return layersEngine.getDataRender(name, gantt);\n },\n createDataRender: function createDataRender(config) {\n return layersEngine.createDataRender(config, gantt);\n }\n }\n };\n}\n\nmodule.exports = {\n init: initUI\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\");\n\nvar domHelpers = require(\"./utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n var boxAttribute = \"data-dhxbox\";\n var _dhx_msg_cfg = null;\n\n function callback(config, result) {\n var usercall = config.callback;\n modalBox.hide(config.box);\n _dhx_msg_cfg = config.box = null;\n if (usercall) usercall(result);\n }\n\n function modal_key(event) {\n if (_dhx_msg_cfg) {\n var code = event.which || event.keyCode;\n var preventDefault = false;\n\n if (messageBox.keyboard) {\n if (code == 13 || code == 32) {\n // default behavior is to confirm/submit popup on space/enter\n // if browser focus is set on button element - do button click instead of default behavior\n var target = event.target || event.srcElement;\n\n if (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n target.click();\n } else {\n callback(_dhx_msg_cfg, true);\n preventDefault = true;\n }\n }\n\n if (code == 27) {\n callback(_dhx_msg_cfg, false);\n preventDefault = true;\n }\n }\n\n if (preventDefault) {\n if (event.preventDefault) {\n event.preventDefault();\n }\n\n return !(event.cancelBubble = true);\n }\n\n return;\n }\n }\n\n var eventElement = domHelpers.getRootNode(gantt.$root) || document;\n gantt.event(eventElement, \"keydown\", modal_key, true);\n\n function modality(mode) {\n if (!modality.cover) {\n modality.cover = document.createElement(\"div\"); //necessary for IE only\n\n modality.cover.onkeydown = modal_key;\n modality.cover.className = \"dhx_modal_cover\";\n document.body.appendChild(modality.cover);\n }\n\n modality.cover.style.display = mode ? \"inline-block\" : \"none\";\n }\n\n function button(text, className, result) {\n var buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\n var name = className.toLowerCase().replace(/ /g, \"_\");\n var button_css = \"gantt_\" + name + \"_button\";\n return \"<div \" + buttonAriaAttrs + \" class='gantt_popup_button \" + button_css + \"' data-result='\" + result + \"' result='\" + result + \"' ><div>\" + text + \"</div></div>\";\n }\n\n function info(text) {\n if (!messageBox.area) {\n messageBox.area = document.createElement(\"div\");\n messageBox.area.className = \"gantt_message_area\";\n messageBox.area.style[messageBox.position] = \"5px\";\n document.body.appendChild(messageBox.area);\n }\n\n messageBox.hide(text.id);\n var message = document.createElement(\"div\");\n message.innerHTML = \"<div>\" + text.text + \"</div>\";\n message.className = \"gantt-info gantt-\" + text.type;\n\n message.onclick = function () {\n messageBox.hide(text.id);\n text = null;\n };\n\n gantt._waiAria.messageInfoAttr(message);\n\n if (messageBox.position == \"bottom\" && messageBox.area.firstChild) messageBox.area.insertBefore(message, messageBox.area.firstChild);else messageBox.area.appendChild(message);\n if (text.expire > 0) messageBox.timers[text.id] = window.setTimeout(function () {\n // GS-1213: We need that when Gantt is destroyed\n if (messageBox) messageBox.hide(text.id);\n }, text.expire);\n messageBox.pull[text.id] = message;\n message = null;\n return text.id;\n }\n\n function getFirstDefined() {\n var values = [].slice.apply(arguments, [0]);\n\n for (var i = 0; i < values.length; i++) {\n if (values[i]) {\n return values[i];\n }\n }\n }\n\n function _boxStructure(config, ok, cancel) {\n var box = document.createElement(\"div\");\n var contentId = utils.uid();\n\n gantt._waiAria.messageModalAttr(box, contentId);\n\n box.className = \" gantt_modal_box gantt-\" + config.type;\n box.setAttribute(boxAttribute, 1);\n var inner = '';\n if (config.width) box.style.width = config.width;\n if (config.height) box.style.height = config.height;\n if (config.title) inner += '<div class=\"gantt_popup_title\">' + config.title + '</div>';\n inner += '<div class=\"gantt_popup_text\" id=\"' + contentId + '\"><span>' + (config.content ? '' : config.text) + '</span></div><div class=\"gantt_popup_controls\">';\n if (ok) inner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n if (cancel) inner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n if (config.buttons) {\n for (var i = 0; i < config.buttons.length; i++) {\n var btn = config.buttons[i];\n\n if (_typeof(btn) == \"object\") {\n // Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n var label = btn.label;\n var css = btn.css || \"gantt_\" + btn.label.toLowerCase() + \"_button\";\n var value = btn.value || i;\n inner += button(label, css, value);\n } else {\n inner += button(btn, btn, i);\n }\n }\n }\n\n inner += '</div>';\n box.innerHTML = inner;\n\n if (config.content) {\n var node = config.content;\n if (typeof node == \"string\") node = document.getElementById(node);\n if (node.style.display == 'none') node.style.display = \"\";\n box.childNodes[config.title ? 1 : 0].appendChild(node);\n }\n\n box.onclick = function (event) {\n var source = event.target || event.srcElement;\n if (!source.className) source = source.parentNode;\n\n if (domHelpers.closest(source, \".gantt_popup_button\")) {\n var result = source.getAttribute(\"data-result\");\n result = result == \"true\" || (result == \"false\" ? false : result);\n callback(config, result);\n }\n };\n\n config.box = box;\n if (ok || cancel) _dhx_msg_cfg = config;\n return box;\n }\n\n function _createBox(config, ok, cancel) {\n var box = config.tagName ? config : _boxStructure(config, ok, cancel);\n if (!config.hidden) modality(true);\n document.body.appendChild(box);\n var x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n var y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n if (config.position == \"top\") box.style.top = \"-3px\";else box.style.top = y + 'px';\n box.style.left = x + 'px'; //necessary for IE only\n\n box.onkeydown = modal_key;\n modalBox.focus(box);\n if (config.hidden) modalBox.hide(box);\n gantt.callEvent(\"onMessagePopup\", [box]);\n return box;\n }\n\n function alertPopup(config) {\n return _createBox(config, true, false);\n }\n\n function confirmPopup(config) {\n return _createBox(config, true, true);\n }\n\n function boxPopup(config) {\n return _createBox(config);\n }\n\n function box_params(text, type, callback) {\n if (_typeof(text) != \"object\") {\n if (typeof type == \"function\") {\n callback = type;\n type = \"\";\n }\n\n text = {\n text: text,\n type: type,\n callback: callback\n };\n }\n\n return text;\n }\n\n function params(text, type, expire, id) {\n if (_typeof(text) != \"object\") text = {\n text: text,\n type: type,\n expire: expire,\n id: id\n };\n text.id = text.id || utils.uid();\n text.expire = text.expire || messageBox.expire;\n return text;\n }\n\n var alertBox = function alertBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"confirm\";\n return alertPopup(text);\n };\n\n var confirmBox = function confirmBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return confirmPopup(text);\n };\n\n var modalBox = function modalBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return boxPopup(text);\n };\n\n modalBox.hide = function (node) {\n while (node && node.getAttribute && !node.getAttribute(boxAttribute)) {\n node = node.parentNode;\n }\n\n if (node) {\n node.parentNode.removeChild(node);\n modality(false);\n gantt.callEvent(\"onAfterMessagePopup\", [node]);\n }\n };\n\n modalBox.focus = function (node) {\n setTimeout(function () {\n var focusable = domHelpers.getFocusableNodes(node);\n\n if (focusable.length) {\n if (focusable[0].focus) focusable[0].focus();\n }\n }, 1);\n };\n\n var messageBox = function messageBox(text, type, expire, id) {\n text = params.apply(this, arguments);\n text.type = text.type || \"info\";\n var subtype = text.type.split(\"-\")[0];\n\n switch (subtype) {\n case \"alert\":\n return alertPopup(text);\n\n case \"confirm\":\n return confirmPopup(text);\n\n case \"modalbox\":\n return boxPopup(text);\n\n default:\n return info(text);\n }\n };\n\n messageBox.seed = new Date().valueOf();\n messageBox.uid = utils.uid;\n messageBox.expire = 4000;\n messageBox.keyboard = true;\n messageBox.position = \"top\";\n messageBox.pull = {};\n messageBox.timers = {};\n\n messageBox.hideAll = function () {\n for (var key in messageBox.pull) {\n messageBox.hide(key);\n }\n };\n\n messageBox.hide = function (id) {\n var obj = messageBox.pull[id];\n\n if (obj && obj.parentNode) {\n window.setTimeout(function () {\n obj.parentNode.removeChild(obj);\n obj = null;\n }, 2000);\n obj.className += \" hidden\";\n if (messageBox.timers[id]) window.clearTimeout(messageBox.timers[id]);\n delete messageBox.pull[id];\n }\n };\n\n var popups = [];\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n popups.push(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function (box) {\n for (var i = 0; i < popups.length; i++) {\n if (popups[i] === box) {\n popups.splice(i, 1);\n i--;\n }\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n if (modality.cover && modality.cover.parentNode) {\n modality.cover.parentNode.removeChild(modality.cover);\n }\n\n for (var i = 0; i < popups.length; i++) {\n if (popups[i].parentNode) {\n popups[i].parentNode.removeChild(popups[i]);\n }\n }\n\n popups = null;\n\n if (messageBox.area && messageBox.area.parentNode) {\n messageBox.area.parentNode.removeChild(messageBox.area);\n }\n\n messageBox = null;\n });\n return {\n alert: alertBox,\n confirm: confirmBox,\n message: messageBox,\n modalbox: modalBox\n };\n};","module.exports = function (gantt) {\n var utils = require(\"../utils/utils\");\n\n var env = require(\"../utils/env\");\n\n var isHeadless = require(\"../utils/is_headless\");\n\n if (!env.isNode) {\n var domHelpers = require(\"./ui/utils/dom_helpers\");\n\n var codeHelpers = require(\"../utils/helpers\");\n\n gantt.utils = {\n arrayFind: codeHelpers.arrayFind,\n dom: domHelpers\n };\n\n var domEvents = require(\"./ui/utils/dom_event_scope\")();\n\n gantt.event = domEvents.attach;\n gantt.eventRemove = domEvents.detach;\n gantt._eventRemoveAll = domEvents.detachAll;\n gantt._createDomEventScope = domEvents.extend;\n utils.mixin(gantt, require(\"./ui/message\")(gantt));\n\n var uiApi = require(\"./ui/index\").init(gantt);\n\n gantt.$ui = uiApi.factory;\n gantt.$ui.layers = uiApi.render;\n gantt.$mouseEvents = uiApi.mouseEvents;\n gantt.$services.setService(\"mouseEvents\", function () {\n return gantt.$mouseEvents;\n });\n gantt.mixin(gantt, uiApi.layersApi);\n\n require(\"./data_task_layers\")(gantt);\n\n gantt.$services.setService(\"layers\", function () {\n return uiApi.layersService;\n });\n\n var createLayoutFacade = require(\"./facades/layout\");\n\n gantt.mixin(gantt, createLayoutFacade());\n\n require(\"./ui/skin\")(gantt);\n\n require(\"../css/skins/skyblue\")(gantt);\n\n require(\"../css/skins/meadow\")(gantt);\n\n require(\"../css/skins/terrace\")(gantt);\n\n require(\"../css/skins/broadway\")(gantt);\n\n require(\"../css/skins/material\")(gantt);\n\n require(\"../css/skins/contrast_black\")(gantt);\n\n require(\"../css/skins/contrast_white\")(gantt);\n\n require(\"./ui/plugins\")(gantt);\n\n require(\"./ui/touch\")(gantt);\n\n require(\"./ui/lightbox\")(gantt);\n\n require(\"./ui/lightbox/lightbox_optional_time\")(gantt);\n\n require(\"./ui/wai_aria\")(gantt);\n\n gantt.locate = function (e) {\n var trg = domHelpers.getTargetNode(e); // ignore empty rows/cells of the timeline\n\n if (domHelpers.closest(trg, \".gantt_task_row\")) {\n return null;\n }\n\n var targetAttribute = arguments[1] || this.config.task_attribute;\n var node = domHelpers.locateAttribute(trg, targetAttribute);\n\n if (node) {\n return node.getAttribute(targetAttribute);\n } else {\n return null;\n }\n };\n\n gantt._locate_css = function (e, classname, strict) {\n return domHelpers.locateClassName(e, classname, strict);\n };\n\n gantt._locateHTML = function (e, attribute) {\n return domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n };\n }\n\n gantt.attachEvent(\"onParse\", function () {\n if (!isHeadless(gantt)) {\n gantt.attachEvent(\"onGanttRender\", function () {\n if (gantt.config.initial_scroll) {\n var firstTask = gantt.getTaskByIndex(0);\n var id = firstTask ? firstTask.id : gantt.config.root_id; // GS-1450. Don't scroll to the task if there is no timeline\n\n if (gantt.isTaskExists(id) && gantt.$task && gantt.utils.dom.isChildOf(gantt.$task, gantt.$container)) {\n gantt.showTask(id);\n }\n }\n }, {\n once: true\n });\n }\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (!this.config.scroll_size) this.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n if (!isHeadless(gantt)) {\n // detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\n this._eventRemoveAll();\n\n this.$mouseEvents.reset();\n this.resetLightbox();\n }\n }); // GS-1261: scroll the views to the right side when RTL is enabled\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt) && gantt.config.rtl) {\n gantt.$layout.getCellsByType(\"viewCell\").forEach(function (cell) {\n var attachedScrollbar = cell.$config.scrollX;\n if (!attachedScrollbar) return;\n var scrollbar = gantt.$ui.getView(attachedScrollbar);\n if (scrollbar) scrollbar.scrollTo(scrollbar.$config.scrollSize, 0);\n });\n }\n }); // GS-1649: check if extensions are connected via files\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var activePlugins = gantt.plugins();\n var availablePlugins = {\n auto_scheduling: gantt.autoSchedule,\n click_drag: gantt.ext.clickDrag,\n critical_path: gantt.isCriticalTask,\n drag_timeline: gantt.ext.dragTimeline,\n export_api: gantt.exportToPDF,\n fullscreen: gantt.ext.fullscreen,\n grouping: gantt.groupBy,\n keyboard_navigation: gantt.ext.keyboardNavigation,\n marker: gantt.addMarker,\n multiselect: gantt.eachSelectedTask,\n overlay: gantt.ext.overlay,\n quick_info: gantt.templates.quick_info_content,\n tooltip: gantt.ext.tooltips,\n undo: gantt.undo\n };\n\n for (var plugin in availablePlugins) {\n if (availablePlugins[plugin] && !activePlugins[plugin]) {\n // eslint-disable-next-line no-console\n console.warn(\"You connected the '\".concat(plugin, \"' extension via an obsolete file. \\nTo fix it, you need to remove the obsolete file and connect the extension via the plugins method: https://docs.dhtmlx.com/gantt/api__gantt_plugins.html\"));\n }\n }\n }\n });\n};","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Нове завдання\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", // Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tsection_type: \"Тип\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Відміна\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n * updated by @levkar at https://github.com/DHTMLX/gantt/pull/10\r\n */\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tmonth_short: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Yeni görev\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"İptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Görev silinecek, emin misiniz?\",\r\n\t\tsection_description: \"Açıklama\",\r\n\t\tsection_time: \"Zaman Aralığı\",\r\n\t\tsection_type: \"Tip\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Görev Adı\",\r\n\t\tcolumn_start_date: \"Başlangıç\",\r\n\t\tcolumn_duration: \"Süre\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Bağlantı\",\r\n\t\tconfirm_link_deleting: \"silinecek\",\r\n\t\tlink_start: \" (başlangıç)\",\r\n\t\tlink_end: \" (bitiş)\",\r\n\r\n\t\ttype_task: \"Görev\",\r\n\t\ttype_project: \"Proje\",\r\n\t\ttype_milestone: \"Kilometretaşı\",\r\n\r\n\r\n\t\tminutes: \"Dakika\",\r\n\t\thours: \"Saat\",\r\n\t\tdays: \"Gün\",\r\n\t\tweeks: \"Hafta\",\r\n\t\tmonths: \"Ay\",\r\n\t\tyears: \"Yıl\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Ýptal\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n\tTranslation by Peter Eriksson\r\n */\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny uppgift\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detajer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\",\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tsection_type: \"Typ\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Uppgiftsnamn\",\r\n\t\tcolumn_start_date: \"Starttid\",\r\n\t\tcolumn_duration: \"Varaktighet\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\r\n\t\tlink: \"Länk\",\r\n\t\tconfirm_link_deleting: \"kommer tas bort\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (slut)\",\r\n\t\ttype_task: \"Uppgift\",\r\n\t\ttype_project: \"Projekt\",\r\n\t\ttype_milestone: \"Milstolpe\",\r\n\r\n\t\tminutes: \"Minuter\",\r\n\t\thours: \"Timmar\",\r\n\t\tdays: \"Dagar\",\r\n\t\tweeks: \"Veckor\",\r\n\t\tmonths: \"Månader\",\r\n\t\tyears: \"År\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Avbryt\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nová úloha\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", // Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Späť\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nova naloga\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", // Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Prekliči\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Новое задание\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", // Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tsection_type: \"Тип\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"ИСР\",\r\n\t\tcolumn_text: \"Задача\",\r\n\t\tcolumn_start_date: \"Начало\",\r\n\t\tcolumn_duration: \"Длительность\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Связь\",\r\n\t\tconfirm_link_deleting: \"будет удалена\",\r\n\t\tlink_start: \" (начало)\",\r\n\t\tlink_end: \" (конец)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Минута\",\r\n\t\thours: \"Час\",\r\n\t\tdays: \"День\",\r\n\t\tweeks: \"Неделя\",\r\n\t\tmonths: \"Месяц\",\r\n\t\tyears: \"Год\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Отменить\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"начните вводить слово для фильтрации\",\r\n\t\tresources_filter_label: \"спрятать не установленные\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Sarcina noua\",\r\n\t\ticon_save: \"Salveaza\",\r\n\t\ticon_cancel: \"Anuleaza\",\r\n\t\ticon_details: \"Detalii\",\r\n\t\ticon_edit: \"Editeaza\",\r\n\t\ticon_delete: \"Sterge\",\r\n\t\tconfirm_closing: \"Schimbarile nu vor fi salvate, esti sigur?\",// Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description: \"Descriere\",\r\n\t\tsection_time: \"Interval\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Anuleaza\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n\r\n Updated by Jorge Albernaz Martins\r\n\r\n jorgefox@hotmail.com\r\n\r\n www.redfox.inf.br\r\n\r\n JorgeFox\r\n\r\n*/\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nova tarefa\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Excluir\",\r\n\t\tconfirm_closing: \"\",// Suas alterações serão perdidas, confirme?\r\n\t\tconfirm_deleting: \"As tarefas serão excluidas permanentemente, confirme?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período\",\r\n\t\tsection_type: \"Tipo\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"EAP\",\r\n\t\tcolumn_text: \"Nome tarefa\",\r\n\t\tcolumn_start_date: \"Data início\",\r\n\t\tcolumn_duration: \"Duração\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"Será excluído!\",\r\n\t\tlink_start: \" (início)\",\r\n\t\tlink_end: \" (fim)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Projeto\",\r\n\t\ttype_milestone: \"Marco\",\r\n\r\n\r\n\t\tminutes: \"Minutos\",\r\n\t\thours: \"Horas\",\r\n\t\tdays: \"Dias\",\r\n\t\tweeks: \"Semanas\",\r\n\t\tmonths: \"Meses\",\r\n\t\tyears: \"Anos\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancelar\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Restrição\",\r\n\t\tconstraint_type: \"Tipo Restrição\",\r\n\t\tconstraint_date: \"Data restrição\",\r\n\t\tasap: \"Mais breve possível\",\r\n\t\talap: \"Mais tarde possível\",\r\n\t\tsnet: \"Não começar antes de\",\r\n\t\tsnlt: \"Não começar depois de\",\r\n\t\tfnet: \"Não terminar antes de\",\r\n\t\tfnlt: \"Não terminar depois de\",\r\n\t\tmso: \"Precisa começar em\",\r\n\t\tmfo: \"Precisa terminar em\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"Tipo de filtros\",\r\n\t\tresources_filter_label: \"Ocultar vazios\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nowe zadanie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", // Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tsection_type: \"Typ\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Nazwa zadania\",\r\n\t\tcolumn_start_date: \"Początek\",\r\n\t\tcolumn_duration: \"Czas trwania\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"zostanie usunięty\",\r\n\t\tlink_start: \" (początek)\",\r\n\t\tlink_end: \" (koniec)\",\r\n\r\n\t\ttype_task: \"Zadanie\",\r\n\t\ttype_project: \"Projekt\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minuty\",\r\n\t\thours: \"Godziny\",\r\n\t\tdays: \"Dni\",\r\n\t\tweeks: \"Tydzień\",\r\n\t\tmonths: \"Miesiące\",\r\n\t\tyears: \"Lata\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Anuluj\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny oppgave\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", // Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Avbryt\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nieuwe taak\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Taak omschrijving\",\r\n\t\tcolumn_start_date: \"Startdatum\",\r\n\t\tcolumn_duration: \"Duur\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Koppeling\",\r\n\t\tconfirm_link_deleting: \"zal worden verwijderd\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (eind)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"minuten\",\r\n\t\thours: \"uren\",\r\n\t\tdays: \"dagen\",\r\n\t\tweeks: \"weken\",\r\n\t\tmonths: \"maanden\",\r\n\t\tyears: \"jaren\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Annuleren\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny oppgave\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Avbryt\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","export default class LocaleManager{\r\n\tprivate _locales:{[key:string]: IGanttLocale };\r\n\r\n\tconstructor(config: {[key:string]: IGanttLocale }){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale = (name: string, locale: IGanttLocale) => {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale = (name: string): IGanttLocale => {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","/*\r\n\tTranslated by cjkim@dbvalley.com\r\n*/\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\r\n\t\tmonth_short: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\r\n\t\tday_full: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\r\n\t\tday_short: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"이름없는 작업\",\r\n\t\ticon_save: \"저장\",\r\n\t\ticon_cancel: \"취소\",\r\n\t\ticon_details: \"세부 사항\",\r\n\t\ticon_edit: \"수정\",\r\n\t\ticon_delete: \"삭제\",\r\n\t\tconfirm_closing: \"\",\r\n\t\tconfirm_deleting: \"작업을 삭제하시겠습니까?\",\r\n\t\tsection_description: \"설명\",\r\n\t\tsection_time: \"기간\",\r\n\t\tsection_type: \"Type\",\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"작업명\",\r\n\t\tcolumn_start_date: \"시작일\",\r\n\t\tcolumn_duration: \"기간\",\r\n\t\tcolumn_add: \"\",\r\n\t\tlink: \"전제\",\r\n\t\tconfirm_link_deleting: \"삭제 하시겠습니까?\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\t\ttype_task: \"작업\",\r\n\t\ttype_project: \"프로젝트\",\r\n\t\ttype_milestone: \"마일스톤\",\r\n\t\tminutes: \"분\",\r\n\t\thours: \"시간\",\r\n\t\tdays: \"일\",\r\n\t\tweeks: \"주\",\r\n\t\tmonths: \"달\",\r\n\t\tyears: \"년\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"취소\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"新しい仕事\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", // 変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"キャンセル\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n Update 29/12/2015:\r\n New labels translation by ARCANGELI CLAUDIO\r\n\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nuovo compito\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\",// \"Sei sicuro di confermare la chiusura?\",\r\n\t\tconfirm_deleting: \"Sei sicuro di confermare l'eliminazione?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tsection_type: \"Tipo\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Nome Attività\",\r\n\t\tcolumn_start_date: \"Inizio\",\r\n\t\tcolumn_duration: \"Durata\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"sarà eliminato\",\r\n\t\tlink_start: \" (inizio)\",\r\n\t\tlink_end: \" (fine)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minuti\",\r\n\t\thours: \"Ore\",\r\n\t\tdays: \"Giorni\",\r\n\t\tweeks: \"Settimane\",\r\n\t\tmonths: \"Mesi\",\r\n\t\tyears: \"Anni\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Chiudi\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Tugas baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /* Perubahan tidak akan disimpan ? */\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Batal\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Új feladat\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", // A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Mégse\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n Translation by Davor\r\n http://docs.dhtmlx.com/gantt/desktop__localization.html#comment-2569116291\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\r\n\t\tmonth_short: [\"Sij\", \"Velj\", \"Ožu\", \"Tra\", \"Svi\", \"Lip\", \"Srp\", \"Kol\", \"Ruj\", \"Lis\", \"Stu\", \"Pro\"],\r\n\t\tday_full: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"Četvrtak\", \"Petak\", \"Subota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Novi Zadatak\",\r\n\t\ticon_save: \"Spremi\",\r\n\t\ticon_cancel: \"Odustani\",\r\n\t\ticon_details: \"Detalji\",\r\n\t\ticon_edit: \"Izmjeni\",\r\n\t\ticon_delete: \"Obriši\",\r\n\t\tconfirm_closing: \"\",\r\n\t\tconfirm_deleting: \"Zadatak će biti trajno izbrisan, jeste li sigurni?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Vremenski Period\",\r\n\t\tsection_type: \"Tip\",\r\n\r\n\t\t/* grid columns */\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Naziv Zadatka\",\r\n\t\tcolumn_start_date: \"Početno Vrijeme\",\r\n\t\tcolumn_duration: \"Trajanje\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Poveznica\",\r\n\t\tconfirm_link_deleting: \"će biti izbrisan\",\r\n\t\tlink_start: \" (početak)\",\r\n\t\tlink_end: \" (kraj)\",\r\n\r\n\t\ttype_task: \"Zadatak\",\r\n\t\ttype_project: \"Projekt\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minute\",\r\n\t\thours: \"Sati\",\r\n\t\tdays: \"Dani\",\r\n\t\tweeks: \"Tjedni\",\r\n\t\tmonths: \"Mjeseci\",\r\n\t\tyears: \"Godine\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Odustani\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"משימה חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"הסבר\",\r\n\t\tsection_time: \"תקופה\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"בטל\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nouvelle tâche\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\",// Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tsection_type: \"Type\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"OTP\",\r\n\t\tcolumn_text: \"Nom de la tâche\",\r\n\t\tcolumn_start_date: \"Date initiale\",\r\n\t\tcolumn_duration: \"Durée\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Le lien\",\r\n\t\tconfirm_link_deleting: \"sera supprimé\",\r\n\t\tlink_start: \"(début)\",\r\n\t\tlink_end: \"(fin)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Heures\",\r\n\t\tdays: \"Jours\",\r\n\t\tweeks: \"Semaines\",\r\n\t\tmonths: \"Mois\",\r\n\t\tyears: \"Années\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Annuler\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Uusi tehtävä\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Peru\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n dhtmlxGantt Persian (Farsi, fa_IR) locale by Mohammad Shokri http://slashsbin.com/\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\r\n\t\t\t\"ژانویه\",\r\n\t\t\t\"فوریه\",\r\n\t\t\t\"مارس\",\r\n\t\t\t\"آوریل\",\r\n\t\t\t\"مه\",\r\n\t\t\t\"ژوئن\",\r\n\t\t\t\"ژوئیه\",\r\n\t\t\t\"اوت\",\r\n\t\t\t\"سپتامبر\",\r\n\t\t\t\"اکتبر\",\r\n\t\t\t\"نوامبر\",\r\n\t\t\t\"دسامبر\"\r\n\t\t],\r\n\t\tmonth_short: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\r\n\t\tday_full: [\r\n\t\t\t\"يکشنبه\",\r\n\t\t\t\"دوشنبه\",\r\n\t\t\t\"سهشنبه\",\r\n\t\t\t\"چهارشنبه\",\r\n\t\t\t\"پنجشنبه\",\r\n\t\t\t\"جمعه\",\r\n\t\t\t\"شنبه\"\r\n\t\t],\r\n\t\tday_short: [\r\n\t\t\t\"ی\",\r\n\t\t\t\"د\",\r\n\t\t\t\"س\",\r\n\t\t\t\"چ\",\r\n\t\t\t\"پ\",\r\n\t\t\t\"ج\",\r\n\t\t\t\"ش\"\r\n\t\t]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"وظیفه جدید\",\r\n\t\ticon_save: \"ذخیره\",\r\n\t\ticon_cancel: \"لغو\",\r\n\t\ticon_details: \"جزییات\",\r\n\t\ticon_edit: \"ویرایش\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"تغییرات شما ازدست خواهد رفت، آیا مطمئن هستید؟\",\r\n\t\tconfirm_deleting: \"این مورد برای همیشه حذف خواهد شد، آیا مطمئن هستید؟\",\r\n\t\tsection_description: \"توضیحات\",\r\n\t\tsection_time: \"مدت زمان\",\r\n\t\tsection_type: \"نوع\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"عنوان\",\r\n\t\tcolumn_start_date: \"زمان شروع\",\r\n\t\tcolumn_duration: \"مدت\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"ارتباط\",\r\n\t\tconfirm_link_deleting: \"حذف خواهد شد\",\r\n\t\tlink_start: \" (آغاز)\",\r\n\t\tlink_end: \" (پایان)\",\r\n\r\n\t\ttype_task: \"وظیفه\",\r\n\t\ttype_project: \"پروژه\",\r\n\t\ttype_milestone: \"نگارش\",\r\n\r\n\t\tminutes: \"دقایق\",\r\n\t\thours: \"ساعات\",\r\n\t\tdays: \"روزها\",\r\n\t\tweeks: \"هفته\",\r\n\t\tmonths: \"ماهها\",\r\n\t\tyears: \"سالها\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"تایید\",\r\n\t\tmessage_cancel: \"لغو\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n\r\n Update 30/10/2015:\r\n Translation of new labels by Jorge Macias\r\n https://disqus.com/by/disqus_bTuZk1voC7/\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nueva tarea\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", // \"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tsection_type: \"Tipo\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"EDT\",\r\n\t\tcolumn_text: \"Tarea\",\r\n\t\tcolumn_start_date: \"Inicio\",\r\n\t\tcolumn_duration: \"Duración\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Enlace\",\r\n\t\tconfirm_link_deleting: \"será borrada\",\r\n\t\tlink_start: \" (inicio)\",\r\n\t\tlink_end: \" (fin)\",\r\n\r\n\t\ttype_task: \"Tarea\",\r\n\t\ttype_project: \"Proyecto\",\r\n\t\ttype_milestone: \"Hito\",\r\n\r\n\r\n\t\tminutes: \"Minutos\",\r\n\t\thours: \"Horas\",\r\n\t\tdays: \"Días\",\r\n\t\tweeks: \"Semanas\",\r\n\t\tmonths: \"Meses\",\r\n\t\tyears: \"Años\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancelar\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"New task\",\r\n\t\ticon_save: \"Save\",\r\n\t\ticon_cancel: \"Cancel\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Delete\",\r\n\t\tconfirm_closing: \"\",// Your changes will be lost, are you sure?\r\n\t\tconfirm_deleting: \"Task will be deleted permanently, are you sure?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Time period\",\r\n\t\tsection_type: \"Type\",\r\n\r\n\t\t/* grid columns */\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Κυριακή\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Νέα εργασία\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Άκυρο\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Neue Aufgabe\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", // \"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"PSP\",\r\n\t\tcolumn_text: \"Task-Namen\",\r\n\t\tcolumn_start_date: \"Startzeit\",\r\n\t\tcolumn_duration: \"Dauer\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"werden gelöscht\",\r\n\t\tlink_start: \"(starten)\",\r\n\t\tlink_end: \"(ende)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minuten\",\r\n\t\thours: \"Stunden\",\r\n\t\tdays: \"Tage\",\r\n\t\tweeks: \"Wochen\",\r\n\t\tmonths: \"Monate\",\r\n\t\tyears: \"Jahre\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Abbrechen\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Regel\",\r\n\t\tconstraint_type: \"Regel\",\r\n\t\tconstraint_date: \"Regel - Datum\",\r\n\t\tasap: \"So bald wie möglich\",\r\n\t\talap: \"So spät wie möglich\",\r\n\t\tsnet: \"Beginn nicht vor\",\r\n\t\tsnlt: \"Beginn nicht später als\",\r\n\t\tfnet: \"Fertigstellung nicht vor\",\r\n\t\tfnlt: \"Fertigstellung nicht später als\",\r\n\t\tmso: \"Muss beginnen am\",\r\n\t\tmfo: \"Muss fertig sein am\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny opgave\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Fortryd\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nová práce\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", // Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Zpět\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\nTranslation by FreezeSoul\r\n\r\nUpdate 26/10/2015:\r\nTranslation of new labels by zwh8800\r\n https://github.com/DHTMLX/gantt/pull/7\r\n\r\n*/\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"新任務\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", // Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tsection_type: \"类型\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"工作分解结构\",\r\n\t\tcolumn_text: \"任务名\",\r\n\t\tcolumn_start_date: \"开始时间\",\r\n\t\tcolumn_duration: \"持续时间\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\r\n\t\tlink: \"关联\",\r\n\t\tconfirm_link_deleting: \"将被删除\",\r\n\t\tlink_start: \" (开始)\",\r\n\t\tlink_end: \" (结束)\",\r\n\r\n\t\ttype_task: \"任务\",\r\n\t\ttype_project: \"项目\",\r\n\t\ttype_milestone: \"里程碑\",\r\n\r\n\t\tminutes: \"分钟\",\r\n\t\thours: \"小时\",\r\n\t\tdays: \"天\",\r\n\t\tweeks: \"周\",\r\n\t\tmonths: \"月\",\r\n\t\tyears: \"年\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"关闭\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nova tasca\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", // \"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel·lar\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [\"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Новае заданне\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", // Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tsection_type: \"Тып\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"ІСР\",\r\n\t\tcolumn_text: \"Задача\",\r\n\t\tcolumn_start_date: \"Пачатак\",\r\n\t\tcolumn_duration: \"Працяг\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Сувязь\",\r\n\t\tconfirm_link_deleting: \"будзе выдалена\",\r\n\t\tlink_start: \"(пачатак)\",\r\n\t\tlink_end: \"(канец)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Хвiлiна\",\r\n\t\thours: \"Гадзiна\",\r\n\t\tdays: \"Дзень\",\r\n\t\tweeks: \"Тыдзень\",\r\n\t\tmonths: \"Месяц\",\r\n\t\tyears: \"Год\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Адмяніць\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"مهمة جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"الغاء\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fa from \"./locale_fa\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hr from \"./locale_hr\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\nimport kr from \"./locale_kr\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfa,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thr,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tkr,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","// all builds except for evaluation version get this mockup\r\n// the evaluation build gets actual codes\r\nexport default () => {};","function extend(gantt) {\n gantt.destructor = function () {\n this.clearAll();\n this.callEvent(\"onDestroy\", []);\n\n if (this.$root) {\n delete this.$root.gantt;\n }\n\n if (this._eventRemoveAll) {\n this._eventRemoveAll();\n }\n\n if (this.$layout) {\n this.$layout.destructor();\n }\n\n if (this.resetLightbox) {\n this.resetLightbox();\n }\n\n if (this._dp && this._dp.destructor) {\n this._dp.destructor();\n }\n\n this.$services.destructor(); // detachAllEvents should be called last, because in components may be attached events\n\n this.detachAllEvents();\n\n for (var i in this) {\n if (i.indexOf(\"$\") === 0) {\n delete this[i];\n }\n }\n\n this.$destroyed = true;\n };\n}\n\nmodule.exports = extend;","/*\r\n \tasserts will be removed in final code, so you can place them anythere\r\n\twithout caring about performance impacts\r\n*/\nmodule.exports = function (gantt) {\n return function assert(check, message) {\n if (!check) {\n if (gantt.config.show_errors && gantt.callEvent(\"onError\", [message]) !== false) {\n if (gantt.message) {\n gantt.message({\n type: \"error\",\n text: message,\n expire: -1\n });\n } else {\n // eslint-disable-next-line\n console.log(message);\n } // eslint-disable-next-line no-debugger\n\n\n debugger;\n }\n }\n };\n};","function addResizeListener(gantt) {\n var containerStyles = window.getComputedStyle(gantt.$root);\n\n if (containerStyles.getPropertyValue(\"position\") == \"static\") {\n gantt.$root.style.position = \"relative\";\n }\n\n var resizeWatcher = document.createElement('iframe');\n resizeWatcher.className = \"gantt_container_resize_watcher\";\n resizeWatcher.tabIndex = -1;\n\n if (gantt.config.wai_aria_attributes) {\n resizeWatcher.setAttribute(\"role\", \"none\");\n resizeWatcher.setAttribute(\"aria-hidden\", true);\n }\n\n var salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\n\n if (salesforce_environment) {\n gantt.config.container_resize_method = \"timeout\";\n } // in some environments (namely, in SalesForce) iframe.contentWindow is not available\n\n\n gantt.$root.appendChild(resizeWatcher);\n\n if (resizeWatcher.contentWindow) {\n listenWindowResize(gantt, resizeWatcher.contentWindow);\n } else {\n // if so - ditch the iframe and fallback to listening the main window resize\n gantt.$root.removeChild(resizeWatcher);\n listenWindowResize(gantt, window);\n }\n}\n\nfunction listenWindowResize(gantt, window) {\n var resizeTimeout = gantt.config.container_resize_timeout || 20;\n var resizeDelay;\n\n if (gantt.config.container_resize_method == \"timeout\") {\n lowlevelResizeWatcher();\n } else {\n try {\n gantt.event(window, \"resize\", function () {\n if (gantt.$scrollbarRepaint) {\n gantt.$scrollbarRepaint = null;\n } else {\n repaintGantt();\n }\n });\n } catch (e) {\n lowlevelResizeWatcher();\n }\n }\n\n function repaintGantt() {\n clearTimeout(resizeDelay);\n resizeDelay = setTimeout(function () {\n if (!gantt.$destroyed) {\n gantt.render();\n }\n }, resizeTimeout);\n }\n\n var previousHeight = gantt.$root.offsetHeight;\n var previousWidth = gantt.$root.offsetWidth;\n\n function lowlevelResizeWatcher() {\n if (gantt.$root.offsetHeight != previousHeight || gantt.$root.offsetWidth != previousWidth) {\n repaintGantt();\n }\n\n previousHeight = gantt.$root.offsetHeight;\n previousWidth = gantt.$root.offsetWidth;\n setTimeout(lowlevelResizeWatcher, resizeTimeout);\n }\n}\n\nmodule.exports = addResizeListener;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar domHelpers = require(\"./ui/utils/dom_helpers\"),\n helpers = require(\"../utils/helpers\");\n\nvar isHeadless = require(\"../utils/is_headless\");\n\nvar addResizeListener = require(\"./ui/resize_listener\");\n\nmodule.exports = function (gantt) {\n var calculateScaleRange = require(\"./gantt_data_range\");\n\n gantt.assert = require(\"./common/assert\")(gantt);\n\n function isHTMLElement(node) {\n try {\n node.cloneNode(false);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n var invalidContainerMessage = \"Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).\" + \"This error means that either invalid object is passed into `gantt.init` or that the element with the specified ID doesn't exist on the page when `gantt.init` is called.\";\n\n function validateNode(node) {\n if (!node || typeof node == 'string' && document.getElementById(node)) return true;\n if (isHTMLElement(node)) return true;\n gantt.assert(false, invalidContainerMessage);\n throw new Error(invalidContainerMessage);\n } //initial initialization\n\n\n gantt.init = function (node, from, to) {\n if (gantt.env.isNode) {\n node = null; // for the nodejs version\n } else {\n validateNode(node); // for the web version\n }\n\n if (from && to) {\n this.config.start_date = this._min_date = new Date(from);\n this.config.end_date = this._max_date = new Date(to);\n }\n\n this.date.init(); //can be called only once\n\n this.init = function (node) {\n if (gantt.env.isNode) {\n node = null; // for the nodejs version\n } else {\n validateNode(node); // for the web version\n }\n\n if (this.$container && this.$container.parentNode) {\n this.$container.parentNode.removeChild(this.$container);\n this.$container = null;\n }\n\n if (this.$layout) {\n this.$layout.clear();\n }\n\n this._reinit(node);\n };\n\n this._reinit(node);\n };\n\n gantt._quickRefresh = function (code) {\n var stores = this._getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i]._quick_refresh = true;\n }\n\n code();\n\n for (var i = 0; i < stores.length; i++) {\n stores[i]._quick_refresh = false;\n }\n };\n\n var dropLayout = function dropLayout() {\n if (this._clearTaskLayers) {\n this._clearTaskLayers();\n }\n\n if (this._clearLinkLayers) {\n this._clearLinkLayers();\n }\n\n if (this.$layout) {\n this.$layout.destructor();\n this.$layout = null;\n this.$ui.reset();\n }\n }.bind(gantt);\n\n var rebuildLayout = function rebuildLayout() {\n if (isHeadless(gantt)) {\n return;\n }\n\n this.$root.innerHTML = \"\";\n this.$root.gantt = this;\n calculateScaleRange(this);\n this.config.layout.id = \"main\";\n this.$layout = this.$ui.createView(\"layout\", this.$root, this.config.layout);\n this.$layout.attachEvent(\"onBeforeResize\", function () {\n var storeNames = gantt.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeNames.length; i++) {\n gantt.getDatastore(storeNames[i]).filter();\n\n if (gantt.$data.tasksStore._skipTaskRecalculation) {\n // do not repaint items, they will be repainted later in the onStoreUpdate event\n if (gantt.$data.tasksStore._skipTaskRecalculation != \"lightbox\") {\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n }\n } else {\n gantt.getDatastore(storeNames[i]).callEvent(\"onBeforeRefreshAll\", []);\n }\n }\n });\n this.$layout.attachEvent(\"onResize\", function () {\n gantt._quickRefresh(function () {\n gantt.refreshData();\n });\n });\n this.callEvent(\"onGanttLayoutReady\", []);\n this.$layout.render();\n this.$container = this.$layout.$container.firstChild;\n addResizeListener(this);\n }.bind(gantt);\n\n gantt.resetLayout = function () {\n dropLayout();\n rebuildLayout();\n this.render();\n };\n\n gantt._reinit = function (node) {\n this.callEvent(\"onBeforeGanttReady\", []);\n\n this._update_flags();\n\n var config = this.$services.getService(\"templateLoader\");\n config.initTemplates(this);\n dropLayout();\n this.$root = null;\n\n if (node) {\n this.$root = domHelpers.toNode(node);\n rebuildLayout();\n this.$mouseEvents.reset(this.$root);\n }\n\n this.callEvent(\"onTemplatesReady\", []);\n this.callEvent(\"onGanttReady\", []);\n this.render();\n };\n\n gantt.$click = {\n buttons: {\n \"edit\": function edit(id) {\n if (gantt.isReadonly(gantt.getTask(id))) {\n return;\n }\n\n gantt.showLightbox(id);\n },\n \"delete\": function _delete(id) {\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n return;\n }\n\n var question = gantt.locale.labels.confirm_deleting;\n var title = gantt.locale.labels.confirm_deleting_title;\n\n gantt._simple_confirm(question, title, function () {\n if (!gantt.isTaskExists(id)) {\n gantt.hideLightbox();\n return;\n }\n\n if (task.$new) {\n // GS-2170. Do not recalculate the indexes and dates of other tasks\n // as they will be recalculated in the `refreshData`\n gantt.$data.tasksStore._skipTaskRecalculation = \"lightbox\";\n gantt.silent(function () {\n gantt.deleteTask(id, true);\n });\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n gantt.refreshData();\n } else {\n gantt.$data.tasksStore._skipTaskRecalculation = true;\n gantt.deleteTask(id);\n }\n\n gantt.hideLightbox();\n });\n }\n }\n }; //renders self\n\n gantt.render = function () {\n this.callEvent(\"onBeforeGanttRender\", []);\n var visibleDate;\n\n if (!isHeadless(gantt)) {\n if (!this.config.sort && this._sort) {\n this._sort = undefined;\n }\n\n if (this.$root) {\n if (this.config.rtl) {\n this.$root.classList.add(\"gantt_rtl\");\n this.$root.firstChild.classList.add(\"gantt_rtl\"); // GS-1499\n } else {\n this.$root.classList.remove(\"gantt_rtl\");\n this.$root.firstChild.classList.remove(\"gantt_rtl\"); // GS-1499\n }\n }\n\n var pos = this.getScrollState();\n var posX = pos ? pos.x : 0;\n\n if (this._getHorizontalScrollbar()) {\n var scrollbar = this._getHorizontalScrollbar();\n\n posX = scrollbar.$config.codeScrollLeft || posX || 0;\n }\n\n visibleDate = null;\n\n if (posX) {\n visibleDate = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n }\n }\n\n calculateScaleRange(this);\n\n if (!isHeadless(gantt)) {\n this.$layout.$config.autosize = this.config.autosize;\n var preserveScroll = this.config.preserve_scroll;\n this.config.preserve_scroll = false; // prevent scrolling from layout resize, scroll will be called here later on\n\n this.$layout.resize();\n this.config.preserve_scroll = preserveScroll;\n\n if (this.config.preserve_scroll && pos) {\n // GS-1640: We need pos.y, otherwise part of the timeline won't be rendered if the scrollbar disappeared\n if (posX || pos.y) {\n var new_pos = gantt.getScrollState();\n var new_date = gantt.dateFromPos(new_pos.x);\n\n if (!(+visibleDate == +new_date && new_pos.y == pos.y)) {\n var posX = null;\n var posY = null;\n\n if (visibleDate) {\n var posX = Math.max(gantt.posFromDate(visibleDate) - gantt.config.task_scroll_offset, 0);\n }\n\n if (pos.y) {\n posY = pos.y;\n }\n\n gantt.scrollTo(posX, posY);\n }\n } // GS-1640: We need to reset the scroll position for the grid if the scrollbar disappeared and\n // the grid and timeline have different scrollbars\n\n\n var gridCell = gantt.$ui.getView(\"grid\");\n\n if (gridCell) {\n var attachedScrollbar = gridCell.$config.scrollY;\n var verticalScrollbar = gantt.$ui.getView(attachedScrollbar);\n\n if (verticalScrollbar) {\n var scrollbarNodeVisible = gantt.utils.dom.isChildOf(verticalScrollbar.$view, gantt.$container);\n\n if (!scrollbarNodeVisible) {\n gridCell.scrollTo(undefined, 0);\n }\n }\n }\n }\n } else {\n gantt.refreshData();\n }\n\n this.callEvent(\"onGanttRender\", []);\n }; //TODO: add layout.resize method that wouldn't trigger data repaint\n\n\n gantt.setSizes = gantt.render;\n\n gantt.getTaskRowNode = function (id) {\n var els = this.$grid_data.childNodes;\n var attribute = this.config.task_attribute;\n\n for (var i = 0; i < els.length; i++) {\n if (els[i].getAttribute) {\n var value = els[i].getAttribute(attribute);\n if (value == id) return els[i];\n }\n }\n\n return null;\n };\n\n gantt.changeLightboxType = function (type) {\n if (this.getLightboxType() == type) return true;\n\n gantt._silent_redraw_lightbox(type);\n };\n\n gantt._get_link_type = function (from_start, to_start) {\n var type = null;\n\n if (from_start && to_start) {\n type = gantt.config.links.start_to_start;\n } else if (!from_start && to_start) {\n type = gantt.config.links.finish_to_start;\n } else if (!from_start && !to_start) {\n type = gantt.config.links.finish_to_finish;\n } else if (from_start && !to_start) {\n type = gantt.config.links.start_to_finish;\n }\n\n return type;\n };\n\n gantt.isLinkAllowed = function (from, to, from_start, to_start) {\n var link = null;\n\n if (_typeof(from) == \"object\") {\n link = from;\n } else {\n link = {\n source: from,\n target: to,\n type: this._get_link_type(from_start, to_start)\n };\n }\n\n if (!link) return false;\n if (!(link.source && link.target && link.type)) return false;\n if (link.source == link.target) return false;\n var res = true; //any custom rules\n\n if (this.checkEvent(\"onLinkValidation\")) res = this.callEvent(\"onLinkValidation\", [link]);\n return res;\n };\n\n gantt._correct_dst_change = function (date, prevOffset, step, unit) {\n var time_unit = helpers.getSecondsInUnit(unit) * step;\n\n if (time_unit > 60 * 60 && time_unit < 60 * 60 * 24) {\n //correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n var offsetChanged = date.getTimezoneOffset() - prevOffset;\n\n if (offsetChanged) {\n date = gantt.date.add(date, offsetChanged, \"minute\");\n }\n }\n\n return date;\n };\n\n gantt.isSplitTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isSplitTask. Task object was expected\");\n return this.$data.tasksStore._isSplitItem(task);\n };\n\n gantt._is_icon_open_click = function (e) {\n if (!e) return false;\n var target = e.target || e.srcElement;\n if (!(target && target.className)) return false;\n var className = domHelpers.getClassName(target);\n if (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1)) return true;\n return false;\n };\n};","/*\r\n reuse results of functions that can be recalculated during rendering\r\n greatly increases the rendering speed when critical path enabled\r\n Sample - 94_dev/critical_path.html\r\n\r\n */\nmodule.exports = function (gantt) {\n gantt._cached_functions = {\n cache: {},\n mode: false,\n critical_path_mode: false,\n wrap_methods: function wrap_methods(methods, object) {\n if (object._prefetch_originals) {\n for (var i in object._prefetch_originals) {\n object[i] = object._prefetch_originals[i];\n }\n }\n\n object._prefetch_originals = {};\n\n for (var i = 0; i < methods.length; i++) {\n this.prefetch(methods[i], object);\n }\n },\n prefetch: function prefetch(methodname, host) {\n var original = host[methodname];\n\n if (original) {\n var optimizer = this;\n host._prefetch_originals[methodname] = original;\n\n host[methodname] = function get_prefetched_value() {\n var argumentsArray = new Array(arguments.length);\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n argumentsArray[i] = arguments[i];\n }\n\n if (optimizer.active) {\n var args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\n\n if (!optimizer.cache[methodname]) {\n optimizer.cache[methodname] = {};\n }\n\n var cached_values = optimizer.cache[methodname];\n\n if (optimizer.has_cached_value(cached_values, args)) {\n return optimizer.get_cached_value(cached_values, args);\n } else {\n var value = original.apply(this, argumentsArray);\n optimizer.cache_value(cached_values, args, value);\n return value;\n }\n }\n\n return original.apply(this, argumentsArray);\n };\n }\n\n return original;\n },\n cache_value: function cache_value(cache, arguments_hash, value) {\n if (this.is_date(value)) value = new Date(value);\n cache[arguments_hash] = value;\n },\n has_cached_value: function has_cached_value(cache, arguments_hash) {\n return cache.hasOwnProperty(arguments_hash);\n },\n get_cached_value: function get_cached_value(cache, arguments_hash) {\n var data = cache[arguments_hash]; //for cached dates - return copy\n\n if (this.is_date(data)) {\n data = new Date(data);\n }\n\n return data;\n },\n is_date: function is_date(value) {\n return value && value.getUTCDate;\n },\n get_arguments_hash: function get_arguments_hash(args) {\n var values = [];\n\n for (var i = 0; i < args.length; i++) {\n values.push(this.stringify_argument(args[i]));\n }\n\n return \"(\" + values.join(\";\") + \")\";\n },\n stringify_argument: function stringify_argument(value) {\n //expecting task or link, or any other data entries, dates and primitive values\n var ret = \"\";\n\n if (value.id) {\n ret = value.id;\n } else if (this.is_date(value)) {\n ret = value.valueOf();\n } else {\n ret = value;\n }\n\n return ret + \"\";\n },\n activate: function activate() {\n this.clear();\n this.active = true;\n },\n deactivate: function deactivate() {\n this.clear();\n this.active = false;\n },\n clear: function clear() {\n this.cache = {};\n },\n setup: function setup(gantt) {\n var override_gantt = [];\n var gantt_methods = ['_isProjectEnd', '_getProjectEnd', '_getSlack'];\n\n if (this.mode == 'auto') {\n if (gantt.config.highlight_critical_path) {\n override_gantt = gantt_methods;\n }\n } else if (this.mode === true) {\n override_gantt = gantt_methods;\n }\n\n this.wrap_methods(override_gantt, gantt);\n },\n update_if_changed: function update_if_changed(gantt) {\n var changed = this.critical_path_mode != gantt.config.highlight_critical_path || this.mode !== gantt.config.optimize_render;\n\n if (changed) {\n this.critical_path_mode = gantt.config.highlight_critical_path;\n this.mode = gantt.config.optimize_render;\n this.setup(gantt);\n }\n }\n };\n\n function activate() {\n gantt._cached_functions.update_if_changed(gantt);\n\n if (!gantt._cached_functions.active) {\n gantt._cached_functions.activate();\n }\n\n return true;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", activate);\n gantt.attachEvent(\"onBeforeDataRender\", activate);\n gantt.attachEvent(\"onBeforeSmartRender\", function () {\n activate();\n });\n gantt.attachEvent(\"onBeforeParse\", activate);\n gantt.attachEvent(\"onDataRender\", function () {\n gantt._cached_functions.deactivate();\n });\n var deactivTimeout = null;\n gantt.attachEvent(\"onSmartRender\", function () {\n if (deactivTimeout) clearTimeout(deactivTimeout);\n deactivTimeout = setTimeout(function () {\n gantt._cached_functions.deactivate();\n }, 1000);\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n gantt._cached_functions.update_if_changed(gantt);\n\n return true;\n });\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (gantt) {\n gantt.getTaskType = function (type) {\n var checkType = type;\n\n if (type && _typeof(type) == \"object\") {\n checkType = type.type;\n }\n\n for (var i in this.config.types) {\n if (this.config.types[i] == checkType) {\n return checkType;\n }\n }\n\n return gantt.config.types.task;\n };\n};","// all builds except for evaluation version get this mockup\r\n// the evaluation build gets actual codes\r\nexport default () => {};","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function (gantt) {\n gantt.isUnscheduledTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isUnscheduledTask. Task object was expected\");\n return !!task.unscheduled || !task.start_date;\n };\n\n gantt._isAllowedUnscheduledTask = function (task) {\n return !!(task.unscheduled && gantt.config.show_unscheduled);\n };\n\n gantt._isTaskInTimelineLimits = function (task) {\n var taskStart = task.start_date ? task.start_date.valueOf() : null;\n var taskEnd = task.end_date ? task.end_date.valueOf() : null;\n return !!(taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf());\n };\n\n gantt.isTaskVisible = function (id) {\n if (!this.isTaskExists(id)) {\n return false;\n }\n\n var task = this.getTask(id);\n\n if (!(this._isAllowedUnscheduledTask(task) || this._isTaskInTimelineLimits(task))) {\n return false;\n }\n\n return !!(this.getGlobalTaskIndex(id) >= 0);\n };\n\n gantt._getProjectEnd = function () {\n if (gantt.config.project_end) {\n return gantt.config.project_end;\n } else {\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.end_date > +b.end_date ? 1 : -1;\n });\n return tasks.length ? tasks[tasks.length - 1].end_date : null;\n }\n };\n\n gantt._getProjectStart = function () {\n if (gantt.config.project_start) {\n return gantt.config.project_start;\n } // use timeline start if project start is not specified\n\n\n if (gantt.config.start_date) {\n return gantt.config.start_date;\n }\n\n if (gantt.getState().min_date) {\n return gantt.getState().min_date;\n } // earliest task start if neither project start nor timeline are specified\n\n\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.start_date > +b.start_date ? 1 : -1;\n });\n return tasks.length ? tasks[0].start_date : null;\n };\n\n var getDefaultTaskDate = function getDefaultTaskDate(item, parent_id) {\n var parentExists = parent_id && parent_id != gantt.config.root_id && gantt.isTaskExists(parent_id);\n var parent = parentExists ? gantt.getTask(parent_id) : false,\n startDate = null;\n\n if (parent) {\n if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: parent.end_date,\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n startDate = parent.start_date;\n }\n } else if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: gantt._getProjectEnd(),\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n var first = gantt.getTaskByIndex(0);\n startDate = first ? first.start_date ? first.start_date : first.end_date ? gantt.calculateEndDate({\n start_date: first.end_date,\n duration: -gantt.config.duration_step,\n task: item\n }) : null : gantt.config.start_date || gantt.getState().min_date;\n }\n\n gantt.assert(startDate, \"Invalid dates\");\n return new Date(startDate);\n };\n\n gantt._set_default_task_timing = function (task) {\n task.start_date = task.start_date || getDefaultTaskDate(task, gantt.getParent(task));\n task.duration = task.duration || gantt.config.duration_step;\n task.end_date = task.end_date || gantt.calculateEndDate(task);\n };\n\n gantt.createTask = function (item, parent, index) {\n item = item || {};\n if (!gantt.defined(item.id)) item.id = gantt.uid();\n\n if (!item.start_date) {\n item.start_date = getDefaultTaskDate(item, parent);\n }\n\n if (item.text === undefined) {\n item.text = gantt.locale.labels.new_task;\n }\n\n if (item.duration === undefined) {\n item.duration = 1;\n }\n\n if (this.isTaskExists(parent)) {\n this.setParent(item, parent, true);\n var parentObj = this.getTask(parent);\n parentObj.$open = true;\n }\n\n if (!this.callEvent(\"onTaskCreated\", [item])) {\n return null;\n }\n\n if (this.config.details_on_create) {\n //GS-761: assert unique ID\n if (gantt.isTaskExists(item.id)) {\n var task = gantt.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n this.$data.tasksStore.updateItem(item.id, item);\n }\n } else {\n item.$new = true;\n this.silent(function () {\n gantt.$data.tasksStore.addItem(item, index);\n });\n }\n\n this.selectTask(item.id);\n this.refreshData();\n this.showLightbox(item.id);\n } else {\n if (this.addTask(item, parent, index)) {\n this.showTask(item.id);\n this.selectTask(item.id);\n }\n }\n\n return item.id;\n };\n\n gantt._update_flags = function (oldid, newid) {\n // TODO: need a proper way to update all possible flags\n var store = gantt.$data.tasksStore;\n\n if (oldid === undefined) {\n this._lightbox_id = null;\n store.silent(function () {\n store.unselect();\n }); // GS-1522. If we have multiselect, unselect all previously selected tasks\n\n if (this.getSelectedTasks) {\n this._multiselect.reset();\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag) {\n this._tasks_dnd.drag.id = null;\n }\n } else {\n if (this._lightbox_id == oldid) this._lightbox_id = newid; // TODO: probably can be removed\n\n if (store.getSelectedId() == oldid) {\n store.silent(function () {\n store.unselect(oldid);\n store.select(newid);\n });\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n this._tasks_dnd.drag.id = newid;\n }\n }\n };\n\n var getTaskTimingMode = function getTaskTimingMode(task, force) {\n var task_type = gantt.getTaskType(task.type);\n var state = {\n type: task_type,\n $no_start: false,\n $no_end: false\n };\n\n if (!force && task_type == task.$rendered_type) {\n state.$no_start = task.$no_start;\n state.$no_end = task.$no_end;\n return state;\n }\n\n if (task_type == gantt.config.types.project) {\n //project duration is always defined by children duration\n state.$no_end = state.$no_start = true;\n } else if (task_type != gantt.config.types.milestone) {\n //tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n state.$no_end = !(task.end_date || task.duration);\n state.$no_start = !task.start_date;\n\n if (gantt._isAllowedUnscheduledTask(task)) {\n state.$no_end = state.$no_start = false;\n }\n }\n\n return state;\n };\n\n gantt._init_task_timing = function (task) {\n var task_mode = getTaskTimingMode(task, true);\n var dirty = task.$rendered_type != task_mode.type;\n var task_type = task_mode.type;\n\n if (dirty) {\n task.$no_start = task_mode.$no_start;\n task.$no_end = task_mode.$no_end;\n task.$rendered_type = task_mode.type;\n }\n\n if (dirty && task_type != this.config.types.milestone) {\n if (task_type == this.config.types.project) {\n //project duration is always defined by children duration\n this._set_default_task_timing(task);\n\n task.$calculate_duration = false; // do not recalculate duration below\n }\n }\n\n if (task_type == this.config.types.milestone) {\n task.end_date = task.start_date;\n }\n\n if (task.start_date && task.end_date && task.$calculate_duration !== false) {\n task.duration = this.calculateDuration(task);\n }\n\n if (!task.$calculate_duration) {\n task.$calculate_duration = true;\n }\n\n if (!task.end_date) {\n task.end_date = task.start_date;\n }\n\n task.duration = task.duration || 0; // GS-1145. We should let tasks to have 0 duration if user wants it\n\n if (this.config.min_duration === 0 && task.duration === 0) {\n task.$no_end = false;\n } // work calendar of task has changed\n\n\n var effectiveCalendar = this.getTaskCalendar(task);\n\n if (task.$effective_calendar && task.$effective_calendar !== effectiveCalendar.id) {\n updateTaskTiming(task);\n\n if (this.config.inherit_calendar && this.isSummaryTask(task)) {\n this.eachTask(function (child) {\n updateTaskTiming(child);\n }, task.id);\n }\n }\n\n task.$effective_calendar = effectiveCalendar.id;\n };\n\n function updateTaskTiming(task) {\n task.$effective_calendar = gantt.getTaskCalendar(task).id;\n task.start_date = gantt.getClosestWorkTime({\n dir: \"future\",\n date: task.start_date,\n unit: gantt.config.duration_unit,\n task: task\n });\n task.end_date = gantt.calculateEndDate(task);\n }\n\n gantt.isSummaryTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isSummaryTask. Task object was expected\");\n var mode = getTaskTimingMode(task);\n return !!(mode.$no_end || mode.$no_start);\n }; // downward calculation of project duration\n\n\n gantt.resetProjectDates = function (task) {\n var taskMode = getTaskTimingMode(task);\n\n if (taskMode.$no_end || taskMode.$no_start) {\n var info = getSubtaskInfo(task.id);\n assignProjectDates.call(this, task, taskMode, info.start_date, info.end_date);\n task.$rollup = info.rollup;\n }\n };\n\n function assignProjectDates(task, taskTiming, from, to) {\n if (taskTiming.$no_start) {\n if (from) {\n task.start_date = new Date(from);\n } else {\n task.start_date = getDefaultTaskDate(task, this.getParent(task));\n }\n }\n\n if (taskTiming.$no_end) {\n if (to) {\n task.end_date = new Date(to);\n } else {\n task.end_date = this.calculateEndDate({\n start_date: task.start_date,\n duration: this.config.duration_step,\n task: task\n });\n }\n }\n\n if (taskTiming.$no_start || taskTiming.$no_end) {\n this._init_task_timing(task);\n }\n }\n\n gantt.getSubtaskDuration = function (taskId) {\n var res = 0,\n root = taskId !== undefined ? taskId : gantt.config.root_id;\n this.eachTask(function (child) {\n if (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child)) return;\n res += child.duration;\n }, root);\n return res;\n };\n\n function getSubtaskInfo(taskId) {\n var min = null,\n max = null,\n root = taskId !== undefined ? taskId : gantt.config.root_id,\n rollup = [];\n gantt.eachTask(function (child) {\n if (gantt.getTaskType(child.type) == gantt.config.types.project || gantt.isUnscheduledTask(child)) return;\n\n if (child.rollup) {\n rollup.push(child.id);\n }\n\n if (child.start_date && !child.$no_start && (!min || min > child.start_date.valueOf())) min = child.start_date.valueOf();\n if (child.end_date && !child.$no_end && (!max || max < child.end_date.valueOf())) max = child.end_date.valueOf();\n }, root);\n return {\n start_date: min ? new Date(min) : null,\n end_date: max ? new Date(max) : null,\n rollup: rollup\n };\n }\n\n gantt.getSubtaskDates = function (task_id) {\n var info = getSubtaskInfo(task_id);\n return {\n start_date: info.start_date,\n end_date: info.end_date\n };\n }; // upward calculation of project duration\n\n\n gantt._update_parents = function (taskId, silent, updateAll) {\n if (!taskId) return;\n var task = this.getTask(taskId);\n\n if (task.rollup) {\n updateAll = true;\n }\n\n var pid = this.getParent(task);\n var taskTiming = getTaskTimingMode(task);\n var has_changed = true; // GS-761 the dates check is necessary for adding empty tasks: gantt.addTask({id:\"2\"})\n\n if (updateAll || task.start_date && task.end_date && (taskTiming.$no_start || taskTiming.$no_end)) {\n var oldStart = task.start_date.valueOf(),\n oldEnd = task.end_date.valueOf();\n gantt.resetProjectDates(task); // not refresh parent projects if dates hasn't changed\n\n if (!updateAll && oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\n has_changed = false;\n }\n\n if (has_changed && !silent) {\n this.refreshTask(task.id, true);\n }\n }\n\n if (has_changed && pid && this.isTaskExists(pid)) {\n this._update_parents(pid, silent, updateAll);\n }\n };\n\n gantt.roundDate = function (config) {\n var scale = gantt.getScale();\n\n if (helpers.isDate(config)) {\n config = {\n date: config,\n unit: scale ? scale.unit : gantt.config.duration_unit,\n step: scale ? scale.step : gantt.config.duration_step\n };\n }\n\n var date = config.date,\n steps = config.step,\n unit = config.unit;\n\n if (!scale) {\n return date;\n }\n\n var upper, lower, colIndex;\n\n if (unit == scale.unit && steps == scale.step && +date >= +scale.min_date && +date <= +scale.max_date) {\n //find date in time scale config\n colIndex = Math.floor(gantt.columnIndexByDate(date));\n\n if (!scale.trace_x[colIndex]) {\n colIndex -= 1; // end of time scale\n\n if (scale.rtl) {\n colIndex = 0;\n }\n }\n\n lower = new Date(scale.trace_x[colIndex]);\n upper = gantt.date.add(lower, steps, unit);\n } else {\n colIndex = Math.floor(gantt.columnIndexByDate(date));\n upper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\n\n if (scale.trace_x[colIndex]) {\n upper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]); // end of time scale\n }\n\n while (+upper < +date) {\n upper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\n var tzOffset = upper.getTimezoneOffset();\n upper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\n if (gantt.date[unit + '_start']) upper = gantt.date[unit + '_start'](upper);\n }\n\n lower = gantt.date.add(upper, -1 * steps, unit);\n }\n\n if (config.dir && config.dir == 'future') return upper;\n if (config.dir && config.dir == 'past') return lower;\n\n if (Math.abs(date - lower) < Math.abs(upper - date)) {\n return lower;\n } else {\n return upper;\n }\n };\n\n gantt.correctTaskWorkTime = function (task) {\n if (gantt.config.work_time && gantt.config.correct_work_time) {\n if (!this.isWorkTime(task.start_date, undefined, task)) {\n task.start_date = this.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n task.end_date = this.calculateEndDate(task);\n } else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\n task.end_date = this.calculateEndDate(task);\n }\n }\n };\n\n gantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\n gantt._init_task_timing(task);\n\n return true;\n });\n gantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\n gantt._init_task_timing(task);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskMove\", function (id, parent, tindex) {\n gantt._init_task_timing(gantt.getTask(id));\n\n return true;\n });\n};","// TODO: rework public api for date methods\nvar utils = require(\"../../utils/utils\");\n\nvar createWorkTimeFacade = function createWorkTimeFacade(calendarManager, timeCalculator) {\n return {\n getWorkHours: function getWorkHours(date) {\n return timeCalculator.getWorkHours(date);\n },\n setWorkTime: function setWorkTime(config) {\n return timeCalculator.setWorkTime(config);\n },\n unsetWorkTime: function unsetWorkTime(config) {\n timeCalculator.unsetWorkTime(config);\n },\n isWorkTime: function isWorkTime(date, unit, task) {\n return timeCalculator.isWorkTime(date, unit, task);\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n return timeCalculator.getClosestWorkTime(config);\n },\n calculateDuration: function calculateDuration(start_date, end_date, task) {\n return timeCalculator.calculateDuration(start_date, end_date, task);\n },\n _hasDuration: function _hasDuration(start_date, end_date, task) {\n return timeCalculator.hasDuration(start_date, end_date, task);\n },\n calculateEndDate: function calculateEndDate(start, duration, unit, task) {\n return timeCalculator.calculateEndDate(start, duration, unit, task);\n },\n mergeCalendars: utils.bind(calendarManager.mergeCalendars, calendarManager),\n createCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\n addCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\n getCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\n getCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\n getResourceCalendar: utils.bind(calendarManager.getResourceCalendar, calendarManager),\n getTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\n deleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\n };\n};\n\nmodule.exports = {\n create: createWorkTimeFacade\n};","function CalendarDisabledTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n}\n\nCalendarDisabledTimeStrategy.prototype = {\n getWorkHours: function getWorkHours() {\n return [0, 24];\n },\n setWorkTime: function setWorkTime() {\n return true;\n },\n unsetWorkTime: function unsetWorkTime() {\n return true;\n },\n isWorkTime: function isWorkTime() {\n return true;\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n var config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return config.date;\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n return this._calculateDuration(from, to, unit, step);\n },\n _calculateDuration: function _calculateDuration(start, end, unit, step) {\n var dateHelper = this.$gantt.date;\n var fixedUnits = {\n \"week\": 1000 * 60 * 60 * 24 * 7,\n \"day\": 1000 * 60 * 60 * 24,\n \"hour\": 1000 * 60 * 60,\n \"minute\": 1000 * 60\n };\n var res = 0;\n\n if (fixedUnits[unit]) {\n res = Math.round((end - start) / (step * fixedUnits[unit]));\n } else {\n var from = new Date(start),\n to = new Date(end);\n\n while (from.valueOf() < to.valueOf()) {\n res += 1;\n from = dateHelper.add(from, step, unit);\n }\n\n if (from.valueOf() != end.valueOf()) {\n res += (to - from) / (dateHelper.add(from, step, unit) - from);\n }\n }\n\n return Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit;\n\n if (!unit) {\n return false;\n }\n\n from = new Date(from);\n to = new Date(to);\n return from.valueOf() < to.valueOf();\n },\n hasWorkTime: function hasWorkTime() {\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarDisabledTimeStrategy)) {\n return false;\n }\n\n return true;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var start = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n return this.$gantt.date.add(start, step * duration, unit);\n }\n};\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\n NoWorkTimeCalendar = require(\"./strategy/no_work_time\");\n\nfunction TimeCalculator(calendarManager) {\n this.$gantt = calendarManager.$gantt;\n this.argumentsHelper = createArgumentsHelper(this.$gantt);\n this.calendarManager = calendarManager;\n this.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\n}\n\nTimeCalculator.prototype = {\n _getCalendar: function _getCalendar(config) {\n var calendar;\n\n if (!this.$gantt.config.work_time) {\n calendar = this.$disabledCalendar;\n } else {\n var manager = this.calendarManager;\n\n if (config.task) {\n calendar = manager.getTaskCalendar(config.task);\n } else if (config.id) {\n calendar = manager.getTaskCalendar(config);\n } else if (config.calendar) {\n calendar = config.calendar;\n }\n\n if (!calendar) {\n calendar = manager.getTaskCalendar();\n }\n }\n\n return calendar;\n },\n getWorkHours: function getWorkHours(config) {\n config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.getWorkHours(config.date);\n },\n setWorkTime: function setWorkTime(config, calendar) {\n config = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\n if (!calendar) calendar = this.calendarManager.getCalendar(); // Global\n\n return calendar.setWorkTime(config);\n },\n unsetWorkTime: function unsetWorkTime(config, calendar) {\n config = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\n if (!calendar) calendar = this.calendarManager.getCalendar(); // Global\n\n return calendar.unsetWorkTime(config);\n },\n isWorkTime: function isWorkTime(date, unit, task, calendar) {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n calendar = this._getCalendar(config);\n return calendar.isWorkTime(config);\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.getClosestWorkTime(config);\n },\n calculateDuration: function calculateDuration() {\n // start_date_date, end_date, task\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.calculateDuration(config);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.hasDuration(config);\n },\n calculateEndDate: function calculateEndDate(config) {\n // start_date, duration, unit, task\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.calculateEndDate(config);\n }\n};\nmodule.exports = TimeCalculator;","module.exports = function () {\n function getResourcesCalendarKey(resourceAssignments) {\n return resourceAssignments.map(function (res) {\n if (res && res.resource_id) {\n return res.resource_id;\n } else {\n return res;\n }\n }).sort().join(\"-\");\n }\n\n var dynamicCalendars = {};\n\n function mergeResourceCalendars(resourceAssignments, manager) {\n return manager.mergeCalendars(resourceAssignments.map(function (assignment) {\n var resourceId = assignment && assignment.resource_id ? assignment.resource_id : assignment;\n return manager.getResourceCalendar(resourceId);\n }));\n }\n\n function getCalendarIdFromMultipleResources(resourceAssignments, manager) {\n var key = getResourcesCalendarKey(resourceAssignments);\n\n if (!resourceAssignments.length) {\n return null;\n } else if (resourceAssignments.length === 1) {\n return manager.getResourceCalendar(key).id;\n } else if (dynamicCalendars[key]) {\n return dynamicCalendars[key].id;\n } else {\n var tempCalendar = mergeResourceCalendars(resourceAssignments, manager);\n dynamicCalendars[key] = tempCalendar;\n return manager.addCalendar(tempCalendar);\n }\n }\n\n return {\n getCalendarIdFromMultipleResources: getCalendarIdFromMultipleResources\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = {\n isLegacyResourceCalendarFormat: function isLegacyResourceCalendarFormat(resourceCalendarsProperty) {\n // modern format:\n //gantt.config.resource_calendars = {\n //\tresourceId: calendarId,\n //\tresourceId: calendarId,\n //\tresourceId: calendarId\n //\t};\n // legacy format:\n // gantt.config.resource_calendars = {\n //\t\"resourceProperty\": {\n //\t\tresourceId: calendarId,\n //\t\tresourceId: calendarId,\n //\t\tresourceId: calendarId\n //\t\t}\n //\t};\n if (!resourceCalendarsProperty) {\n return false;\n }\n\n for (var i in resourceCalendarsProperty) {\n if (resourceCalendarsProperty[i] && _typeof(resourceCalendarsProperty[i]) === \"object\") {\n return true;\n }\n }\n\n return false;\n },\n getResourceProperty: function getResourceProperty(config) {\n var resourceCalendarsConfig = config.resource_calendars;\n var propertyName = config.resource_property;\n\n if (this.isLegacyResourceCalendarFormat(resourceCalendarsConfig)) {\n for (var i in config) {\n propertyName = i;\n break;\n }\n }\n\n return propertyName;\n },\n getCalendarIdFromLegacyConfig: function getCalendarIdFromLegacyConfig(task, config) {\n if (config) {\n for (var field in config) {\n var resource = config[field];\n\n if (task[field]) {\n var calendarId = resource[task[field]];\n\n if (calendarId) {\n return calendarId;\n }\n }\n }\n }\n\n return null;\n }\n};","export class DateDurationCache {\r\n\tprivate _cache: any;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t_getCacheObject(startDate: Date, unit: string, step:number){\r\n\t\tconst cache = this._cache;\r\n\t\tif (!cache[unit]) {\r\n\t\t\tcache[unit] = [];\r\n\t\t}\r\n\t\tlet unitCache = cache[unit];\r\n\t\tif(!unitCache) {\r\n\t\t\tunitCache = cache[unit] = {};\r\n\t\t}\r\n\r\n\t\tlet stepCache = unitCache[step];\r\n\t\tif(!stepCache) {\r\n\t\t\tstepCache = unitCache[step] = {};\r\n\t\t}\r\n\r\n\t\tconst year = startDate.getFullYear();\r\n\t\tlet yearCache = stepCache[year];\r\n\t\tif(!yearCache){\r\n\t\t\tyearCache = stepCache[year] = {durations: {}, endDates: {}};\r\n\t\t}\r\n\r\n\t\treturn yearCache;\r\n\t}\r\n\t_endDateCacheKey(startDate: number, duration: number){\r\n\t\treturn String(startDate) + \"-\" + String(duration);\r\n\t}\r\n\t_durationCacheKey(startDate: number, endDate: number){\r\n\t\treturn String(startDate) + \"-\" + String(endDate);\r\n\t}\r\n\tgetEndDate(startDate: Date, duration: number, unit: string, step: number, compute: () => Date): number|null{\r\n\t\tconst cache = this._getCacheObject(startDate, unit, step);\r\n\r\n\t\tconst startDateTimestamp = startDate.valueOf();\r\n\t\tconst key = this._endDateCacheKey(startDateTimestamp, duration);\r\n\t\tlet endDate;\r\n\t\tif(cache.endDates[key] === undefined){\r\n\t\t\tconst result = compute();\r\n\t\t\tconst resultTimestamp = result.valueOf();\r\n\t\t\tcache.endDates[key] = resultTimestamp;\r\n\t\t\tcache.durations[this._durationCacheKey(startDateTimestamp, resultTimestamp)] = duration;\r\n\t\t\tendDate = result;\r\n\t\t}else{\r\n\t\t\tendDate = new Date(cache.endDates[key]);\r\n\t\t}\r\n\r\n\t\treturn endDate;\r\n\t}\r\n\r\n\tgetDuration(startDate: Date, endDate: Date, unit: string, step: number, compute: () => number): number|null{\r\n\t\tconst cache = this._getCacheObject(startDate, unit, step);\r\n\r\n\t\tconst startDateTimestamp = startDate.valueOf();\r\n\t\tconst endDateTimestamp = endDate.valueOf();\r\n\t\tconst key = this._durationCacheKey(startDateTimestamp, endDateTimestamp);\r\n\t\tlet duration;\r\n\t\tif(cache.durations[key] === undefined){\r\n\t\t\tconst result = compute();\r\n\t\t\tcache.durations[key] = result.valueOf();\r\n\r\n\t\t\t// can't populate end date due to logic of end date calculation, current unit tests capture it\r\n\t\t\t// cache.endDates[this._endDateCacheKey(startDateTimestamp, result)] = endDateTimestamp;\r\n\t\t\tduration = result;\r\n\t\t}else{\r\n\t\t\tduration = cache.durations[key];\r\n\t\t}\r\n\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tclear(): void{\r\n\t\tthis._cache = {};\r\n\t}\r\n}","\r\n\r\nexport class LargerUnitsCache {\r\n\tprivate _weekCache: Map<number, number>;\r\n\tprivate _monthCache: Map<number, number>;\r\n\tprivate _calendar: any;\r\n\tconstructor(calendar) {\r\n\t\tthis.clear();\r\n\t\tthis._calendar = calendar;\r\n\t}\r\n\r\n\tgetMinutesPerWeek = (weekStart: Date) => {\r\n\t\tconst key = weekStart.valueOf();\r\n\r\n\t\tif(this._weekCache.has(key)){\r\n\t\t\treturn this._weekCache.get(key);\r\n\t\t}\r\n\r\n\t\tconst calendar = this._calendar;\r\n\t\tconst gantt = this._calendar.$gantt;\r\n\r\n\t\tlet minutesPerWeek = 0;\r\n\t\tlet start = gantt.date.week_start(new Date(weekStart));\r\n\t\tfor(let i = 0; i < 7; i++){\r\n\t\t\tminutesPerWeek += calendar.getHoursPerDay(start) * 60;\r\n\t\t\tstart = gantt.date.add(start, 1, \"day\");\r\n\t\t}\r\n\r\n\t\tthis._weekCache.set(key, minutesPerWeek);\r\n\t\treturn minutesPerWeek;\r\n\t}\r\n\r\n\tgetMinutesPerMonth = (monthStart: Date) => {\r\n\t\tconst key = monthStart.valueOf();\r\n\r\n\t\tif(this._monthCache.has(key)){\r\n\t\t\treturn this._monthCache.get(key);\r\n\t\t}\r\n\r\n\t\tconst calendar = this._calendar;\r\n\t\tconst gantt = this._calendar.$gantt;\r\n\r\n\t\tlet minutesPerMonth = 0;\r\n\t\tlet start = gantt.date.week_start(new Date(monthStart));\r\n\t\tconst nextMonth = gantt.date.add(start, 1, \"month\").valueOf();\r\n\t\twhile(start.valueOf() < nextMonth){\r\n\t\t\tminutesPerMonth += calendar.getHoursPerDay(start) * 60;\r\n\t\t\tstart = gantt.date.add(start, 1, \"day\");\r\n\t\t}\r\n\r\n\t\tthis._monthCache.set(key, minutesPerMonth);\r\n\t\treturn minutesPerMonth;\r\n\t}\r\n\r\n\tclear = (): void => {\r\n\t\tthis._weekCache = new Map<number, number>();\r\n\t\tthis._monthCache = new Map<number, number>();\r\n\t}\r\n}","import { IWorkUnitCache } from \"./workunit_cache_interface\";\r\n\r\nexport class WorkUnitsObjectCache implements IWorkUnitCache {\r\n\tprivate _cache: any;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\tgetItem(unit: string, timestamp: string, value: Date): number|boolean {\r\n\t\tconst cache = this._cache;\r\n\t\tif (cache && cache[unit]) {\r\n\t\t\tconst units = cache[unit];\r\n\t\t\tif(units === undefined){\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tconst subCache = units[value.getFullYear()];\r\n\t\t\tif (subCache && subCache[timestamp] !== undefined) {\r\n\t\t\t\treturn subCache[timestamp];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\tsetItem(unit: string, timestamp: string, value: boolean, rawValue: Date): void {\r\n\t\tif (!unit || !timestamp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cache = this._cache;\r\n\r\n\t\tif (!cache) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!cache[unit]) {\r\n\t\t\tcache[unit] = [];\r\n\t\t}\r\n\t\tconst unitCache = cache[unit];\r\n\r\n\t\tconst year = rawValue.getFullYear();\r\n\t\tlet yearCache = unitCache[year];\r\n\t\tif(!yearCache){\r\n\t\t\tyearCache = unitCache[year] = {};\r\n\t\t}\r\n\t\tyearCache[timestamp] = value;\r\n\t}\r\n\tclear(): void{\r\n\t\tthis._cache = {};\r\n\t}\r\n}","\r\n\r\nimport { IWorkUnitCache } from \"./workunit_cache_interface\";\r\n\r\nexport class WorkUnitsMapCache implements IWorkUnitCache {\r\n\tprivate _cache: Map<string, Array<Map<string, boolean>>>;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\tgetItem(unit: string, timestamp: string, value: Date): number|boolean {\r\n\t\tif (this._cache.has(unit)) {\r\n\t\t\tconst unitCache = this._cache.get(unit);\r\n\r\n\t\t\tconst subCache = unitCache[value.getFullYear()];\r\n\t\t\tif (subCache && subCache.has(timestamp)) {\r\n\t\t\t\treturn subCache.get(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\tsetItem(unit: string, timestamp: string, value: boolean, rawValue: Date): void {\r\n\t\tif (!unit || !timestamp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cache = this._cache;\r\n\t\tconst year = rawValue.getFullYear();\r\n\r\n\t\tlet unitCache;\r\n\t\tif (!cache.has(unit)) {\r\n\t\t\tunitCache = [];\r\n\t\t\tcache.set(unit, unitCache);\r\n\t\t} else {\r\n\t\t\tunitCache = cache.get(unit);\r\n\t\t}\r\n\r\n\t\tlet yearCache = unitCache[year];\r\n\t\tif(!yearCache){\r\n\t\t\tyearCache = unitCache[year] = new Map<string, boolean>();\r\n\t\t}\r\n\r\n\r\n\t\tyearCache.set(timestamp, value);\r\n\t}\r\n\tclear(): void{\r\n\t\tthis._cache = new Map<string, Array<Map<string, boolean>>>();\r\n\t}\r\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar createCacheObject = require(\"./work_unit_cache\").createCacheObject;\n\nvar LargerUnitsCache = require(\"./work_unit_cache\").LargerUnitsCache;\n\nvar utils = require(\"../../../utils/utils\");\n\nvar DateDurationCache = require(\"./work_unit_cache/date_duration_cache\").DateDurationCache;\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n this._workingUnitsCache = createCacheObject();\n this._largeUnitsCache = new LargerUnitsCache(this);\n this._dateDurationCache = new DateDurationCache();\n this._worktime = null;\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n}\n\nCalendarWorkTimeStrategy.prototype = {\n units: [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\"],\n _clearCaches: function _clearCaches() {\n this._workingUnitsCache.clear();\n\n this._largeUnitsCache.clear();\n\n this._dateDurationCache.clear();\n },\n // cache previously calculated worktime\n _getUnitOrder: function _getUnitOrder(unit) {\n for (var i = 0, len = this.units.length; i < len; i++) {\n if (this.units[i] == unit) return i;\n }\n },\n _resetTimestampCache: function _resetTimestampCache() {\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n },\n _timestamp: function _timestamp(settings) {\n // minor optimization, store calculated timestamps to reduce computations\n // reset cache when number of keys exceeds large number where key lookup may became more expensive than the recalculation\n if (this._cached_timestamps_count > 1000000) {\n this._resetTimestampCache();\n }\n\n var timestamp = null;\n\n if (settings.day || settings.day === 0) {\n timestamp = settings.day;\n } else if (settings.date) {\n var value = String(settings.date.valueOf());\n\n if (this._cached_timestamps[value]) {\n timestamp = this._cached_timestamps[value];\n } else {\n // store worktime datestamp in utc so it could be recognized in different timezones (e.g. opened locally and sent to the export service in different timezone)\n timestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n this._cached_timestamps[value] = timestamp;\n this._cached_timestamps_count++;\n }\n }\n\n return timestamp;\n },\n _checkIfWorkingUnit: function _checkIfWorkingUnit(date, unit) {\n // GS-596: If unit is larger than day or has a custom logic\n if (!this[\"_is_work_\" + unit]) {\n var from = this.$gantt.date[\"\".concat(unit, \"_start\")](new Date(date));\n var to = this.$gantt.date.add(from, 1, unit);\n return this.hasDuration(from, to);\n }\n\n return this[\"_is_work_\" + unit](date);\n },\n //checkings for particular time units\n //methods for month-year-week can be defined, otherwise always return 'true'\n _is_work_day: function _is_work_day(date) {\n var val = this._getWorkHours(date);\n\n if (Array.isArray(val)) {\n return val.length > 0;\n }\n\n return false;\n },\n _is_work_hour: function _is_work_hour(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var value = date.getHours();\n\n for (var i = 0; i < hours.length; i++) {\n if (value >= hours[i].startHour && value < hours[i].endHour) {\n return true;\n }\n }\n\n return false;\n },\n _getTimeOfDayStamp: function _getTimeOfDayStamp(date, dayEnd) {\n var hours = date.getHours();\n\n if (!date.getHours() && !date.getMinutes() && dayEnd) {\n hours = 24;\n }\n\n return hours * 60 * 60 + date.getMinutes() * 60;\n },\n _is_work_minute: function _is_work_minute(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var checkTime = this._getTimeOfDayStamp(date);\n\n for (var i = 0; i < hours.length; i++) {\n if (checkTime >= hours[i].start && checkTime < hours[i].end) {\n return true;\n }\n }\n\n return false;\n },\n _nextDate: function _nextDate(start, unit, step) {\n return this.$gantt.date.add(start, step, unit);\n },\n _getWorkUnitsBetweenGeneric: function _getWorkUnitsBetweenGeneric(from, to, unit, step) {\n var dateHelper = this.$gantt.date;\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var units = 0;\n var next = null;\n var stepStart, stepEnd; // calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n // and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n // durations must be rounded later\n\n var checkFirst = false;\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n\n if (stepStart.valueOf() != start.valueOf()) {\n checkFirst = true;\n }\n\n var checkLast = false;\n stepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\n if (stepEnd.valueOf() != to.valueOf()) {\n checkLast = true;\n }\n\n var isLastStep = false;\n\n while (start.valueOf() < end.valueOf()) {\n next = this._nextDate(start, unit, step);\n isLastStep = next.valueOf() > end.valueOf();\n\n if (this._isWorkTime(start, unit)) {\n if (checkFirst || checkLast && isLastStep) {\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n stepEnd = dateHelper.add(stepStart, step, unit);\n }\n\n if (checkFirst) {\n checkFirst = false;\n next = this._nextDate(stepStart, unit, step);\n units += (stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else if (checkLast && isLastStep) {\n checkLast = false;\n units += (end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else {\n units++;\n }\n } else {\n var unitOrder = this._getUnitOrder(unit);\n\n var biggerTimeUnit = this.units[unitOrder - 1];\n\n if (biggerTimeUnit && !this._isWorkTime(start, biggerTimeUnit)) {\n next = this._getClosestWorkTimeFuture(start, biggerTimeUnit);\n }\n }\n\n start = next;\n }\n\n return units;\n },\n _getMinutesPerHour: function _getMinutesPerHour(date) {\n var hourStart = this._getTimeOfDayStamp(date);\n\n var hourEnd = this._getTimeOfDayStamp(this._nextDate(date, \"hour\", 1));\n\n if (hourEnd === 0) {\n hourEnd = 24 * 60 * 60;\n }\n\n var worktimes = this._getWorkHours(date);\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (hourStart >= interval.start && hourEnd <= interval.end) {\n return 60; // hour inside a working interval, all hour is a work hour\n } else if (hourStart < interval.end && hourEnd > interval.start) {\n // hour is partially work time\n var duration = Math.min(hourEnd, interval.end) - Math.max(hourStart, interval.start);\n return duration / 60;\n }\n }\n\n return 0;\n },\n _getMinutesPerDay: function _getMinutesPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationMinutes;\n });\n return res;\n },\n getHoursPerDay: function getHoursPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationHours;\n });\n return res;\n },\n _getWorkUnitsForRange: function _getWorkUnitsForRange(from, to, unit, step) {\n var total = 0;\n var start = new Date(from),\n end = new Date(to);\n var getUnitsPerDay;\n\n if (unit == \"minute\") {\n getUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\n } else {\n getUnitsPerDay = utils.bind(this.getHoursPerDay, this);\n }\n\n while (start.valueOf() < end.valueOf()) {\n if (end - start > 1000 * 60 * 60 * 24 * 32 && start.getDate() === 0) {\n var units = this._largeUnitsCache.getMinutesPerMonth(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 1, \"month\");\n continue;\n } else if (end - start > 1000 * 60 * 60 * 24 * 16) {\n var weekStart = this.$gantt.date.week_start(new Date(start));\n\n if (start.valueOf() === weekStart.valueOf()) {\n var units = this._largeUnitsCache.getMinutesPerWeek(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 7, \"day\");\n continue;\n }\n } //\tif (this._isWorkTime(start, \"day\")) {\n\n\n total += getUnitsPerDay(start); //\t}\n\n start = this._nextDate(start, \"day\", 1);\n }\n\n return total / step;\n },\n _getMinutesBetweenSingleDay: function _getMinutesBetweenSingleDay(from, to) {\n var range = this._getIntervalTimestamp(from, to);\n\n var worktimes = this._getWorkHours(from);\n\n var result = 0;\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n result += (minuteTo - minuteFrom) / 60;\n range.start = minuteTo;\n }\n }\n\n return Math.floor(result);\n },\n _getMinutesBetween: function _getMinutesBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return this._getMinutesBetweenSingleDay(from, to);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd);\n\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd);\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return total;\n }\n },\n // optimized method for calculating work units duration of large time spans\n // implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\n _getHoursBetween: function _getHoursBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return Math.round(this._getMinutesBetweenSingleDay(from, to) / 60);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd, unit, step) / 60;\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd, unit, step) / 60;\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return Math.round(total);\n }\n },\n getConfig: function getConfig() {\n return this._worktime;\n },\n _setConfig: function _setConfig(settings) {\n this._worktime = settings;\n\n this._parseSettings();\n\n this._clearCaches();\n },\n _parseSettings: function _parseSettings() {\n var settings = this.getConfig();\n settings.parsed = {\n dates: {},\n hours: null,\n haveCustomWeeks: false,\n customWeeks: {},\n customWeeksRangeStart: null,\n customWeeksRangeEnd: null,\n customWeeksBoundaries: []\n };\n settings.parsed.hours = this._parseHours(settings.hours);\n\n for (var i in settings.dates) {\n settings.parsed.dates[i] = this._parseHours(settings.dates[i]);\n }\n\n if (settings.customWeeks) {\n var minCustomRangeStart = null;\n var maxCustomRangeEnd = null;\n\n for (var i in settings.customWeeks) {\n var customTime = settings.customWeeks[i];\n\n if (customTime.from && customTime.to) {\n var rangeStart = customTime.from;\n var rangeEnd = customTime.to;\n\n if (!minCustomRangeStart || minCustomRangeStart > rangeStart.valueOf()) {\n minCustomRangeStart = rangeStart.valueOf();\n }\n\n if (!maxCustomRangeEnd || maxCustomRangeEnd < rangeEnd.valueOf()) {\n maxCustomRangeEnd = rangeEnd.valueOf();\n }\n\n settings.parsed.customWeeksBoundaries.push({\n from: rangeStart.valueOf(),\n fromReadable: new Date(rangeStart),\n to: rangeEnd.valueOf(),\n toReadable: new Date(rangeEnd),\n name: i\n });\n settings.parsed.haveCustomWeeks = true;\n var currentWeek = settings.parsed.customWeeks[i] = {\n from: customTime.from,\n to: customTime.to,\n hours: this._parseHours(customTime.hours),\n dates: {}\n };\n\n for (var d in customTime.dates) {\n currentWeek.dates[d] = this._parseHours(customTime.dates[d]);\n }\n }\n }\n\n settings.parsed.customWeeksRangeStart = minCustomRangeStart;\n settings.parsed.customWeeksRangeEnd = maxCustomRangeEnd;\n }\n },\n _tryChangeCalendarSettings: function _tryChangeCalendarSettings(payload) {\n var backup = JSON.stringify(this.getConfig());\n payload();\n\n if (!this.hasWorkTime()) {\n //\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n this._setConfig(JSON.parse(backup));\n\n this._clearCaches();\n\n return false;\n }\n\n return true;\n },\n _arraysEqual: function _arraysEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n if (a.length != b.length) return false;\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n },\n _compareSettings: function _compareSettings(mySettings, thatSettings) {\n if (!this._arraysEqual(mySettings.hours, thatSettings.hours)) {\n return false;\n }\n\n var myDays = Object.keys(mySettings.dates);\n var otherDates = Object.keys(thatSettings.dates);\n myDays.sort();\n otherDates.sort();\n\n if (!this._arraysEqual(myDays, otherDates)) {\n return false;\n }\n\n for (var i = 0; i < myDays.length; i++) {\n var timestamp = myDays[i];\n var myHours = mySettings.dates[timestamp];\n var otherHours = mySettings.dates[timestamp]; // day settings not equal\n\n if (myHours !== otherHours && // but still can be two arrays with the equivalent hour settings\n !(Array.isArray(myHours) && Array.isArray(otherHours) && this._arraysEqual(myHours, otherHours))) {\n return false;\n }\n }\n\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarWorkTimeStrategy)) {\n return false;\n }\n\n var mySettings = this.getConfig();\n var thatSettings = calendar.getConfig();\n\n if (!this._compareSettings(mySettings, thatSettings)) {\n return false;\n }\n\n if (mySettings.parsed.haveCustomWeeks && thatSettings.parsed.haveCustomWeeks) {\n if (mySettings.parsed.customWeeksBoundaries.length != thatSettings.parsed.customWeeksBoundaries.length) {\n return false;\n }\n\n for (var i in mySettings.parsed.customWeeks) {\n var myWeek = mySettings.parsed.customWeeks[i];\n var thatWeek = thatSettings.parsed.customWeeks[i];\n\n if (!thatWeek) {\n return false;\n }\n\n if (!this._compareSettings(myWeek, thatWeek)) {\n return false;\n }\n }\n } else if (mySettings.parse.haveCustomWeeks !== thatSettings.parsed.haveCustomWeeks) {\n return false;\n }\n\n return true;\n },\n getWorkHours: function getWorkHours() {\n var config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n return this._getWorkHours(config.date, false);\n },\n _getWorkHours: function _getWorkHours(date, parsed) {\n var calendar = this.getConfig();\n\n if (parsed !== false) {\n calendar = calendar.parsed;\n }\n\n if (!date) {\n return calendar.hours;\n }\n\n var dateValue = this._timestamp({\n date: date\n });\n\n if (calendar.haveCustomWeeks) {\n if (calendar.customWeeksRangeStart <= dateValue && calendar.customWeeksRangeEnd > dateValue) {\n for (var i = 0; i < calendar.customWeeksBoundaries.length; i++) {\n if (calendar.customWeeksBoundaries[i].from <= dateValue && calendar.customWeeksBoundaries[i].to > dateValue) {\n calendar = calendar.customWeeks[calendar.customWeeksBoundaries[i].name];\n break;\n }\n }\n }\n }\n\n var hours = true;\n\n if (calendar.dates[dateValue] !== undefined) {\n hours = calendar.dates[dateValue]; //custom day\n } else if (calendar.dates[date.getDay()] !== undefined) {\n hours = calendar.dates[date.getDay()]; //week day\n }\n\n if (hours === true) {\n return calendar.hours;\n } else if (hours) {\n return hours;\n }\n\n return [];\n },\n _getIntervalTimestamp: function _getIntervalTimestamp(from, to) {\n var res = {\n start: 0,\n end: 0\n };\n res.start = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n var endHours = to.getHours();\n\n if (!endHours && !to.getMinutes() && !to.getSeconds() && from.valueOf() < to.valueOf()) {\n endHours = 24;\n }\n\n res.end = endHours * 60 * 60 + to.getMinutes() * 60 + to.getSeconds();\n return res;\n },\n _parseHours: function _parseHours(hours) {\n if (Array.isArray(hours)) {\n var timestampRanges = []; // worktime as seconds range\n\n hours.forEach(function (hour) {\n if (typeof hour === \"number\") {\n timestampRanges.push(hour * 60 * 60);\n } else if (typeof hour === \"string\") {\n // \"12-13\", or \"12:00-13:00\", or \"12:00:00-13:00:00\"\n hour.split(\"-\").map(function (time) {\n return time.trim();\n }).forEach(function (part) {\n var parsed = part.split(\":\").map(function (time) {\n return time.trim();\n });\n var value = parseInt(parsed[0] * 60 * 60);\n\n if (parsed[1]) {\n value += parseInt(parsed[1] * 60);\n }\n\n if (parsed[2]) {\n value += parseInt(parsed[2]);\n }\n\n timestampRanges.push(value);\n });\n }\n });\n var timerangeConfig = [];\n\n for (var i = 0; i < timestampRanges.length; i += 2) {\n var start = timestampRanges[i];\n var end = timestampRanges[i + 1];\n var duration = end - start;\n timerangeConfig.push({\n start: start,\n end: end,\n startHour: Math.floor(start / (60 * 60)),\n startMinute: Math.floor(start / 60),\n endHour: Math.ceil(end / (60 * 60)),\n endMinute: Math.ceil(end / 60),\n durationSeconds: duration,\n durationMinutes: duration / 60,\n durationHours: duration / (60 * 60)\n });\n }\n\n return timerangeConfig;\n } else {\n return hours;\n }\n },\n setWorkTime: function setWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n var hours = settings.hours !== undefined ? settings.hours : true;\n\n var timestamp = this._timestamp(settings);\n\n var calendarConfig = this.getConfig();\n\n if (timestamp !== null) {\n calendarConfig.dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.hours = hours;\n }\n\n if (settings.customWeeks) {\n if (!calendarConfig.customWeeks) {\n calendarConfig.customWeeks = {};\n } // GS-1867. allow setWorkTime to exclude dates in the customWeeks range\n\n\n if (typeof settings.customWeeks == \"string\") {\n if (timestamp !== null) {\n calendarConfig.customWeeks[settings.customWeeks].dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.customWeeks[settings.customWeeks].hours = hours;\n }\n } else if (_typeof(settings.customWeeks) === \"object\" && Function.prototype.toString.call(settings.customWeeks.constructor) === \"function Object() { [native code] }\") {\n for (var i in settings.customWeeks) {\n calendarConfig.customWeeks[i] = settings.customWeeks[i];\n }\n }\n }\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n unsetWorkTime: function unsetWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n if (!settings) {\n this.reset_calendar();\n } else {\n var timestamp = this._timestamp(settings);\n\n if (timestamp !== null) {\n delete this.getConfig().dates[timestamp];\n }\n } // Load updated settings and clear work units cache\n\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n _isWorkTime: function _isWorkTime(date, unit) {\n // Check if this item has in the cache\n var useCache = true; //unit === \"day\"; // use cache only for days. In case of hours/minutes cache size grows too large and the overhead exceeds the gains\n\n var isWorkUnit = -1;\n var dateKey = null;\n\n if (useCache) {\n // use string keys\n dateKey = String(date.valueOf());\n isWorkUnit = this._workingUnitsCache.getItem(unit, dateKey, date);\n }\n\n if (isWorkUnit == -1) {\n // calculate if not cached\n isWorkUnit = this._checkIfWorkingUnit(date, unit);\n\n if (useCache) {\n this._workingUnitsCache.setItem(unit, dateKey, isWorkUnit, date);\n }\n }\n\n return isWorkUnit;\n },\n isWorkTime: function isWorkTime() {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._isWorkTime(config.date, config.unit);\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n if (!config.unit) {\n return false;\n } //return this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n\n\n var self = this;\n return this._dateDurationCache.getDuration(config.start_date, config.end_date, config.unit, config.step, function () {\n return self._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n });\n },\n _calculateDuration: function _calculateDuration(from, to, unit, step) {\n var res = 0;\n var sign = 1;\n\n if (from.valueOf() > to.valueOf()) {\n var tmp = to;\n to = from;\n from = tmp;\n sign = -1;\n }\n\n if (unit == \"hour\" && step == 1) {\n res = this._getHoursBetween(from, to, unit, step);\n } else if (unit == \"minute\" && step == 1) {\n // quick calculation for minutes with 1 minute step\n res = this._getMinutesBetween(from, to, unit, step);\n } else {\n res = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n } // getWorkUnits.. returns decimal durations\n\n\n return sign * Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n\n if (!unit) {\n return false;\n }\n\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n\n while (start.valueOf() < end.valueOf()) {\n if (this._isWorkTime(start, unit)) return true;\n start = this._nextDate(start, unit, step);\n }\n\n return false;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n if (!unit) return false;\n var mult = config.duration >= 0 ? 1 : -1;\n duration = Math.abs(duration * 1); //\tvar endDate = this._calculateEndDate(from, duration, unit, step * mult);\n //\treturn endDate;\n\n var self = this;\n return this._dateDurationCache.getEndDate(from, duration, unit, step * mult, function () {\n return self._calculateEndDate(from, duration, unit, step * mult);\n });\n },\n _calculateEndDate: function _calculateEndDate(from, duration, unit, step) {\n if (!unit) return false;\n\n if (step == 1 && unit == \"minute\") {\n return this._calculateMinuteEndDate(from, duration, step);\n } else if (step == -1 && unit == \"minute\") {\n return this._subtractMinuteDate(from, duration, step);\n } else if (step == 1 && unit == \"hour\") {\n return this._calculateHourEndDate(from, duration, step);\n } else {\n var interval = this._addInterval(from, duration, unit, step, null);\n\n return interval.end;\n }\n },\n _addInterval: function _addInterval(start, duration, unit, step, stopAction) {\n var added = 0;\n var current = start;\n var dstShift = false;\n\n while (added < duration && !(stopAction && stopAction(current))) {\n var next = this._nextDate(current, unit, step); // GS-1501. Correct hours after DST change\n\n\n if (unit == \"day\") {\n dstShift = dstShift || !current.getHours() && next.getHours();\n\n if (dstShift) {\n next.setHours(0);\n\n if (next.getHours()) {// the day when the timezone is changed, try to correct hours next time\n } else {\n dstShift = false;\n }\n }\n }\n\n var dateValue = new Date(next.valueOf() + 1);\n\n if (step > 0) {\n dateValue = new Date(next.valueOf() - 1);\n }\n\n var workTimeCheck = this._isWorkTime(dateValue, unit);\n\n if (workTimeCheck && !dstShift) {\n added++;\n }\n\n current = next;\n }\n\n return {\n end: current,\n start: start,\n added: added\n };\n },\n _addHoursUntilDayEnd: function _addHoursUntilDayEnd(from, duration) {\n var dayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(from)), 1, \"day\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, dayEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeHours = (minuteTo - minuteFrom) / (60 * 60);\n\n if (rangeHours > left) {\n rangeHours = left;\n minuteTo = minuteFrom + left * 60 * 60;\n }\n\n var addHours = Math.round((minuteTo - minuteFrom) / (60 * 60));\n added += addHours;\n left -= addHours;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = dayEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _calculateHourEndDate: function _calculateHourEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n\n var interval = this._addHoursUntilDayEnd(start, duration);\n\n added = interval.added;\n start = interval.end;\n var durationLeft = duration - added;\n\n if (durationLeft) {\n var current = start;\n\n while (added < duration) {\n var next = this._nextDate(current, \"day\", step); // reset to day start in case DST switch happens in the process\n\n\n next.setHours(0);\n next.setMinutes(0);\n next.setSeconds(0);\n var hoursPerDay = 0;\n\n if (step > 0) {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() - 1));\n } else {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() + 1));\n }\n\n if (added + hoursPerDay >= duration) {\n break;\n } else {\n added += hoursPerDay;\n }\n\n current = next;\n }\n\n start = current;\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n interval = this._addHoursUntilDayEnd(start, durationLeft);\n start = interval.end;\n }\n\n return start;\n },\n _addMinutesUntilHourEnd: function _addMinutesUntilHourEnd(from, duration) {\n if (from.getMinutes() === 0) {\n // already at hour end\n return {\n added: 0,\n end: new Date(from)\n };\n }\n\n var hourEnd = this.$gantt.date.add(this.$gantt.date.hour_start(new Date(from)), 1, \"hour\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, hourEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeMinutes = (minuteTo - minuteFrom) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom + left * 60;\n } // TODO: verify testcase https://dhtmlxsupport.teamwork.com/desk/tickets/9625700/messages\n\n /*if (rangeMinutes === 0) {\r\n \trangeMinutes = left;\r\n \tminuteTo = minuteFrom + (left * 60);\r\n }*/\n\n\n var addMinutes = Math.round((minuteTo - minuteFrom) / 60);\n left -= addMinutes;\n added += addMinutes;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = hourEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinutesUntilHourStart: function _subtractMinutesUntilHourStart(from, duration) {\n var hourStart = this.$gantt.date.hour_start(new Date(from));\n var added = 0;\n var left = duration;\n var hourStartTimestamp = hourStart.getHours() * 60 * 60 + hourStart.getMinutes() * 60 + hourStart.getSeconds();\n var initialDateTimestamp = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = worktimes.length - 1; i >= 0 && added < duration; i--) {\n var interval = worktimes[i];\n\n if (initialDateTimestamp > interval.start && hourStartTimestamp <= interval.end) {\n var minuteFrom = Math.min(initialDateTimestamp, interval.end);\n var minuteTo = Math.max(hourStartTimestamp, interval.start); //\tvar minuteFrom = Math.max(interval.start, currentHour.start);\n //\tvar minuteTo = Math.min(interval.end, currentHour.end);\n\n var rangeMinutes = (minuteFrom - minuteTo) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom - left * 60;\n } // TODO: verify testcase https://dhtmlxsupport.teamwork.com/desk/tickets/9625700/messages\n\n /*if (rangeMinutes === 0) {\r\n \trangeMinutes = left;\r\n \tminuteTo = minuteFrom - (left * 60);\r\n }*/\n\n\n var addMinutes = Math.abs(Math.round((minuteFrom - minuteTo) / 60));\n left -= addMinutes;\n added += addMinutes;\n initialDateTimestamp = minuteTo;\n }\n }\n\n var intervalEnd = hourStart;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, initialDateTimestamp);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinuteDate: function _subtractMinuteDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || -1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var minutePrecision = this._isMinutePrecision(start);\n\n var addedInterval = this._subtractMinutesUntilHourStart(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start));\n var iterateFromDayEnd = false;\n\n if (start.valueOf() === dayStart.valueOf()) {\n dayStart = this.$gantt.date.add(dayStart, -1, \"day\");\n iterateFromDayEnd = true;\n } //var dayStartTimestamp = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n\n var dayEnd = new Date(dayStart.getFullYear(), dayStart.getMonth(), dayStart.getDate(), 23, 59, 59, 999).valueOf();\n\n if (dayEnd !== calculatedDay) {\n daySchedule = this._getWorkHours(dayStart);\n minutesInDay = this._getMinutesPerDay(dayStart);\n calculatedDay = dayEnd;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start, iterateFromDayEnd);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n\n if (daySchedule[daySchedule.length - 1].end <= timestamp) {\n if (left > minutesInDay) {\n added += minutesInDay;\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n var prevInterval = null;\n\n for (var i = daySchedule.length - 1; i >= 0; i--) {\n if (daySchedule[i].start < timestamp - 1 && daySchedule[i].end >= timestamp - 1) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n prevInterval = daySchedule[i - 1];\n break;\n }\n }\n\n if (isWorkHour) {\n // we're at the end of worktime interval and subtracting more than the duration of the interval\n // -> subtract the duration of the interval and move to the start of the interval (we're moving from end)\n if (timestamp === workInterval.end && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, -workInterval.durationMinutes, \"minute\");\n } // worktime is set in whole hours (no intervals like 9:15-10:00)\n // the amount we need to subtract lies inside the interval\n else if (!minutePrecision && left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else if (minutePrecision) {\n // GS-2129. If the working time is set in minutes, we accumulate the working time in minutes from right to left\n // duration we need to subtract lies completely inside the work interval\n if (left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else {\n // we need to go trough multiple work intervals to subtract needed time\n added += timestamp / 60 - workInterval.startMinute;\n\n if (prevInterval) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, prevInterval.end);\n } else {\n start = this.$gantt.date.day_start(start);\n }\n }\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n start = this._nextDate(start, \"hour\", step);\n } else {\n addedInterval = this._subtractMinutesUntilHourStart(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n if (start.getHours() === 0 && start.getMinutes() === 0 && start.getSeconds() === 0) {\n var prev = this._getClosestWorkTimePast(start, \"hour\");\n\n if (prev.valueOf() === start.valueOf()) {\n var prev = this.$gantt.date.add(start, -1, \"day\");\n\n var times = this._getWorkHours(prev);\n\n if (times.length) {\n var lastInterval = times[times.length - 1];\n prev.setSeconds(lastInterval.durationSeconds);\n }\n }\n\n start = prev;\n } else {\n start = this._getClosestWorkTimePast(new Date(start - 1), \"hour\");\n }\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._subtractMinutesUntilHourStart(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n _calculateMinuteEndDate: function _calculateMinuteEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._addMinutesUntilHourEnd(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n var minutePrecision = this._isMinutePrecision(start);\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n if (dayStart !== calculatedDay) {\n daySchedule = this._getWorkHours(start);\n minutesInDay = this._getMinutesPerDay(start);\n calculatedDay = dayStart;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(this.$gantt.date.day_start(start), 1, \"day\");\n continue;\n }\n\n if (daySchedule[0].start >= timestamp) {\n if (left >= minutesInDay) {\n added += minutesInDay;\n\n if (left == minutesInDay) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, daySchedule[daySchedule.length - 1].end);\n break;\n } else {\n start = this.$gantt.date.add(start, 1, \"day\");\n start = this.$gantt.date.day_start(start);\n }\n\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = 0; i < daySchedule.length; i++) {\n if (daySchedule[i].start <= timestamp && daySchedule[i].end > timestamp) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.start && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, workInterval.durationMinutes, \"minute\");\n } else if (left <= workInterval.endMinute - timestamp / 60) {\n added += left;\n start = this.$gantt.date.add(start, left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour; // when the working time settings are set in minutes move to the next minutes\n\n if (minutePrecision) {\n start = this.$gantt.date.add(start, minutesInHour, \"minute\");\n } else {\n start = this._nextDate(start, \"hour\", step);\n }\n } else {\n addedInterval = this._addMinutesUntilHourEnd(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n start = this._getClosestWorkTimeFuture(start, \"hour\");\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._addMinutesUntilHourEnd(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n getClosestWorkTime: function getClosestWorkTime() {\n var settings = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\n },\n _getClosestWorkTime: function _getClosestWorkTime(inputDate, unit, direction) {\n var result = new Date(inputDate);\n\n if (this._isWorkTime(result, unit)) {\n return result;\n }\n\n result = this.$gantt.date[unit + '_start'](result);\n\n if (direction == 'any' || !direction) {\n var closestFuture = this._getClosestWorkTimeFuture(result, unit);\n\n var closestPast = this._getClosestWorkTimePast(result, unit);\n\n if (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\n result = closestFuture;\n } else {\n result = closestPast;\n }\n } else if (direction == \"past\") {\n result = this._getClosestWorkTimePast(result, unit);\n } else {\n result = this._getClosestWorkTimeFuture(result, unit);\n }\n\n return result;\n },\n _getClosestWorkTimeFuture: function _getClosestWorkTimeFuture(date, unit) {\n return this._getClosestWorkTimeGeneric(date, unit, 1);\n },\n _getClosestWorkTimePast: function _getClosestWorkTimePast(date, unit) {\n var result = this._getClosestWorkTimeGeneric(date, unit, -1); // should return the end of the closest work interval\n\n\n return this.$gantt.date.add(result, 1, unit);\n },\n _findClosestTimeInDay: function _findClosestTimeInDay(date, direction, worktimes) {\n var start = new Date(date);\n var resultDate = null;\n var fromDayEnd = false;\n\n if (!this._getWorkHours(start).length) {\n start = this._getClosestWorkTime(start, \"day\", direction < 0 ? \"past\" : \"future\");\n\n if (direction < 0) {\n start = new Date(start.valueOf() - 1);\n fromDayEnd = true;\n }\n\n worktimes = this._getWorkHours(start);\n }\n\n var value = this._getTimeOfDayStamp(start);\n\n if (fromDayEnd) {\n value = this._getTimeOfDayStamp(new Date(start.valueOf() + 1), fromDayEnd);\n }\n\n if (direction > 0) {\n for (var i = 0; i < worktimes.length; i++) {\n if (worktimes[i].start >= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].start);\n break;\n }\n }\n } else {\n for (var i = worktimes.length - 1; i >= 0; i--) {\n if (worktimes[i].end <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].end);\n break;\n } else if (worktimes[i].end > value && worktimes[i].start <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, value);\n break;\n }\n }\n }\n\n return resultDate;\n },\n _getClosestWorkMinute: function _getClosestWorkMinute(date, unit, direction) {\n var start = new Date(date);\n\n var worktimes = this._getWorkHours(start);\n\n var resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n\n if (!resultDate) {\n start = this.calculateEndDate(start, direction, \"day\");\n\n if (direction > 0) {\n start = this.$gantt.date.day_start(start);\n } else {\n start = this.$gantt.date.day_start(start);\n start = this.$gantt.date.add(start, 1, \"day\");\n start = new Date(start.valueOf() - 1);\n }\n\n worktimes = this._getWorkHours(start);\n resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n }\n\n if (direction < 0) {\n // getClosestWorkTimePast adds one time unit to the result date after this\n resultDate = this.$gantt.date.add(resultDate, -1, unit);\n }\n\n return resultDate;\n },\n _getClosestWorkTimeGeneric: function _getClosestWorkTimeGeneric(date, unit, increment) {\n if (unit === \"hour\" || unit === \"minute\") {\n return this._getClosestWorkMinute(date, unit, increment);\n }\n\n var unitOrder = this._getUnitOrder(unit),\n biggerTimeUnit = this.units[unitOrder - 1];\n\n var result = date; // be extra sure we won't fall into infinite loop, 3k seems big enough\n\n var maximumLoop = 3000,\n count = 0;\n\n while (!this._isWorkTime(result, unit)) {\n if (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\n // if we look for closest work hour and detect a week-end - first find the closest work day,\n // and continue iterations after that\n if (increment > 0) {\n result = this._getClosestWorkTimeFuture(result, biggerTimeUnit);\n } else {\n result = this._getClosestWorkTimePast(result, biggerTimeUnit);\n }\n\n if (this._isWorkTime(result, unit)) {\n break;\n }\n }\n\n count++;\n\n if (count > maximumLoop) {\n this.$gantt.assert(false, \"Invalid working time check\");\n return false;\n }\n\n var tzOffset = result.getTimezoneOffset();\n result = this.$gantt.date.add(result, increment, unit);\n result = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\n\n if (this.$gantt.date[unit + '_start']) {\n result = this.$gantt.date[unit + '_start'](result);\n }\n }\n\n return result;\n },\n\n /**\r\n * Check whether this calendar has working time. Calendar has working time only if there are regular working days of week\r\n *\r\n */\n hasWorkTime: function hasWorkTime() {\n var worktime = this.getConfig();\n var dates = worktime.dates;\n var daysOfWeek = [0, 1, 2, 3, 4, 5, 6];\n var exceptions = [];\n\n for (var i in worktime.dates) {\n if (Number(i) > 6) {\n exceptions.push(Number(i));\n }\n }\n\n var hasRegularHours = this._checkWorkHours(worktime.hours);\n\n var result = false;\n daysOfWeek.forEach(function (day) {\n if (result) {\n return;\n }\n\n var dayConfig = dates[day];\n\n if (dayConfig === true) {\n // workday uses global hours\n result = hasRegularHours;\n } else if (Array.isArray(dayConfig)) {\n // workday uses custom hours\n result = this._checkWorkHours(dayConfig);\n }\n }.bind(this));\n return result;\n },\n _checkWorkHours: function _checkWorkHours(hoursArray) {\n if (hoursArray.length === 0) {\n return false;\n }\n\n var result = false;\n\n for (var i = 0; i < hoursArray.length; i += 2) {\n if (hoursArray[i] !== hoursArray[i + 1]) {\n result = true;\n }\n }\n\n return result;\n },\n _isMinutePrecision: function _isMinutePrecision(date) {\n var minutePrecision = false;\n\n this._getWorkHours(date).forEach(function (interval) {\n if (interval.startMinute % 60 || interval.endMinute % 60) {\n minutePrecision = true;\n }\n });\n\n return minutePrecision;\n }\n};\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../../utils/utils\");\n\nfunction WorkTimeCalendarMerger() {}\n\nWorkTimeCalendarMerger.prototype = {\n /**\r\n * convert hours array items into objects, e.g. [8, 12, 17, 18] -> [{start: 8, end: 12}, {start:17, end:18}]\r\n * @param {Array} hoursArray\r\n */\n _getIntervals: function _getIntervals(hoursArray) {\n var result = [];\n\n for (var i = 0; i < hoursArray.length; i += 2) {\n result.push({\n start: hoursArray[i],\n end: hoursArray[i + 1]\n });\n }\n\n return result;\n },\n\n /**\r\n * Convert ranges config into hours array\r\n * [{start: 8, end: 12}, {start:17, end:18}] --> [8, 12, 17, 18]\r\n * @param {*} intervalsArray\r\n */\n _toHoursArray: function _toHoursArray(intervalsArray) {\n var result = [];\n\n function toFixed(value) {\n var str = String(value);\n\n if (str.length < 2) {\n str = \"0\" + str;\n }\n\n return str;\n }\n\n function formatHHMM(secondsValue) {\n var hours = Math.floor(secondsValue / (60 * 60));\n var minutePart = secondsValue - hours * 60 * 60;\n var minutes = Math.floor(minutePart / 60);\n return hours + \":\" + toFixed(minutes);\n }\n\n for (var i = 0; i < intervalsArray.length; i++) {\n result.push(formatHHMM(intervalsArray[i].start) + \"-\" + formatHHMM(intervalsArray[i].end));\n }\n\n return result;\n },\n\n /**\r\n * Build intersection of hour intervals. e.g.\r\n * first: [{start: 8, end: 12}, {start:13, end:18}]\r\n * second: [{start: 10, end: 15}]\r\n * result: [{start: 10, end: 12}, {start: 13, end: 15}]\r\n * @param {Array} first\r\n * @param {Array} second\r\n */\n _intersectHourRanges: function _intersectHourRanges(first, second) {\n var result = [];\n var baseArray = first.length > second.length ? first : second;\n var overridesArray = first === baseArray ? second : first;\n baseArray = baseArray.slice();\n overridesArray = overridesArray.slice();\n var result = [];\n\n for (var i = 0; i < baseArray.length; i++) {\n var base = baseArray[i];\n\n for (var j = 0; j < overridesArray.length; j++) {\n var current = overridesArray[j];\n\n if (current.start < base.end && current.end > base.start) {\n result.push({\n start: Math.max(base.start, current.start),\n end: Math.min(base.end, current.end)\n });\n\n if (base.end > current.end) {\n overridesArray.splice(j, 1);\n j--;\n i--;\n }\n }\n }\n }\n\n return result;\n },\n\n /**\r\n * Reduce the number of ranges in config when possible,\r\n * joins ranges that can be merged\r\n * parts: [{start: 8, end: 12}, {start:12, end:13}, {start: 15, end: 17}]\r\n * result: [{start: 8, end: 13}, {start: 15, end: 17}]\r\n * @param {Array} parts\r\n */\n _mergeAdjacentIntervals: function _mergeAdjacentIntervals(parts) {\n var result = parts.slice();\n result.sort(function (a, b) {\n return a.start - b.start;\n });\n var base = result[0];\n\n for (var i = 1; i < result.length; i++) {\n var current = result[i];\n\n if (current.start <= base.end) {\n if (current.end > base.end) {\n base.end = current.end;\n }\n\n result.splice(i, 1);\n i--;\n } else {\n base = current;\n }\n }\n\n return result;\n },\n _mergeHoursConfig: function _mergeHoursConfig(firstHours, secondHours) {\n //var firstIntervals = this._getIntervals(firstHours);\n //var secondIntervals = this._getIntervals(secondHours);\n return this._mergeAdjacentIntervals(this._intersectHourRanges(firstHours, secondHours));\n },\n merge: function merge(first, second) {\n var firstConfig = utils.copy(first.getConfig().parsed);\n var secondConfig = utils.copy(second.getConfig().parsed);\n var mergedSettings = {\n hours: this._toHoursArray(this._mergeHoursConfig(firstConfig.hours, secondConfig.hours)),\n dates: {},\n customWeeks: {}\n };\n\n for (var i in firstConfig.dates) {\n var firstDate = firstConfig.dates[i];\n var secondDate = secondConfig.dates[i]; // if this key is a working date in both calendars\n\n if (firstDate && secondDate) {\n // if at least one of working date is set by hours config - build intersection\n if (Array.isArray(firstDate) || Array.isArray(secondDate)) {\n var firstHours = Array.isArray(firstDate) ? firstDate : firstConfig.hours;\n var secondHours = Array.isArray(secondDate) ? secondDate : secondConfig.hours;\n mergedSettings.dates[i] = this._toHoursArray(this._mergeHoursConfig(firstHours, secondHours));\n } else {\n // date will use global hours\n mergedSettings.dates[i] = true;\n }\n } else {\n mergedSettings.dates[i] = false;\n }\n } // transfer and overwrite custom week calendars\n\n\n if (firstConfig.customWeeks) {\n for (var i in firstConfig.customWeeks) {\n mergedSettings.customWeeks[i] = firstConfig.customWeeks[i];\n }\n }\n\n if (secondConfig.customWeeks) {\n for (var i in secondConfig.customWeeks) {\n mergedSettings.customWeeks[i] = secondConfig.customWeeks[i];\n }\n }\n\n return mergedSettings;\n }\n};\nmodule.exports = WorkTimeCalendarMerger;","var utils = require(\"../../utils/utils\");\n\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\n\nvar CalendarMergeHelper = require(\"./strategy/work_calendar_merger\");\n\nvar CalendarWorkTimeStrategy = require(\"./strategy/calendar_strategy\");\n\nvar legacyResourceCalendarConfig = require(\"./legacy_resource_config\");\n\nvar dynamicResourceCalendars = require(\"./dynamic_resource_calendars\")();\n\nfunction CalendarManager(gantt) {\n this.$gantt = gantt;\n this._calendars = {};\n this._legacyConfig = undefined;\n this.$gantt.attachEvent(\"onGanttReady\", function () {\n if (this.$gantt.config.resource_calendars) {\n this._isLegacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(this.$gantt.config.resource_calendars);\n }\n }.bind(this));\n this.$gantt.attachEvent(\"onBeforeGanttReady\", function () {\n this.createDefaultCalendars();\n }.bind(this));\n this.$gantt.attachEvent(\"onBeforeGanttRender\", function () {\n this.createDefaultCalendars();\n }.bind(this));\n}\n\nCalendarManager.prototype = {\n _calendars: {},\n _convertWorkTimeSettings: function _convertWorkTimeSettings(settings) {\n var days = settings.days;\n\n if (days && !settings.dates) {\n settings.dates = settings.dates || {};\n\n for (var i = 0; i < days.length; i++) {\n settings.dates[i] = days[i];\n\n if (!(days[i] instanceof Array)) {\n settings.dates[i] = !!days[i];\n }\n }\n }\n\n delete settings.days;\n return settings;\n },\n mergeCalendars: function mergeCalendars() {\n var calendars = [];\n var args = arguments;\n\n if (Array.isArray(args[0])) {\n calendars = args[0].slice();\n } else {\n for (var i = 0; i < arguments.length; i++) {\n calendars.push(arguments[i]);\n }\n }\n\n var mergeHelper = new CalendarMergeHelper();\n var result;\n calendars.forEach(function (calendar) {\n if (!result) {\n result = calendar;\n } else {\n result = this._createCalendarFromConfig(mergeHelper.merge(result, calendar));\n }\n }.bind(this));\n return this.createCalendar(result);\n },\n _createCalendarFromConfig: function _createCalendarFromConfig(config) {\n var apiCore = new CalendarWorkTimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\n apiCore.id = String(utils.uid());\n\n var preparedConfig = this._convertWorkTimeSettings(config);\n\n if (preparedConfig.customWeeks) {\n for (var i in preparedConfig.customWeeks) {\n preparedConfig.customWeeks[i] = this._convertWorkTimeSettings(preparedConfig.customWeeks[i]);\n }\n }\n\n apiCore._setConfig(preparedConfig);\n\n return apiCore;\n },\n createCalendar: function createCalendar(parentCalendar) {\n var settings;\n\n if (!parentCalendar) {\n parentCalendar = {};\n }\n\n if (parentCalendar.getConfig) {\n settings = utils.copy(parentCalendar.getConfig());\n } else if (parentCalendar.worktime) {\n settings = utils.copy(parentCalendar.worktime);\n } else {\n settings = utils.copy(parentCalendar);\n }\n\n var defaults = utils.copy(this.defaults.fulltime.worktime);\n utils.mixin(settings, defaults);\n return this._createCalendarFromConfig(settings);\n },\n getCalendar: function getCalendar(id) {\n id = id || \"global\";\n var calendar = this._calendars[id];\n\n if (!calendar) {\n this.createDefaultCalendars();\n calendar = this._calendars[id];\n }\n\n return calendar;\n },\n getCalendars: function getCalendars() {\n var res = [];\n\n for (var i in this._calendars) {\n res.push(this.getCalendar(i));\n }\n\n return res;\n },\n _getOwnCalendar: function _getOwnCalendar(task) {\n var config = this.$gantt.config;\n\n if (task[config.calendar_property]) {\n return this.getCalendar(task[config.calendar_property]);\n }\n\n if (config.resource_calendars) {\n var calendar;\n var calendarId;\n var resourceProperty;\n\n if (this._legacyConfig === false) {\n resourceProperty = config.resource_property;\n } else {\n resourceProperty = legacyResourceCalendarConfig.getResourceProperty(config);\n }\n\n if (Array.isArray(task[resourceProperty])) {\n // if multiple resources are attached to the task - merge their calendars\n if (config.dynamic_resource_calendars) {\n calendarId = dynamicResourceCalendars.getCalendarIdFromMultipleResources(task[resourceProperty], this);\n }\n } else {\n if (this._legacyConfig === undefined) {\n this._legacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars);\n }\n\n if (this._legacyConfig) {\n var calendarId = legacyResourceCalendarConfig.getCalendarIdFromLegacyConfig(task, config.resource_calendars);\n } else if (resourceProperty && task[resourceProperty] && config.resource_calendars[task[resourceProperty]]) {\n var calendar = this.getResourceCalendar(task[resourceProperty]);\n }\n }\n\n if (calendarId) {\n calendar = this.getCalendar(calendarId);\n }\n\n if (calendar) {\n return calendar;\n }\n }\n\n return null;\n },\n\n /**\r\n * Returns calendar assigned to the specified resource.\r\n * Returns the global calendar if no custom calendar is associated with the resource.\r\n * @param {(string|number|Object)} resource - resource object or resource id\r\n * @returns {object} Calendar object\r\n */\n getResourceCalendar: function getResourceCalendar(resource) {\n if (resource === null || resource === undefined) {\n return this.getCalendar();\n }\n\n var resourceId = null; // if task id is provided\n\n if (typeof resource === \"number\" || typeof resource === \"string\") {\n resourceId = resource;\n } else {\n resourceId = resource.id || resource.key;\n }\n\n var config = this.$gantt.config;\n var calendarsConfig = config.resource_calendars;\n var calendarId = null;\n\n if (calendarsConfig) {\n if (this._legacyConfig === undefined) {\n this._legacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars);\n }\n\n if (this._legacyConfig) {\n for (var field in calendarsConfig) {\n if (calendarsConfig[field][resourceId]) {\n calendarId = calendarsConfig[field][resourceId];\n break;\n }\n }\n } else {\n var calendarId = calendarsConfig[resourceId];\n }\n\n if (calendarId) {\n return this.getCalendar(calendarId);\n }\n }\n\n return this.getCalendar();\n },\n\n /**\r\n * Returns the calendar assigned to a task.\r\n * - Returns a calendar assigned via task[gantt.config.calendar_property] if specified.\r\n * - Returns a calendar assigned to the task resource if specified.\r\n * - Returns the global calendar otherwise.\r\n * @param {(string|number|Object)} task - task object or task id\r\n * @returns {object} Calendar object\r\n */\n getTaskCalendar: function getTaskCalendar(task) {\n var gantt = this.$gantt;\n var taskObject;\n\n if (task === null || task === undefined) {\n return this.getCalendar();\n } // if task id is provided\n\n\n if ((typeof task === \"number\" || typeof task === \"string\") && gantt.isTaskExists(task)) {\n taskObject = gantt.getTask(task);\n } else {\n taskObject = task;\n }\n\n if (!taskObject) {\n return this.getCalendar();\n }\n\n var calendar = this._getOwnCalendar(taskObject);\n\n var groupMode = !!gantt.getState().group_mode;\n\n if (!calendar && gantt.config.inherit_calendar && gantt.isTaskExists(taskObject.parent)) {\n // GS-1579 group mode overrides tree hierarchy, iterate using `.parent` property, instead of using eachParent iterator\n var currentTask = taskObject;\n\n while (gantt.isTaskExists(currentTask.parent)) {\n currentTask = gantt.getTask(currentTask.parent);\n\n if (gantt.isSummaryTask(currentTask)) {\n calendar = this._getOwnCalendar(currentTask);\n\n if (calendar) {\n break;\n }\n }\n }\n\n if (groupMode && !calendar) {\n // if group mode and inherit_calendars is enabled - preserve previously applied parent calendar\n // we may need it when groupBy parses grouped data, old parent may be not loaded yet\n if (task.$effective_calendar) {\n calendar = this.getCalendar(task.$effective_calendar);\n }\n }\n }\n\n return calendar || this.getCalendar();\n },\n addCalendar: function addCalendar(calendar) {\n // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\n if (!this.isCalendar(calendar)) {\n var id = calendar.id;\n calendar = this.createCalendar(calendar);\n calendar.id = id;\n } // validate/check if empty calendar\n\n\n if (!calendar._tryChangeCalendarSettings(function () {})) {\n this.$gantt.callEvent(\"onCalendarError\", [{\n message: \"Invalid calendar settings, no worktime available\"\n }, calendar]);\n return null;\n } else {\n var config = this.$gantt.config;\n calendar.id = calendar.id || utils.uid();\n this._calendars[calendar.id] = calendar;\n if (!config.worktimes) config.worktimes = {};\n config.worktimes[calendar.id] = calendar.getConfig();\n return calendar.id;\n }\n },\n deleteCalendar: function deleteCalendar(calendar) {\n var config = this.$gantt.config;\n if (!calendar) return false;\n\n if (this._calendars[calendar]) {\n delete this._calendars[calendar];\n if (config.worktimes && config.worktimes[calendar]) delete config.worktimes[calendar];\n return true;\n } else {\n return false;\n }\n },\n restoreConfigCalendars: function restoreConfigCalendars(configs) {\n for (var i in configs) {\n if (this._calendars[i]) continue;\n var settings = configs[i];\n var calendar = this.createCalendar(settings);\n calendar.id = i;\n this.addCalendar(calendar);\n }\n },\n defaults: {\n global: {\n id: \"global\",\n worktime: {\n hours: [8, 12, 13, 17],\n days: [0, 1, 1, 1, 1, 1, 0]\n }\n },\n fulltime: {\n id: \"fulltime\",\n worktime: {\n hours: [0, 24],\n days: [1, 1, 1, 1, 1, 1, 1]\n }\n }\n },\n createDefaultCalendars: function createDefaultCalendars() {\n var config = this.$gantt.config;\n this.restoreConfigCalendars(this.defaults);\n this.restoreConfigCalendars(config.worktimes);\n },\n isCalendar: function isCalendar(possibleCalendar) {\n // because we don't have any way to check without dependency to CalendarWorkTimeStrategy\n var props = [possibleCalendar.isWorkTime, possibleCalendar.setWorkTime, possibleCalendar.getWorkHours, possibleCalendar.unsetWorkTime, possibleCalendar.getClosestWorkTime, possibleCalendar.calculateDuration, possibleCalendar.hasDuration, possibleCalendar.calculateEndDate];\n return props.every(function (entry) {\n return entry instanceof Function;\n });\n }\n};\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\n TimeCalculator = require(\"./time_calculator\"),\n worktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\n utils = require(\"../../utils/utils\");\n\nmodule.exports = function (gantt) {\n var manager = new CalendarManager(gantt),\n timeCalculator = new TimeCalculator(manager);\n var facade = worktimeFacadeFactory.create(manager, timeCalculator);\n utils.mixin(gantt, facade);\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"../utils/helpers\");\n\nmodule.exports = function (gantt) {\n gantt.load = function (url, type, callback) {\n this._load_url = url;\n this.assert(arguments.length, \"Invalid load arguments\");\n var tp = 'json',\n cl = null;\n\n if (arguments.length >= 3) {\n tp = type;\n cl = callback;\n } else {\n if (typeof arguments[1] == \"string\") tp = arguments[1];else if (typeof arguments[1] == \"function\") cl = arguments[1];\n }\n\n this._load_type = tp;\n this.callEvent(\"onLoadStart\", [url, tp]);\n return this.ajax.get(url, gantt.bind(function (l) {\n this.on_load(l, tp);\n this.callEvent(\"onLoadEnd\", [url, tp]);\n if (typeof cl == \"function\") cl.call(this);\n }, this));\n };\n\n gantt.parse = function (data, type) {\n this.on_load({\n xmlDoc: {\n responseText: data\n }\n }, type);\n };\n\n gantt.serialize = function (type) {\n type = type || \"json\";\n return this[type].serialize();\n };\n /*\r\n tasks and relations\r\n {\r\n data:[\r\n \t{\r\n \t\t\"id\":\"string\",\r\n \t\t\"text\":\"...\",\r\n \t\t\"start_date\":\"Date or string\",\r\n \t\t\"end_date\":\"Date or string\",\r\n \t\t\"duration\":\"number\",\r\n \t\t\"progress\":\"0..1\",\r\n \t\t\"parent_id\":\"string\",\r\n \t\t\"order\":\"number\"\r\n \t},...],\r\n links:[\r\n \t{\r\n \t\tid:\"string\",\r\n \t\tsource:\"string\",\r\n \t\ttarget:\"string\",\r\n \t\ttype:\"string\"\r\n \t},...],\r\n collections:{\r\n \t\tcollectionName:[\r\n \t\t\t{key:, label:, optional:...},...\r\n \t\t],...\r\n \t}\r\n }\r\n \n * */\n\n\n gantt.on_load = function (resp, type) {\n if (resp.xmlDoc && resp.xmlDoc.status === 404) {\n // work if we don't have a file at current url\n this.assert(false, \"Failed to load the data from <a href='\" + resp.xmlDoc.responseURL + \"' target='_blank'>\" + resp.xmlDoc.responseURL + \"</a>, server returns 404\");\n return;\n }\n\n if (gantt.$destroyed) {\n return;\n }\n\n this.callEvent(\"onBeforeParse\", []);\n if (!type) type = \"json\";\n this.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n var raw = resp.xmlDoc.responseText;\n var data = this[type].parse(raw, resp);\n\n this._process_loading(data);\n };\n\n function attachAssignmentsToTasks(tasks, assignments) {\n var assignmentsByTasks = {};\n assignments.forEach(function (a) {\n if (!assignmentsByTasks[a.task_id]) {\n assignmentsByTasks[a.task_id] = [];\n }\n\n assignmentsByTasks[a.task_id].push(a);\n });\n tasks.forEach(function (t) {\n t[gantt.config.resource_property] = assignmentsByTasks[t.id] || [];\n });\n }\n\n gantt._process_loading = function (data) {\n if (data.collections) this._load_collections(data.collections);\n\n if (data.resources && this.$data.resourcesStore) {\n this.$data.resourcesStore.parse(data.resources);\n }\n\n var tasks = data.data || data.tasks;\n\n if (data.assignments) {\n attachAssignmentsToTasks(tasks, data.assignments);\n }\n\n this.$data.tasksStore.parse(tasks);\n var links = data.links || (data.collections ? data.collections.links : []);\n this.$data.linksStore.parse(links); //this._sync_links();\n\n this.callEvent(\"onParse\", []);\n this.render();\n };\n\n gantt._load_collections = function (collections) {\n var collections_loaded = false;\n\n for (var key in collections) {\n if (collections.hasOwnProperty(key)) {\n collections_loaded = true;\n var collection = collections[key]; // GS-1728. Create an empty serverList if it doesn't exist\n\n this.serverList[key] = this.serverList[key] || [];\n var arr = this.serverList[key];\n if (!arr) continue;\n arr.splice(0, arr.length); //clear old options\n\n for (var j = 0; j < collection.length; j++) {\n var option = collection[j];\n var obj = this.copy(option);\n obj.key = obj.value; // resulting option object\n\n for (var option_key in option) {\n if (option.hasOwnProperty(option_key)) {\n if (option_key == \"value\" || option_key == \"label\") continue;\n obj[option_key] = option[option_key]; // obj['value'] = option['value']\n }\n }\n\n arr.push(obj);\n }\n }\n }\n\n if (collections_loaded) this.callEvent(\"onOptionsLoad\", []);\n };\n\n gantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n return !task.$ignore;\n });\n\n function jsonParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.json = {\n parse: function parse(data) {\n if (!data) {\n jsonParseError(data);\n }\n\n if (typeof data == \"string\") {\n if ((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) != undefined) {\n try {\n data = JSON.parse(data);\n } catch (e) {\n jsonParseError(data);\n }\n } else {\n gantt.assert(false, \"JSON is not supported\");\n }\n }\n\n if (!data.data && !data.tasks) {\n jsonParseError(data);\n }\n\n if (data.dhx_security) gantt.security_key = data.dhx_security;\n return data;\n },\n serializeTask: function serializeTask(task) {\n return this._copyObject(task);\n },\n serializeLink: function serializeLink(link) {\n return this._copyLink(link);\n },\n _copyLink: function _copyLink(obj) {\n var copy = {};\n\n for (var key in obj) {\n copy[key] = obj[key];\n }\n\n return copy;\n },\n _copyObject: function _copyObject(obj) {\n var copy = {};\n\n for (var key in obj) {\n if (key.charAt(0) == \"$\") continue;\n copy[key] = obj[key];\n\n if (helpers.isDate(copy[key])) {\n copy[key] = gantt.defined(gantt.templates.xml_format) ? gantt.templates.xml_format(copy[key]) : gantt.templates.format_date(copy[key]);\n }\n }\n\n return copy;\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n gantt.eachTask(function (obj) {\n gantt.resetProjectDates(obj);\n tasks.push(this.serializeTask(obj));\n }, gantt.config.root_id, this);\n var rawLinks = gantt.getLinks();\n\n for (var i = 0; i < rawLinks.length; i++) {\n links.push(this.serializeLink(rawLinks[i]));\n }\n\n return {\n data: tasks,\n links: links\n };\n }\n };\n /*\r\n <data>\r\n \t<task id:\"some\" parent_id=\"0\" progress=\"0.5\">\r\n \t\t<text>My task 1</text>\r\n \t\t<start_date>16.08.2013</start_date>\r\n \t\t<end_date>22.08.2013</end_date>\r\n \t</task>\r\n \t<coll_options>\r\n \t\t<links>\r\n \t\t\t<link source='a1' target='b2' type='c3' />\r\n \t\t</links>\r\n \t</coll_options>\r\n </data>\r\n */\n\n function xmlParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An XML of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#xmldhtmlxgantt20 is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.xml = {\n _xmlNodeToJSON: function _xmlNodeToJSON(node, attrs_only) {\n var t = {};\n\n for (var i = 0; i < node.attributes.length; i++) {\n t[node.attributes[i].name] = node.attributes[i].value;\n }\n\n if (!attrs_only) {\n for (var i = 0; i < node.childNodes.length; i++) {\n var child = node.childNodes[i];\n if (child.nodeType == 1) t[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n }\n\n if (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n }\n\n return t;\n },\n _getCollections: function _getCollections(loader) {\n var collection = {};\n var opts = gantt.ajax.xpath(\"//coll_options\", loader);\n\n for (var i = 0; i < opts.length; i++) {\n var bind = opts[i].getAttribute(\"for\");\n var arr = collection[bind] = [];\n var itms = gantt.ajax.xpath(\".//item\", opts[i]);\n\n for (var j = 0; j < itms.length; j++) {\n var itm = itms[j];\n var attrs = itm.attributes;\n var obj = {\n key: itms[j].getAttribute(\"value\"),\n label: itms[j].getAttribute(\"label\")\n };\n\n for (var k = 0; k < attrs.length; k++) {\n var attr = attrs[k];\n if (attr.nodeName == \"value\" || attr.nodeName == \"label\") continue;\n obj[attr.nodeName] = attr.nodeValue;\n }\n\n arr.push(obj);\n }\n }\n\n return collection;\n },\n _getXML: function _getXML(text, loader, toptag) {\n toptag = toptag || \"data\";\n\n if (!loader.getXMLTopNode) {\n loader = gantt.ajax.parse(loader);\n }\n\n var xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\n\n if (!xml || xml.tagName != toptag) {\n xmlParseError(text);\n }\n\n var skey = xml.getAttribute(\"dhx_security\");\n if (skey) gantt.security_key = skey;\n return xml;\n },\n parse: function parse(text, loader) {\n loader = this._getXML(text, loader);\n var data = {};\n var evs = data.data = [];\n var xml = gantt.ajax.xpath(\"//task\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n evs[i] = this._xmlNodeToJSON(xml[i]);\n }\n\n data.collections = this._getCollections(loader);\n return data;\n },\n _copyLink: function _copyLink(obj) {\n return \"<item id='\" + obj.id + \"' source='\" + obj.source + \"' target='\" + obj.target + \"' type='\" + obj.type + \"' />\";\n },\n _copyObject: function _copyObject(obj) {\n return \"<task id='\" + obj.id + \"' parent='\" + (obj.parent || \"\") + \"' start_date='\" + obj.start_date + \"' duration='\" + obj.duration + \"' open='\" + !!obj.open + \"' progress='\" + obj.progress + \"' end_date='\" + obj.end_date + \"'><![CDATA[\" + obj.text + \"]]></task>\";\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n var json = gantt.json.serialize();\n\n for (var i = 0, len = json.data.length; i < len; i++) {\n tasks.push(this._copyObject(json.data[i]));\n }\n\n for (var i = 0, len = json.links.length; i < len; i++) {\n links.push(this._copyLink(json.links[i]));\n }\n\n return \"<data>\" + tasks.join(\"\") + \"<coll_options for='links'>\" + links.join(\"\") + \"</coll_options></data>\";\n }\n };\n gantt.oldxml = {\n parse: function parse(text, loader) {\n loader = gantt.xml._getXML(text, loader, \"projects\");\n var data = {\n collections: {\n links: []\n }\n };\n var evs = data.data = [];\n var xml = gantt.ajax.xpath(\"//task\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n evs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\n var parent = xml[i].parentNode;\n if (parent.tagName == \"project\") evs[i].parent = \"project-\" + parent.getAttribute(\"id\");else evs[i].parent = parent.parentNode.getAttribute(\"id\");\n }\n\n xml = gantt.ajax.xpath(\"//project\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n var ev = gantt.xml._xmlNodeToJSON(xml[i], true);\n\n ev.id = \"project-\" + ev.id;\n evs.push(ev);\n }\n\n for (var i = 0; i < evs.length; i++) {\n var ev = evs[i];\n ev.start_date = ev.startdate || ev.est;\n ev.end_date = ev.enddate;\n ev.text = ev.name;\n ev.duration = ev.duration / 8;\n ev.open = 1;\n if (!ev.duration && !ev.end_date) ev.duration = 1;\n if (ev.predecessortasks) data.collections.links.push({\n target: ev.id,\n source: ev.predecessortasks,\n type: gantt.config.links.finish_to_start\n });\n }\n\n return data;\n },\n serialize: function serialize() {\n gantt.message(\"Serialization to 'old XML' is not implemented\");\n }\n };\n\n gantt.serverList = function (name, array) {\n if (array) {\n this.serverList[name] = array.slice(0);\n } else if (!this.serverList[name]) {\n this.serverList[name] = [];\n }\n\n return this.serverList[name];\n };\n};","module.exports = function (gantt) {\n gantt.isReadonly = function (item) {\n if ((typeof item == \"number\" || typeof item == \"string\") && gantt.isTaskExists(item)) {\n item = gantt.getTask(item);\n }\n\n if (item && item[this.config.editable_property]) {\n return false;\n } else {\n return item && item[this.config.readonly_property] || this.config.readonly;\n }\n };\n};","module.exports = function (gantt) {\n gantt.getGridColumn = function (name) {\n var columns = gantt.config.columns;\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == name) return columns[i];\n }\n\n return null;\n };\n\n gantt.getGridColumns = function () {\n return gantt.config.columns.slice();\n };\n};","const SENSITIVITY = 20;\r\nconst TIMEOUT = 50;\r\nconst SCROLLSTEP = 10;\r\n\r\nexport default class ScrollableGrid {\r\n\tpublic getCurrentX;\r\n\tprivate $gantt;\r\n\tprivate $grid;\r\n\tprivate _dnd;\r\n\tprivate _scrollView;\r\n\tprivate _scrollOrder: 0 | 1 | -1 = 0;\r\n\r\n\tconstructor(params) {\r\n\t\tconst {gantt, grid, dnd, getCurrentX} = params;\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$grid = grid;\r\n\t\tthis._dnd = dnd;\r\n\t\tthis.getCurrentX = getCurrentX;\r\n\t\tthis._scrollView = this.$gantt.$ui.getView(this.$grid.$config.scrollX);\r\n\t\tthis.attachEvents();\r\n\t}\r\n\tattachEvents() {\r\n\t\tif (this.isScrollable()) {\r\n\t\t\tthis._dnd.attachEvent(\"onDragMove\", (obj, e) => {\r\n\t\t\t\tconst gridBoundingRect = this.$grid.$grid.getBoundingClientRect();\r\n\t\t\t\tconst maxLeft = gridBoundingRect.right;\r\n\t\t\t\tconst minLeft = gridBoundingRect.left;\r\n\t\t\t\tconst currentX = this.getCurrentX(e.clientX);\r\n\r\n\t\t\t\tif (currentX >= maxLeft - SENSITIVITY) {\r\n\t\t\t\t\tthis.autoscrollRight();\r\n\t\t\t\t\tthis.autoscrollStart();\r\n\t\t\t\t}\r\n\t\t\t\tif (currentX <= minLeft + SENSITIVITY) {\r\n\t\t\t\t\tthis.autoscrollLeft();\r\n\t\t\t\t\tthis.autoscrollStart();\r\n\t\t\t\t}\r\n\t\t\t\tif (currentX < maxLeft - SENSITIVITY && currentX > minLeft + SENSITIVITY) {\r\n\t\t\t\t\tthis.autoscrollStop();\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t\tthis._dnd.attachEvent(\"onDragEnd\", () => {\r\n\t\t\t\tthis.autoscrollStop();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tautoscrollStart() {\r\n\t\tif (this._scrollOrder === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst scrollStep = SCROLLSTEP * this._scrollOrder;\r\n\t\tconst scrollState = this._scrollView.getScrollState();\r\n\t\tthis._scrollView.scrollTo(scrollState.position + scrollStep);\r\n\t\tsetTimeout(() => { this.autoscrollStart(); }, TIMEOUT);\r\n\t}\r\n\tautoscrollRight() {\r\n\t\tthis._scrollOrder = 1;\r\n\t}\r\n\tautoscrollLeft() {\r\n\t\tthis._scrollOrder = -1;\r\n\t}\r\n\tautoscrollStop() {\r\n\t\tthis._scrollOrder = 0;\r\n\t}\r\n\tgetCorrection() {\r\n\t\tif (!this.isScrollable()) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn this._scrollView.getScrollState().position;\r\n\t}\r\n\tisScrollable() {\r\n\t\treturn !!this.$grid.$config.scrollable;\r\n\t}\r\n}","import * as domHelpers from \"../../utils/dom_helpers\";\r\nimport ScrollableGrid from \"./scrollable_grid\";\r\n\r\nconst COLUMN_ID_ATTR_NAME = \"data-column-id\";\r\n\r\nexport class ColumnsGridDnd {\r\n\tprivate $gantt;\r\n\tprivate $grid;\r\n\tprivate _dragX;\r\n\tprivate _dnd;\r\n\tprivate _originAutoscroll;\r\n\tprivate _scrollableGrid: ScrollableGrid;\r\n\tprivate _draggedCell;\r\n\tprivate _targetMarker = null;\r\n\tprivate _gridConfig;\r\n\tconstructor(gantt, grid) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$grid = grid;\r\n\t}\r\n\tinit() {\r\n\t\tconst DND = this.$gantt.$services.getService(\"dnd\");\r\n\t\tthis._dnd = new DND(this.$grid.$grid_scale, { updates_per_second: 60 });\r\n\t\tthis._scrollableGrid = new ScrollableGrid({\r\n\t\t\tgantt: this.$gantt,\r\n\t\t\tgrid: this.$grid,\r\n\t\t\tdnd: this._dnd,\r\n\t\t\tgetCurrentX: this.calculateCurrentPosition\r\n\t\t});\r\n\t\tthis.attachEvents();\r\n\t}\r\n\tattachEvents() {\r\n\t\tthis._dnd.attachEvent(\"onBeforeDragStart\", (obj, e) => {\r\n\t\t\tthis._draggedCell = this.$gantt.utils.dom.closest(e.target, \".gantt_grid_head_cell\");\r\n\t\t\tif(!this._draggedCell){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst columns = this.$grid.$getConfig().columns;\r\n\t\t\tconst columnName = this._draggedCell.getAttribute(COLUMN_ID_ATTR_NAME);\r\n\t\t\tlet draggedColumn;\r\n\t\t\tlet draggedIndex;\r\n\t\t\tcolumns.map(function(column, index){\r\n\t\t\t\tif(column.name === columnName){\r\n\t\t\t\t\tdraggedColumn = column;\r\n\t\t\t\t\tdraggedIndex = index;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (this.$grid.callEvent(\"onBeforeColumnDragStart\", [{ draggedColumn, draggedIndex}]) === false) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this._draggedCell || !draggedColumn) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis._gridConfig = this.$grid.$getConfig();\r\n\t\t\tthis._originAutoscroll = this.$gantt.config.autoscroll;\r\n\t\t\tthis.$gantt.config.autoscroll = false;\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tthis._dnd.attachEvent(\"onAfterDragStart\", (obj, e) => {\r\n\t\t\tif (!this._draggedCell) {\r\n\t\t\t\treturn; // GS-1333: don't try to reorder a column when we resize it\r\n\t\t\t}\r\n\t\t\tthis._dnd.config.column = this._draggedCell.getAttribute(COLUMN_ID_ATTR_NAME);\r\n\t\t\tthis._dnd.config.marker.innerHTML = this._draggedCell.outerHTML;\r\n\t\t\tthis._dnd.config.marker.classList.add(\"gantt_column_drag_marker\");\r\n\t\t\tthis._dnd.config.marker.style.height = this._gridConfig.scale_height + \"px\";\r\n\t\t\tthis._dnd.config.marker.style.lineHeight = this._gridConfig.scale_height + \"px\";\r\n\t\t\tthis._draggedCell.classList.add(\"gantt_grid_head_cell_dragged\");\r\n\t\t});\r\n\r\n\t\tthis._dnd.attachEvent(\"onDragMove\", (obj, e) => {\r\n\t\t\tif(!this._draggedCell){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._dragX = e.clientX;\r\n\t\t\tconst x = this.calculateCurrentPosition(e.clientX);\r\n\t\t\tconst columnIndexes = this.findColumnsIndexes();\r\n\t\t\tconst targetIndex = columnIndexes.targetIndex;\r\n\t\t\tconst draggedIndex = columnIndexes.draggedIndex;\r\n\t\t\tconst columns = this.$grid.$getConfig().columns;\r\n\r\n\t\t\tconst draggedColumn = columns[draggedIndex];\r\n\t\t\tconst targetColumn = columns[targetIndex];\r\n\t\t\tif (this.$grid.callEvent(\"onColumnDragMove\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]) === false) {\r\n\t\t\t\tthis.cleanTargetMarker();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.setMarkerPosition(x);\r\n\t\t\tthis.drawTargetMarker(columnIndexes);\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tthis._dnd.attachEvent(\"onDragEnd\", () => {\r\n\t\t\tif (!this._draggedCell) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.$gantt.config.autoscroll = this._originAutoscroll;\r\n\t\t\tthis._draggedCell.classList.remove(\"gantt_grid_head_cell_dragged\");\r\n\t\t\tthis.cleanTargetMarker();\r\n\t\t\tthis.reorderColumns();\r\n\t\t});\r\n\r\n\t}\r\n\treorderColumns() {\r\n\t\tconst { targetIndex, draggedIndex } = this.findColumnsIndexes();\r\n\r\n\t\tconst columns = this.$grid.$getConfig().columns;\r\n\t\tconst draggedColumn = columns[draggedIndex];\r\n\t\tconst targetColumn = columns[targetIndex];\r\n\r\n\t\tif (this.$grid.callEvent(\"onBeforeColumnReorder\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (targetIndex === draggedIndex) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcolumns.splice(draggedIndex, 1);\r\n\t\tcolumns.splice(targetIndex, 0, draggedColumn);\r\n\t\tthis.$gantt.render();\r\n\t\tthis.$grid.callEvent(\"onAfterColumnReorder\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]);\r\n\t}\r\n\tfindColumnsIndexes() {\r\n\t\tconst draggedId = this._dnd.config.column;\r\n\t\tconst columns = this.$grid.$getConfig().columns;\r\n\t\tlet targetIndex: number;\r\n\t\tlet draggedIndex: number;\r\n\t\tlet xBefore: number;\r\n\t\tlet xAfter: number;\r\n\t\tconst currentColumn = { startX: 0, endX: 0 };\r\n\r\n\t\tlet start = 0;\r\n\t\tlet end = columns.length - 1;\r\n\t\tlet compare = (a, b) => a <= b;\r\n\t\tlet next = (index) => ++index;\r\n\t\tif (this.$gantt.config.rtl) {\r\n\t\t\tstart = columns.length - 1;\r\n\t\t\tend = 0;\r\n\t\t\tcompare = (a, b) => a >= b;\r\n\t\t\tnext = (index) => --index;\r\n\t\t}\r\n\r\n\t\tlet columnRelativePos: number;\r\n\r\n\t\tconst relativeX = this._dragX - this.$grid.$grid.getBoundingClientRect().left + this._scrollableGrid.getCorrection();\r\n\t\tfor (let i = start; compare(i, end); i = next(i)) {\r\n\t\t\tif (targetIndex !== undefined && draggedIndex !== undefined) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(!columns[i].hide) {\r\n\t\t\t\tcurrentColumn.startX = currentColumn.endX;\r\n\t\t\t\tcurrentColumn.endX += columns[i].width;\r\n\r\n\t\t\t\t// if drop on a column or drop after the last column\r\n\t\t\t\tif (relativeX >= currentColumn.startX && (relativeX <= currentColumn.endX || !compare(next(i), end))) {\r\n\t\t\t\t\ttargetIndex = i;\r\n\t\t\t\t\txBefore = currentColumn.startX;\r\n\t\t\t\t\txAfter = currentColumn.endX;\r\n\t\t\t\t\tcolumnRelativePos = (relativeX - currentColumn.startX) / (currentColumn.endX - currentColumn.startX);\r\n\t\t\t\t}\r\n\t\t\t\tif (draggedId === columns[i].name) {\r\n\t\t\t\t\tdraggedIndex = i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttargetIndex,\r\n\t\t\tdraggedIndex,\r\n\t\t\txBefore,\r\n\t\t\txAfter,\r\n\t\t\tcolumnRelativePos\r\n\t\t};\r\n\t}\r\n\tsetMarkerPosition(x: number, y: number = 10) {\r\n\t\tconst { marker } = this._dnd.config;\r\n\t\tconst gridOffset = this._dnd._obj.getBoundingClientRect();\r\n\t\tmarker.style.top = `${gridOffset.y + y}px`;\r\n\t\tmarker.style.left = `${x}px`;\r\n\t}\r\n\tcalculateCurrentPosition = (eventX: number) => {\r\n\t\tconst gridBoundingRect = this.$grid.$grid.getBoundingClientRect();\r\n\t\tconst maxLeft = gridBoundingRect.right;\r\n\t\tconst minLeft = gridBoundingRect.left;\r\n\t\tlet x = eventX;\r\n\t\tif (x > maxLeft) {\r\n\t\t\tx = maxLeft;\r\n\t\t}\r\n\t\tif (x < minLeft) {\r\n\t\t\tx = minLeft;\r\n\t\t}\r\n\t\treturn x;\r\n\t}\r\n\tdrawTargetMarker({ targetIndex, draggedIndex, xBefore, xAfter, columnRelativePos }) {\r\n\t\tif (!this._targetMarker) {\r\n\t\t\tthis._targetMarker = document.createElement(\"div\");\r\n\t\t\tdomHelpers.addClassName(this._targetMarker, \"gantt_grid_target_marker\");\r\n\t\t\tthis._targetMarker.style.display = \"none\";\r\n\t\t\tthis._targetMarker.style.height = `${this._gridConfig.scale_height}px`;\r\n\t\t}\r\n\r\n\t\t// marker can be detached after gantt.render\r\n\t\tif(!this._targetMarker.parentNode){\r\n\t\t\tthis.$grid.$grid_scale.appendChild(this._targetMarker);\r\n\t\t}\r\n\r\n\t\tlet nextPosition: number;\r\n\t\tif (targetIndex > draggedIndex) {\r\n\t\t\tnextPosition = xAfter;\r\n\t\t} else if (targetIndex < draggedIndex) {\r\n\t\t\tnextPosition = xBefore;\r\n\t\t} else {\r\n\t\t\tif(columnRelativePos > 0.5){\r\n\t\t\t\tnextPosition = xAfter;\r\n\t\t\t}else{\r\n\t\t\t\tnextPosition = xBefore;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._targetMarker.style.left = `${nextPosition}px`;\r\n\t\tthis._targetMarker.style.display = \"block\";\r\n\t}\r\n\tcleanTargetMarker() {\r\n\t\tif (this._targetMarker && this._targetMarker.parentNode) {\r\n\t\t\tthis.$grid.$grid_scale.removeChild(this._targetMarker);\r\n\t\t}\r\n\t\tthis._targetMarker = null;\r\n\t}\r\n}","import {ColumnsGridDnd} from \"./column_grid_dnd\";\r\nexport default ColumnsGridDnd;","var domHelpers = require(\"../utils/dom_helpers\");\n\nfunction createRowResizer(gantt, grid) {\n var _task_grid_row_resize = {\n row_before_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var store = grid.$config.rowStore;\n var el = domHelpers.locateAttribute(e, config.task_grid_row_resizer_attribute);\n if (!el) return false;\n var row_id = this.locate(e, config.task_grid_row_resizer_attribute),\n row = store.getItem(row_id);\n if (grid.callEvent(\"onBeforeRowResize\", [row]) === false) return false;\n }, gantt),\n row_after_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var row_id = this.locate(e, config.task_grid_row_resizer_attribute);\n dnd.config.marker.innerHTML = \"\";\n dnd.config.marker.className += \" gantt_row_grid_resize_area\";\n dnd.config.marker.style.width = grid.$grid.offsetWidth + \"px\";\n dnd.config.drag_id = row_id;\n }, gantt),\n row_drag_move: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var dd = dnd.config;\n var id = dd.drag_id,\n itemHeight = grid.getItemHeight(id),\n itemTop = grid.getItemTop(id);\n var pos = domHelpers.getNodePosition(grid.$grid_data),\n pointerPosition = parseInt(dd.marker.style.top, 10),\n markerStartPosition = itemTop + pos.y,\n marker_height = 0,\n minPointerPosition = config.min_task_grid_row_height;\n marker_height = pointerPosition - markerStartPosition;\n\n if (marker_height < minPointerPosition) {\n marker_height = minPointerPosition;\n }\n\n dd.marker.style.left = pos.x + \"px\";\n dd.marker.style.top = markerStartPosition - 1 + \"px\";\n dd.marker.style.height = Math.abs(marker_height) + 1 + \"px\";\n dd.marker_height = marker_height;\n grid.callEvent(\"onRowResize\", [id, store.getItem(id), marker_height + itemHeight]);\n return true;\n }, gantt),\n row_drag_end: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var dd = dnd.config;\n var id = dd.drag_id,\n item = store.getItem(id),\n oldItemHeight = grid.getItemHeight(id);\n var finalHeight = dd.marker_height;\n if (grid.callEvent(\"onBeforeRowResizeEnd\", [id, item, finalHeight]) === false) return;\n if (item.row_height == finalHeight) return;\n item.row_height = finalHeight;\n gantt.updateTask(id);\n grid.callEvent(\"onAfterRowResize\", [id, item, oldItemHeight, finalHeight]);\n this.render();\n }, gantt)\n }; // calls the initialization of the D'n'D events for resize elements\n\n var _init_resize = function _init_resize() {\n var DnD = gantt.$services.getService(\"dnd\");\n var config = grid.$getConfig();\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(config.dnd_sensitivity)) dnd.config.sensitivity = config.dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_before_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onAfterDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_after_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragMove\", function (obj, e) {\n return _task_grid_row_resize.row_drag_move(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragEnd\", function (obj, e) {\n return _task_grid_row_resize.row_drag_end(dnd, obj, e);\n });\n };\n\n return {\n init: _init_resize\n };\n}\n\nmodule.exports = createRowResizer;","function createHelper(view) {\n var cachedRowHeight = -1;\n var canUseSimpleCalc = -1;\n return {\n resetCache: function resetCache() {\n cachedRowHeight = -1;\n canUseSimpleCalc = -1;\n },\n _getRowHeight: function _getRowHeight() {\n if (cachedRowHeight === -1) {\n cachedRowHeight = view.$getConfig().row_height;\n }\n\n return cachedRowHeight;\n },\n _refreshState: function _refreshState() {\n this.resetCache();\n canUseSimpleCalc = true;\n var store = view.$config.rowStore;\n\n if (!store) {\n return;\n }\n\n var globalRowHeight = this._getRowHeight();\n\n for (var i = 0; i < store.fullOrder.length; i++) {\n var item = store.getItem(store.fullOrder[i]); // GS-1491: ignore the task when it is filtered:\n\n if (!item) {\n continue;\n }\n\n if (item.row_height && item.row_height !== globalRowHeight) {\n canUseSimpleCalc = false;\n break;\n }\n }\n },\n canUseSimpleCalculation: function canUseSimpleCalculation() {\n if (canUseSimpleCalc === -1) {\n this._refreshState();\n }\n\n return canUseSimpleCalc;\n },\n\n /**\r\n * Get top coordinate by row index (order)\r\n * @param {number} index\r\n */\n getRowTop: function getRowTop(index) {\n var store = view.$config.rowStore;\n\n if (!store) {\n return 0;\n }\n\n return index * this._getRowHeight();\n },\n\n /**\r\n * Get height of the item by item id\r\n * @param {*} itemId\r\n */\n getItemHeight: function getItemHeight(itemId) {\n return this._getRowHeight();\n },\n\n /**\r\n * Get total height of items\r\n */\n getTotalHeight: function getTotalHeight() {\n if (view.$config.rowStore) {\n var store = view.$config.rowStore;\n return store.countVisible() * this._getRowHeight();\n } else {\n return 0;\n }\n },\n\n /**\r\n * Get item by top position\r\n * @param {*} top\r\n */\n getItemIndexByTopPosition: function getItemIndexByTopPosition(top) {\n if (view.$config.rowStore) {\n return Math.floor(top / this._getRowHeight());\n } else {\n return 0;\n }\n }\n };\n}\n\nmodule.exports = createHelper;","function createResizer(gantt, grid) {\n return {\n init: function init() {},\n doOnRender: function doOnRender() {}\n };\n}\n\nmodule.exports = createResizer;","var Grid = require(\"./ui/grid/grid\");\n\nmodule.exports = function (gantt) {\n require(\"./grid_column_api.gpl\")(gantt);\n\n Grid.prototype.getGridColumns = function () {\n var config = this.$getConfig();\n var columns = config.columns,\n visibleColumns = [];\n\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].hide) visibleColumns.push(columns[i]);\n }\n\n return visibleColumns;\n };\n};","module.exports = function (gantt) {\n var TreeDataStore = require(\"./datastore/treedatastore\");\n\n var loadedBranches = {};\n gantt.attachEvent(\"onClearAll\", function () {\n loadedBranches = {};\n });\n var oldHasChildren = TreeDataStore.prototype.hasChild;\n\n gantt.$data.tasksStore.hasChild = function (id) {\n if (!gantt.config.branch_loading) {\n return oldHasChildren.call(this, id);\n } else {\n if (oldHasChildren.call(this, id)) return true;\n\n if (this.exists(id)) {\n return this.getItem(id)[gantt.config.branch_loading_property];\n }\n }\n\n return false;\n };\n\n function needLoading(id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n var alreadyLoaded = !!loadedBranches[id]; // call ajax only if branch has children\n\n if (!alreadyLoaded && !gantt.getChildren(id).length && gantt.hasChild(id)) {\n return true;\n }\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onTaskOpened\", function (id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n // call ajax only if branch has children\n if (needLoading(id)) {\n var url = gantt._load_url;\n url = url.replace(/(\\?|&)?parent_id=.+&?/, \"\");\n var param = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n var y = gantt.getScrollState().y || 0;\n var requestData = {\n taskId: id,\n url: url + param + \"parent_id=\" + encodeURIComponent(id)\n };\n\n if (gantt.callEvent(\"onBeforeBranchLoading\", [requestData]) === false) {\n return;\n }\n\n gantt.load(requestData.url, this._load_type, function () {\n if (y) {\n gantt.scrollTo(null, y);\n }\n\n gantt.callEvent(\"onAfterBranchLoading\", [requestData]);\n });\n loadedBranches[id] = true;\n }\n }\n });\n};","export default function(gantt: any){\r\n\r\n\tgantt.ext = gantt.ext || {};\r\n\tgantt.config.show_empty_state = false;\r\n\r\n\tgantt.ext.emptyStateElement = gantt.ext.emptyStateElement || {\r\n\t\tisEnabled() {\r\n\t\t\treturn gantt.config.show_empty_state === true;\r\n\t\t},\r\n\t\tisGanttEmpty(){\r\n\t\t\treturn !gantt.getTaskByTime().length;\r\n\t\t},\r\n\t\trenderContent(container){\r\n\t\t\tconst placeholderTextElement = `<div class='gantt_empty_state_text'>\r\n <div class='gantt_empty_state_text_link' data-empty-state-create-task>${gantt.locale.labels.empty_state_text_link}</div>\r\n <div class='gantt_empty_state_text_description'>${gantt.locale.labels.empty_state_text_description}</div>\r\n </div>`;\r\n\t\t\tconst placeholderImageElement = \"<div class='gantt_empty_state_image'></div>\";\r\n\r\n\t\t\tconst placeholderContainer = `<div class='gantt_empty_state'>${placeholderImageElement}${placeholderTextElement}</div>`;\r\n\t\t\tcontainer.innerHTML = placeholderContainer;\r\n\t\t},\r\n\r\n\t\tclickEvents: [],\r\n\t\tattachAddTaskEvent(){\r\n\t\t\tconst id = gantt.attachEvent(\"onEmptyClick\", function(e){\r\n\t\t\t\tconst domHelpers = gantt.utils.dom;\r\n\t\t\t\tconst gridPlaceholder = domHelpers.closest(e.target, \"[data-empty-state-create-task]\");\r\n\t\t\t\tif (gridPlaceholder){\r\n\t\t\t\t\tgantt.createTask({\r\n\t\t\t\t\t\tid: gantt.uid(),\r\n\t\t\t\t\t\ttext: \"New Task\"\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.clickEvents.push(id);\r\n\t\t},\r\n\t\tdetachAddTaskEvents(){\r\n\t\t\tthis.clickEvents.forEach(function(event){\r\n\t\t\t\tgantt.detachEvent(event);\r\n\t\t\t});\r\n\t\t\tthis.clickEvents = [];\r\n\t\t},\r\n\r\n\t\tgetContainer(){\r\n\t\t\tif (gantt.$container) {\r\n\t\t\t\tconst domHelpers = gantt.utils.dom;\r\n\t\t\t\tif (gantt.$container.contains(gantt.$grid_data)) {\r\n\t\t\t\t\treturn domHelpers.closest(gantt.$grid_data, \".gantt_layout_content\");\r\n\t\t\t\t}\r\n\t\t\t\tif (gantt.$container.contains(gantt.$task_data)){\r\n\t\t\t\t\treturn domHelpers.closest(gantt.$task_data, \".gantt_layout_content\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tgetNode(){\r\n\t\t\tconst container = this.getContainer();\r\n\t\t\tif (!container){\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tconst emptyStateElementNode = container.querySelector(\".gantt_empty_state_wrapper\");\r\n\t\t\treturn emptyStateElementNode;\r\n\t\t},\r\n\r\n\t\tshow(){\r\n\t\t\tconst container = this.getContainer();\r\n\t\t\tif (!container && this.isGanttEmpty()){\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tconst wrapper = document.createElement(\"div\");\r\n\t\t\twrapper.className = \"gantt_empty_state_wrapper\";\r\n\t\t\twrapper.style.marginTop = (gantt.config.scale_height - container.offsetHeight) + \"px\";\r\n\t\t\tconst oldNodes = gantt.$container.querySelectorAll(\".gantt_empty_state_wrapper\");\r\n\t\t\t// for IE11\r\n\t\t\tArray.prototype.forEach.call(oldNodes, function(node){\r\n\t\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\t});\r\n\r\n\t\t\tthis.detachAddTaskEvents();\r\n\t\t\tthis.attachAddTaskEvent();\r\n\r\n\t\t\tcontainer.appendChild(wrapper);\r\n\t\t\tthis.renderContent(wrapper);\r\n\t\t},\r\n\t\thide(){\r\n\t\t\tconst emptyStateElementNode = this.getNode();\r\n\t\t\tif (emptyStateElementNode){\r\n\t\t\t\temptyStateElementNode.parentNode.removeChild(emptyStateElementNode);\r\n\t\t\t} else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tinit(){ }\r\n\t};\r\n\r\n\tgantt.attachEvent(\"onDataRender\", function() {\r\n\t\tconst emptyStateElement = gantt.ext.emptyStateElement;\r\n\t\tif (emptyStateElement.isEnabled() && emptyStateElement.isGanttEmpty()) {\r\n\t\t\temptyStateElement.show();\r\n\t\t} else {\r\n\t\t\temptyStateElement.hide();\r\n\t\t}\r\n\t});\r\n\r\n\r\n\r\n\r\n}\r\n","export default class LinkFormatterSimple implements ILinkFormatter {\r\n\tstatic create = (settings: ILinkFormatterConfig = null, gantt: any): LinkFormatterSimple => {\r\n\t\treturn new LinkFormatterSimple(gantt);\r\n\t}\r\n\tprotected _linkReg: RegExp;\r\n\tprotected _gantt: any;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis._linkReg = /^[0-9\\.]+/;\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\r\n\tformat = (link: ILink) : string => {\r\n\t\tconst wbs = this._getWBSCode(link.source);\r\n\t\treturn wbs;\r\n\t}\r\n\r\n\tcanParse = (value: string) : boolean => {\r\n\t\treturn this._linkReg.test(value);\r\n\t}\r\n\tparse = (value: string) : ILink => {\r\n\t\tif(!this.canParse(value)){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst linkPart = this._linkReg.exec(value)[0].trim();\r\n\r\n\t\tconst source = this._findSource(linkPart) || null;\r\n\r\n\t\treturn {\r\n\t\t\tid: undefined,\r\n\t\t\tsource,\r\n\t\t\ttarget: null,\r\n\t\t\ttype: this._gantt.config.links.finish_to_start,\r\n\t\t\tlag: 0\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _getWBSCode = (source: number | string) => {\r\n\t\tconst pred = this._gantt.getTask(source);\r\n\t\treturn this._gantt.getWBSCode(pred);\r\n\t}\r\n\r\n\tprotected _findSource = (value: string) => {\r\n\t\tconst reqTemplate = new RegExp(\"^[0-9\\.]+\", \"i\");\r\n\t\tif(reqTemplate.exec(value)){\r\n\t\t\tconst wbs = reqTemplate.exec(value)[0];\r\n\t\t\tconst task = this._gantt.getTaskByWBSCode(wbs);\r\n\t\t\tif(task){\r\n\t\t\t\treturn task.id;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}","var DurationFormatter = require(\"../common/duration_formatter\")[\"default\"];\n\nvar LinkFormatter = require(\"../common/link_formatter\")[\"default\"];\n\nmodule.exports = function (gantt) {\n gantt.ext.formatters = {\n durationFormatter: function durationFormatter(settings) {\n if (!settings) {\n settings = {};\n }\n\n if (!settings.store) {\n settings.store = gantt.config.duration_unit;\n }\n\n if (!settings.enter) {\n settings.enter = gantt.config.duration_unit;\n }\n\n return DurationFormatter.create(settings, gantt);\n },\n linkFormatter: function linkFormatter(settings) {\n return LinkFormatter.create(settings, gantt);\n }\n };\n};","module.exports = function (gantt) {\n function isEnabled() {\n return gantt.config.auto_types && // if enabled\n gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project; // and supported\n }\n\n function callIfEnabled(callback) {\n return function () {\n if (!isEnabled()) {\n return true;\n }\n\n return callback.apply(this, arguments);\n };\n }\n\n function checkTaskType(id, changedTypes) {\n var task = gantt.getTask(id);\n var targetType = getTaskTypeToUpdate(task);\n\n if (targetType !== false && gantt.getTaskType(task) !== targetType) {\n changedTypes.$needsUpdate = true;\n changedTypes[task.id] = {\n task: task,\n type: targetType\n };\n }\n }\n\n function getUpdatedTypes(id, changedTypes) {\n changedTypes = changedTypes || {};\n checkTaskType(id, changedTypes);\n gantt.eachParent(function (parent) {\n checkTaskType(parent.id, changedTypes);\n }, id);\n return changedTypes;\n }\n\n function applyChanges(changedTypes) {\n for (var i in changedTypes) {\n if (changedTypes[i] && changedTypes[i].task) {\n var task = changedTypes[i].task;\n task.type = changedTypes[i].type;\n gantt.updateTask(task.id);\n }\n }\n }\n\n function updateParentTypes(startId) {\n if (gantt.getState().group_mode) {\n return;\n }\n\n var changedTypes = getUpdatedTypes(startId);\n\n if (changedTypes.$needsUpdate) {\n gantt.batchUpdate(function () {\n applyChanges(changedTypes);\n });\n }\n }\n\n var delTaskParent;\n\n function updateTaskType(task, targetType) {\n if (!gantt.getState().group_mode) {\n task.type = targetType;\n gantt.updateTask(task.id);\n }\n }\n\n function getTaskTypeToUpdate(task) {\n var allTypes = gantt.config.types;\n var hasChildren = gantt.hasChild(task.id);\n var taskType = gantt.getTaskType(task.type);\n\n if (hasChildren && taskType === allTypes.task) {\n return allTypes.project;\n }\n\n if (!hasChildren && taskType === allTypes.project) {\n return allTypes.task;\n }\n\n return false;\n }\n\n var isParsingDone = true;\n gantt.attachEvent(\"onParse\", callIfEnabled(function () {\n isParsingDone = false;\n\n if (gantt.getState().group_mode) {\n return;\n }\n\n gantt.batchUpdate(function () {\n gantt.eachTask(function (task) {\n var targetType = getTaskTypeToUpdate(task);\n\n if (targetType !== false) {\n updateTaskType(task, targetType);\n }\n });\n });\n isParsingDone = true;\n }));\n gantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function (id) {\n if (isParsingDone) {\n updateParentTypes(id);\n }\n }));\n gantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(function (id) {\n if (isParsingDone) {\n updateParentTypes(id);\n }\n }));\n\n function updateAfterRemoveChild(id) {\n if (id != gantt.config.root_id && gantt.isTaskExists(id)) {\n updateParentTypes(id);\n }\n }\n\n gantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function (id, task) {\n delTaskParent = gantt.getParent(id);\n return true;\n }));\n gantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function (id, task) {\n updateAfterRemoveChild(delTaskParent);\n }));\n var originalRowDndParent;\n gantt.attachEvent(\"onRowDragStart\", callIfEnabled(function (id, target, e) {\n originalRowDndParent = gantt.getParent(id);\n return true;\n }));\n gantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function (id, target) {\n updateAfterRemoveChild(originalRowDndParent);\n updateParentTypes(id);\n }));\n var originalMoveTaskParent;\n gantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function (sid, parent, tindex) {\n originalMoveTaskParent = gantt.getParent(sid);\n return true;\n }));\n gantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function (id, parent, tindex) {\n if (document.querySelector(\".gantt_drag_marker\")) {\n // vertical dnd in progress\n return;\n }\n\n updateAfterRemoveChild(originalMoveTaskParent);\n updateParentTypes(id);\n }));\n};","module.exports = function addPlaceholder(gantt) {\n function isEnabled() {\n return gantt.config.placeholder_task;\n }\n\n function callIfEnabled(callback) {\n return function () {\n if (!isEnabled()) {\n return true;\n }\n\n return callback.apply(this, arguments);\n };\n }\n\n function silenceDataProcessor(dataProcessor) {\n if (dataProcessor && !dataProcessor._silencedPlaceholder) {\n dataProcessor._silencedPlaceholder = true;\n dataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function (id, state, data) {\n if (data.type == gantt.config.types.placeholder) {\n dataProcessor.setUpdated(id, false);\n return false;\n }\n\n return true;\n }));\n }\n }\n\n function insertPlaceholder() {\n var placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\n if (!placeholders.length || !gantt.isTaskExists(placeholders[0].id)) {\n var placeholder = {\n unscheduled: true,\n type: gantt.config.types.placeholder,\n duration: 0,\n text: gantt.locale.labels.new_task\n };\n\n if (gantt.callEvent(\"onTaskCreated\", [placeholder]) === false) {\n return;\n }\n\n gantt.addTask(placeholder);\n }\n }\n\n function afterEdit(id) {\n var item = gantt.getTask(id);\n\n if (item.type == gantt.config.types.placeholder) {\n if (item.start_date && item.end_date && item.unscheduled) {\n item.unscheduled = false;\n }\n\n gantt.batchUpdate(function () {\n var newTask = gantt.copy(item);\n gantt.silent(function () {\n gantt.deleteTask(item.id);\n });\n delete newTask[\"!nativeeditor_status\"];\n newTask.type = gantt.config.types.task;\n newTask.id = gantt.uid();\n gantt.addTask(newTask); //insertPlaceholder();\n });\n }\n }\n\n gantt.config.types.placeholder = \"placeholder\";\n gantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\n var ready = false;\n gantt.attachEvent(\"onGanttReady\", function () {\n if (ready) {\n return;\n }\n\n ready = true;\n gantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\n gantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function (id, task) {\n if (task.type != gantt.config.types.placeholder) {\n var placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n placeholders.forEach(function (p) {\n gantt.silent(function () {\n if (gantt.isTaskExists(p.id)) gantt.deleteTask(p.id);\n });\n });\n insertPlaceholder();\n }\n }));\n gantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\n });\n\n function isPlaceholderTask(taskId) {\n if (gantt.config.types.placeholder && gantt.isTaskExists(taskId)) {\n var task = gantt.getTask(taskId);\n\n if (task.type == gantt.config.types.placeholder) {\n return true;\n }\n }\n\n return false;\n }\n\n function isPlaceholderLink(link) {\n if (isPlaceholderTask(link.source) || isPlaceholderTask(link.target)) {\n return true;\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (isPlaceholderLink(link)) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeLinkAdd\", function (id, link) {\n if (isPlaceholderLink(link)) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeUndoStack\", function (action) {\n for (var i = 0; i < action.commands.length; i++) {\n var command = action.commands[i];\n\n if (command.entity === \"task\" && command.value.type === gantt.config.types.placeholder) {\n action.commands.splice(i, 1);\n i--;\n }\n }\n\n return true;\n });\n};","module.exports = function (gantt) {\n var resourceAssignmentsProperty = \"$resourceAssignments\";\n gantt.config.resource_assignment_store = \"resourceAssignments\";\n gantt.config.process_resource_assignments = true;\n var resourceAssignmentFormats = {\n auto: \"auto\",\n singleValue: \"singleValue\",\n valueArray: \"valueArray\",\n resourceValueArray: \"resourceValueArray\",\n assignmentsArray: \"assignmentsArray\"\n };\n var resourceAssignmentFormat = resourceAssignmentFormats.auto; //\"primitiveSingle\";//\"primitive\";//\"object\"|\"assignment\"\n\n var assignmentModes = {\n fixedDates: \"fixedDates\",\n fixedDuration: \"fixedDuration\",\n \"default\": \"default\"\n };\n\n function initAssignmentFields(item, task) {\n if (item.start_date) {\n item.start_date = gantt.date.parseDate(item.start_date, \"parse_date\");\n } else {\n item.start_date = null;\n }\n\n if (item.end_date) {\n item.end_date = gantt.date.parseDate(item.end_date, \"parse_date\");\n } else {\n item.end_date = null;\n }\n\n var delay = Number(item.delay);\n var initDelay = false;\n\n if (!isNaN(delay)) {\n item.delay = delay;\n } else {\n item.delay = 0;\n initDelay = true;\n }\n\n if (!gantt.defined(item.value)) {\n item.value = null;\n }\n\n if (!item.task_id || !item.resource_id) {\n return false;\n }\n\n item.mode = item.mode || assignmentModes[\"default\"];\n\n if (item.mode === assignmentModes.fixedDuration) {\n if (isNaN(Number(item.duration))) {\n task = task || gantt.getTask(item.task_id);\n item.duration = gantt.calculateDuration({\n start_date: item.start_date,\n end_date: item.end_date,\n id: task\n });\n }\n\n if (initDelay) {\n task = task || gantt.getTask(item.task_id);\n item.delay = gantt.calculateDuration({\n start_date: task.start_date,\n end_date: item.start_date,\n id: task\n });\n }\n }\n\n if (item.mode !== assignmentModes.fixedDates && (task || gantt.isTaskExists(item.task_id))) {\n task = task || gantt.getTask(item.task_id);\n\n var timing = _assignmentTimeFromTask(item, task);\n\n item.start_date = timing.start_date;\n item.end_date = timing.end_date;\n item.duration = timing.duration;\n }\n } // gantt init\n\n\n var resourceAssignmentsStore = gantt.createDatastore({\n name: gantt.config.resource_assignment_store,\n initItem: function initItem(item) {\n if (!item.id) {\n item.id = gantt.uid();\n }\n\n initAssignmentFields(item);\n return item;\n }\n });\n gantt.$data.assignmentsStore = resourceAssignmentsStore;\n\n function _assignmentTimeFromTask(assignment, task) {\n if (assignment.mode === assignmentModes.fixedDates) {\n return {\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n duration: assignment.duration\n };\n } else {\n var start = assignment.delay ? gantt.calculateEndDate({\n start_date: task.start_date,\n duration: assignment.delay,\n task: task\n }) : new Date(task.start_date);\n var end;\n var duration;\n\n if (assignment.mode === assignmentModes.fixedDuration) {\n end = gantt.calculateEndDate({\n start_date: start,\n duration: assignment.duration,\n task: task\n });\n duration = assignment.duration;\n } else {\n end = new Date(task.end_date);\n duration = task.duration - assignment.delay;\n }\n }\n\n return {\n start_date: start,\n end_date: end,\n duration: duration\n };\n } // data loading\n\n\n function _makeAssignmentsFromTask(task) {\n var property = gantt.config.resource_property;\n var assignments = task[property];\n var resourceAssignments = [];\n var detectFormat = resourceAssignmentFormat === resourceAssignmentFormats.auto;\n\n if (gantt.defined(assignments) && assignments) {\n if (!Array.isArray(assignments)) {\n assignments = [assignments];\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.singleValue;\n detectFormat = false;\n }\n }\n\n var usedIds = {};\n assignments.forEach(function (res) {\n if (!res.resource_id) {\n // when resource is a string/number\n res = {\n resource_id: res\n };\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.valueArray;\n detectFormat = false;\n } //\tisSimpleArray = true;\n\n }\n\n if (detectFormat) {\n if (res.id && res.resource_id) {\n resourceAssignmentFormat = resourceAssignmentFormats.assignmentsArray;\n detectFormat = false;\n } else {\n resourceAssignmentFormat = resourceAssignmentFormats.resourceValueArray;\n detectFormat = false;\n }\n }\n\n var defaultMode = assignmentModes[\"default\"];\n\n if (!res.mode) {\n if (res.start_date && res.end_date || res.start_date && res.duration) {\n defaultMode = assignmentModes.fixedDuration;\n }\n }\n\n var id;\n\n if (!res.id && res.$id && !usedIds[res.$id]) {\n id = res.$id;\n } else if (res.id && !usedIds[res.id]) {\n id = res.id;\n } else {\n id = gantt.uid();\n }\n\n usedIds[id] = true;\n var assignment = {\n id: id,\n start_date: res.start_date,\n duration: res.duration,\n end_date: res.end_date,\n delay: res.delay,\n task_id: task.id,\n resource_id: res.resource_id,\n value: res.value,\n mode: res.mode || defaultMode\n };\n\n if (!(assignment.start_date && assignment.start_date.getMonth && assignment.end_date && assignment.end_date.getMonth && typeof assignment.duration === \"number\")) {\n initAssignmentFields(assignment, task);\n }\n\n resourceAssignments.push(assignment);\n });\n }\n\n return resourceAssignments;\n }\n\n function _updateTaskBack(taskId) {\n // GS-1493. In some cases, the resource assignment store has the tasks that no longer exist\n if (!gantt.isTaskExists(taskId)) {\n return;\n }\n\n var task = gantt.getTask(taskId);\n var assignments = gantt.getTaskAssignments(task.id);\n\n _assignAssignments(task, assignments);\n }\n\n function _assignAssignments(task, assignments) {\n assignments.sort(function (a, b) {\n if (a.start_date && b.start_date && a.start_date.valueOf() != b.start_date.valueOf()) {\n return a.start_date - b.start_date;\n } else {\n return 0;\n }\n });\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray) {\n task[gantt.config.resource_property] = assignments;\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n task[gantt.config.resource_property] = assignments.map(function (a) {\n return {\n $id: a.id,\n start_date: a.start_date,\n duration: a.duration,\n end_date: a.end_date,\n delay: a.delay,\n resource_id: a.resource_id,\n value: a.value,\n mode: a.mode\n };\n });\n }\n\n task[resourceAssignmentsProperty] = assignments;\n }\n\n function _loadAssignmentsFromTask(task) {\n var assignments = _makeAssignmentsFromTask(task);\n\n var taskAssignments = [];\n assignments.forEach(function (a) {\n a.id = a.id || gantt.uid(); //var newId = resourceAssignmentsStore.addItem(a);\n\n taskAssignments.push(a);\n });\n return assignments;\n }\n\n function diffAssignments(taskValues, assignmentsStoreValues) {\n var result = {\n inBoth: [],\n inTaskNotInStore: [],\n inStoreNotInTask: []\n };\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.singleValue) {\n var taskOwner = taskValues[0];\n var ownerId = taskOwner ? taskOwner.resource_id : null;\n var foundOwnerAssignment = false;\n assignmentsStoreValues.forEach(function (a) {\n if (a.resource_id != ownerId) {\n result.inStoreNotInTask.push(a);\n } else if (a.resource_id == ownerId) {\n result.inBoth.push({\n store: a,\n task: taskOwner\n });\n foundOwnerAssignment = true;\n }\n });\n\n if (!foundOwnerAssignment && taskOwner) {\n result.inTaskNotInStore.push(taskOwner);\n }\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.valueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.resource_id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.resource_id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n if (processedIds[a.resource_id]) {\n return;\n }\n\n processedIds[a.resource_id] = true;\n var inTask = taskSearch[a.resource_id];\n var inStore = storeSearch[a.resource_id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray || resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.id || a.$id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n var id = a.id || a.$id;\n\n if (processedIds[id]) {\n return;\n }\n\n processedIds[id] = true;\n var inTask = taskSearch[id];\n var inStore = storeSearch[id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n }\n\n return result;\n }\n\n function assignmentHasChanged(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n if (String(source[i]) !== String(target[i])) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function updateAssignment(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n target[i] = source[i];\n }\n }\n }\n\n function _syncAssignments(task, storeAssignments) {\n var tasksAssignments = _makeAssignmentsFromTask(task);\n\n var diff = diffAssignments(tasksAssignments, storeAssignments);\n diff.inStoreNotInTask.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n diff.inTaskNotInStore.forEach(function (a) {\n resourceAssignmentsStore.addItem(a);\n });\n diff.inBoth.forEach(function (a) {\n if (assignmentHasChanged(a.task, a.store)) {\n updateAssignment(a.task, a.store);\n resourceAssignmentsStore.updateItem(a.store.id);\n } else {\n if (a.task.start_date && a.task.end_date && a.task.mode !== assignmentModes.fixedDates) {\n var timing = _assignmentTimeFromTask(a.store, task);\n\n if (a.store.start_date.valueOf() != timing.start_date.valueOf() || a.store.end_date.valueOf() != timing.end_date.valueOf()) {\n a.store.start_date = timing.start_date;\n a.store.end_date = timing.end_date;\n a.store.duration = timing.duration;\n resourceAssignmentsStore.updateItem(a.store.id);\n }\n }\n }\n });\n\n _updateTaskBack(task.id);\n }\n\n function _syncOnTaskUpdate(task) {\n var storeAssignments = task[resourceAssignmentsProperty] || resourceAssignmentsStore.find(function (a) {\n return a.task_id == task.id;\n });\n\n _syncAssignments(task, storeAssignments);\n }\n\n function _syncOnTaskDelete(ids) {\n var idsSearch = {};\n ids.forEach(function (id) {\n idsSearch[id] = true;\n });\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return idsSearch[a.task_id];\n });\n taskResources.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (gantt.config.process_resource_assignments) {\n gantt.attachEvent(\"onParse\", function () {\n gantt.silent(function () {\n resourceAssignmentsStore.clearAll();\n var totalAssignments = [];\n gantt.eachTask(function (task) {\n if (task.type === gantt.config.types.project) {\n return;\n }\n\n var assignments = _loadAssignmentsFromTask(task);\n\n _assignAssignments(task, assignments);\n\n assignments.forEach(function (a) {\n totalAssignments.push(a);\n });\n });\n resourceAssignmentsStore.parse(totalAssignments);\n });\n });\n var batchUpdate = false;\n var needUpdate = false;\n var needUpdateFor = {};\n var undoBatchCancel = false;\n gantt.attachEvent(\"onBeforeBatchUpdate\", function () {\n batchUpdate = true;\n });\n gantt.attachEvent(\"onAfterBatchUpdate\", function () {\n if (needUpdate) {\n var assignmentsHash = {};\n\n for (var i in needUpdateFor) {\n assignmentsHash[i] = gantt.getTaskAssignments(needUpdateFor[i].id);\n }\n\n for (var i in needUpdateFor) {\n _syncAssignments(needUpdateFor[i], assignmentsHash[i]);\n }\n }\n\n needUpdate = false;\n batchUpdate = false;\n needUpdateFor = {};\n });\n gantt.attachEvent(\"onTaskCreated\", function (item) {\n var assignments = _loadAssignmentsFromTask(item);\n\n resourceAssignmentsStore.parse(assignments);\n\n _assignAssignments(item, assignments);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskUpdate\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n /*\tgantt.attachEvent(\"onRowDragMove\", function (id) {\r\n \t\t_syncOnTaskUpdate(gantt.getTask(id));\r\n \t});*/\n\n gantt.attachEvent(\"onRowDragEnd\", function (id) {\n _syncOnTaskUpdate(gantt.getTask(id));\n });\n gantt.$data.tasksStore.attachEvent(\"onAfterDeleteConfirmed\", function (id, item) {\n var deleteIds = [id];\n gantt.eachTask(function (task) {\n deleteIds.push(task.id);\n }, id);\n\n _syncOnTaskDelete(deleteIds);\n });\n gantt.$data.tasksStore.attachEvent(\"onClearAll\", function () {\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n resourceAssignmentsStore.clearAll();\n return true;\n });\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return a.task_id == id;\n });\n taskResources.forEach(function (a) {\n a.task_id = new_id;\n resourceAssignmentsStore.updateItem(a.id);\n });\n\n _updateTaskBack(new_id); //any custom logic here\n\n }); // GS-2144. When we Undo something, the cache should be reset\n // during the `onStoreUpdated` event to properly update the assignments\n\n gantt.attachEvent(\"onBeforeUndo\", function (action) {\n undoBatchCancel = true;\n return true;\n });\n gantt.attachEvent(\"onAfterUndo\", function (action) {\n undoBatchCancel = true;\n });\n var resourceAssignmentsCache = null;\n var resourceTaskAssignmentsCache = null;\n var taskAssignmentsCache = null;\n resourceAssignmentsStore.attachEvent(\"onStoreUpdated\", function resetCache() {\n if (batchUpdate && !undoBatchCancel) {\n return true;\n }\n\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n return true;\n });\n\n gantt.getResourceAssignments = function (resourceId, taskId) {\n var searchTaskId = gantt.defined(taskId) && taskId !== null;\n\n if (resourceAssignmentsCache === null) {\n resourceAssignmentsCache = {};\n resourceTaskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!resourceAssignmentsCache[a.resource_id]) {\n resourceAssignmentsCache[a.resource_id] = [];\n }\n\n resourceAssignmentsCache[a.resource_id].push(a);\n var resourceTaskCacheKey = a.resource_id + \"-\" + a.task_id;\n\n if (!resourceTaskAssignmentsCache[resourceTaskCacheKey]) {\n resourceTaskAssignmentsCache[resourceTaskCacheKey] = [];\n }\n\n resourceTaskAssignmentsCache[resourceTaskCacheKey].push(a);\n });\n }\n\n if (searchTaskId) {\n return (resourceTaskAssignmentsCache[resourceId + \"-\" + taskId] || []).slice();\n } else {\n return (resourceAssignmentsCache[resourceId] || []).slice();\n }\n };\n\n gantt.getTaskAssignments = function (taskId) {\n if (taskAssignmentsCache === null) {\n var result = [];\n taskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!taskAssignmentsCache[a.task_id]) {\n taskAssignmentsCache[a.task_id] = [];\n }\n\n taskAssignmentsCache[a.task_id].push(a);\n\n if (a.task_id == taskId) {\n result.push(a);\n }\n });\n }\n\n return (taskAssignmentsCache[taskId] || []).slice();\n };\n\n gantt.getTaskResources = function (taskId) {\n var store = gantt.getDatastore(\"resource\");\n var assignments = gantt.getTaskAssignments(taskId);\n var uniqueResources = {};\n assignments.forEach(function (a) {\n if (!uniqueResources[a.resource_id]) {\n uniqueResources[a.resource_id] = a.resource_id;\n }\n });\n var resources = [];\n\n for (var i in uniqueResources) {\n var res = store.getItem(uniqueResources[i]);\n\n if (res) {\n resources.push(res);\n }\n }\n\n return resources;\n };\n\n gantt.updateTaskAssignments = _updateTaskBack;\n }\n }, {\n once: true\n });\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt) {\n var resourceTaskCache = {};\n var singleResourceCacheBuilt = false;\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n singleResourceCacheBuilt = false;\n });\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n resourceTaskCache = {};\n });\n\n function getTaskBy(propertyName, propertyValue, typeFilter) {\n if (typeof propertyName == \"function\") {\n return filterResourceTasks(propertyName);\n } else {\n if (helpers.isArray(propertyValue)) {\n return getResourceTasks(propertyName, propertyValue, typeFilter);\n } else {\n return getResourceTasks(propertyName, [propertyValue], typeFilter);\n }\n }\n }\n\n function filterResourceTasks(filter) {\n var res = [];\n gantt.eachTask(function (task) {\n if (filter(task)) {\n res.push(task);\n }\n });\n return res;\n }\n\n var falsyValuePrefix = String(Math.random());\n\n function resourceHashFunction(value) {\n if (value === null) {\n return falsyValuePrefix + String(value);\n }\n\n return String(value);\n }\n\n function getCacheKey(resourceIds, property, typeFilter) {\n if (Array.isArray(resourceIds)) {\n return resourceIds.map(function (value) {\n return resourceHashFunction(value);\n }).join(\"_\") + \"_\".concat(property, \"_\").concat(typeFilter);\n } else {\n return resourceHashFunction(resourceIds) + \"_\".concat(property, \"_\").concat(typeFilter);\n }\n }\n\n function getResourceTasks(property, resourceIds, typeFilter) {\n var res;\n var cacheKey = getCacheKey(resourceIds, property, JSON.stringify(typeFilter));\n var matchingResources = {};\n helpers.forEach(resourceIds, function (resourceId) {\n matchingResources[resourceHashFunction(resourceId)] = true;\n });\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = [];\n gantt.eachTask(function (task) {\n if (typeFilter) {\n if (!typeFilter[gantt.getTaskType(task)]) {\n return;\n }\n } else if (task.type == gantt.config.types.project) {\n return;\n }\n\n if (property in task) {\n var resourceValue;\n\n if (!helpers.isArray(task[property])) {\n resourceValue = [task[property]];\n } else {\n resourceValue = task[property];\n }\n\n helpers.forEach(resourceValue, function (value) {\n var resourceValue = value && value.resource_id ? value.resource_id : value;\n\n if (matchingResources[resourceHashFunction(resourceValue)]) {\n res.push(task);\n } else if (!singleResourceCacheBuilt) {\n var key = getCacheKey(value, property);\n\n if (!resourceTaskCache[key]) {\n resourceTaskCache[key] = [];\n }\n\n resourceTaskCache[key].push(task);\n }\n });\n }\n });\n singleResourceCacheBuilt = true;\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function selectAssignments(resourceId, taskId, result) {\n var property = gantt.config.resource_property;\n var owners = [];\n\n if (gantt.getDatastore(\"task\").exists(taskId)) {\n var task = gantt.getTask(taskId);\n owners = task[property] || [];\n }\n\n if (!Array.isArray(owners)) {\n owners = [owners];\n }\n\n for (var i = 0; i < owners.length; i++) {\n if (owners[i].resource_id == resourceId) {\n result.push({\n task_id: task.id,\n resource_id: owners[i].resource_id,\n value: owners[i].value\n });\n }\n }\n }\n\n function getResourceAssignments(resourceId, taskId) {\n // resource assignment as an independent module:\n // {taskId:, resourceId, value}\n // TODO: probably should add a separate datastore for these\n var assignments = [];\n var property = gantt.config.resource_property;\n\n if (taskId !== undefined) {\n selectAssignments(resourceId, taskId, assignments);\n } else {\n var tasks = gantt.getTaskBy(property, resourceId);\n tasks.forEach(function (task) {\n selectAssignments(resourceId, task.id, assignments);\n });\n }\n\n return assignments;\n }\n\n return {\n getTaskBy: getTaskBy,\n getResourceAssignments: getResourceAssignments\n };\n}\n\nfunction createHelper(gantt) {\n var resourcePlugin = {\n renderEditableLabel: function renderEditableLabel(start_date, end_date, resource, tasks, assignments) {\n var editable = gantt.config.readonly ? \"\" : \"contenteditable\";\n\n if (start_date < resource.end_date && end_date > resource.start_date) {\n for (var i = 0; i < assignments.length; i++) {\n var a = assignments[i];\n return \"<div \" + editable + \" data-assignment-cell data-assignment-id='\" + a.id + \"'\" + \" data-row-id='\" + resource.id + \"'\" + \" data-task='\" + resource.$task_id + \"'\" + \" data-start-date='\" + gantt.templates.format_date(start_date) + \"'\" + \" data-end-date='\" + gantt.templates.format_date(end_date) + \"'>\" + a.value + \"</div>\";\n }\n\n return \"<div \" + editable + \" data-assignment-cell data-empty \" + \" data-row-id='\" + resource.id + \"'\" + \" data-resource-id='\" + resource.$resource_id + \"'\" + \" data-task='\" + resource.$task_id + \"'\" + \" data-start-date='\" + gantt.templates.format_date(start_date) + \"'\" + \"' data-end-date='\" + gantt.templates.format_date(end_date) + \"'>-</div>\";\n }\n\n return \"\";\n },\n renderSummaryLabel: function renderSummaryLabel(start_date, end_date, resource, tasks, assignments) {\n var sum = assignments.reduce(function (total, assignment) {\n return total + Number(assignment.value);\n }, 0);\n\n if (sum % 1) {\n sum = Math.round(sum * 10) / 10;\n }\n\n if (sum) {\n return \"<div>\" + sum + \"</div>\";\n }\n\n return \"\";\n },\n editableResourceCellTemplate: function editableResourceCellTemplate(start_date, end_date, resource, tasks, assignments) {\n if (resource.$role === \"task\") {\n return resourcePlugin.renderEditableLabel(start_date, end_date, resource, tasks, assignments);\n } else {\n return resourcePlugin.renderSummaryLabel(start_date, end_date, resource, tasks, assignments);\n }\n },\n editableResourceCellClass: function editableResourceCellClass(start_date, end_date, resource, tasks, assignments) {\n var css = [];\n css.push(\"resource_marker\");\n\n if (resource.$role === \"task\") {\n css.push(\"task_cell\");\n } else {\n css.push(\"resource_cell\");\n }\n\n var sum = assignments.reduce(function (total, assignment) {\n return total + Number(assignment.value);\n }, 0);\n var capacity = Number(resource.capacity);\n\n if (isNaN(capacity)) {\n capacity = 8;\n }\n\n if (sum <= capacity) {\n css.push(\"workday_ok\");\n } else {\n css.push(\"workday_over\");\n }\n\n return css.join(\" \");\n },\n getSummaryResourceAssignments: function getResourceAssignments(resourceId) {\n var assignments;\n var store = gantt.getDatastore(gantt.config.resource_store);\n var resource = store.getItem(resourceId);\n\n if (resource.$role === \"task\") {\n assignments = gantt.getResourceAssignments(resource.$resource_id, resource.$task_id);\n } else {\n assignments = gantt.getResourceAssignments(resourceId);\n\n if (store.eachItem) {\n store.eachItem(function (childResource) {\n if (childResource.$role !== \"task\") {\n assignments = assignments.concat(gantt.getResourceAssignments(childResource.id));\n }\n }, resourceId);\n }\n }\n\n return assignments;\n },\n initEditableDiagram: function initEditableDiagram() {\n gantt.config.resource_render_empty_cells = true;\n\n (function () {\n /// salesforce locker workaround\n // SF removes 'contenteditable' attribute from cells\n // restore it on render\n var timeoutId = null;\n\n function makeEditable() {\n if (timeoutId) {\n cancelAnimationFrame(timeoutId);\n }\n\n timeoutId = requestAnimationFrame(function () {\n var cells = Array.prototype.slice.call(gantt.$container.querySelectorAll(\".resourceTimeline_cell [data-assignment-cell]\"));\n cells.forEach(function (cell) {\n cell.contentEditable = true;\n });\n });\n return true;\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n gantt.getDatastore(gantt.config.resource_assignment_store).attachEvent(\"onStoreUpdated\", makeEditable);\n gantt.getDatastore(gantt.config.resource_store).attachEvent(\"onStoreUpdated\", makeEditable);\n }, {\n once: true\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n var ganttViews = gantt.$layout.getCellsByType(\"viewCell\");\n ganttViews.forEach(function (view) {\n if (view.$config && view.$config.view === \"resourceTimeline\" && view.$content) {\n view.$content.attachEvent(\"onScroll\", makeEditable);\n }\n });\n });\n })();\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var assignmentEditInProcess = false;\n gantt.event(gantt.$container, \"keypress\", function (e) {\n var target = e.target.closest(\".resourceTimeline_cell [data-assignment-cell]\");\n\n if (target) {\n if (e.keyCode === 13 || e.keyCode === 27) {\n target.blur();\n }\n }\n });\n gantt.event(gantt.$container, \"focusout\", function (e) {\n if (assignmentEditInProcess) {\n return;\n }\n\n assignmentEditInProcess = true;\n setTimeout(function () {\n assignmentEditInProcess = false;\n }, 300);\n var target = e.target.closest(\".resourceTimeline_cell [data-assignment-cell]\");\n\n if (target) {\n var strValue = (target.innerText || \"\").trim();\n\n if (strValue == \"-\") {\n strValue = \"0\";\n }\n\n var value = Number(strValue);\n var rowId = target.getAttribute(\"data-row-id\");\n var assignmentId = target.getAttribute(\"data-assignment-id\");\n var taskId = target.getAttribute(\"data-task\");\n var resourceId = target.getAttribute(\"data-resource-id\");\n var startDate = gantt.templates.parse_date(target.getAttribute(\"data-start-date\"));\n var endDate = gantt.templates.parse_date(target.getAttribute(\"data-end-date\"));\n var assignmentStore = gantt.getDatastore(gantt.config.resource_assignment_store);\n\n if (isNaN(value)) {\n gantt.getDatastore(gantt.config.resource_store).refresh(rowId);\n } else {\n var task = gantt.getTask(taskId); // GS-2141. Track the changes by the Undo extension\n\n if (gantt.plugins().undo) {\n gantt.ext.undo.saveState(taskId, \"task\");\n }\n\n if (assignmentId) {\n var assignment = assignmentStore.getItem(assignmentId);\n\n if (value === assignment.value) {\n return;\n }\n\n if (assignment.start_date.valueOf() === startDate.valueOf() && assignment.end_date.valueOf() === endDate.valueOf()) {\n assignment.value = value;\n\n if (!value) {\n assignmentStore.removeItem(assignment.id);\n } else {\n assignmentStore.updateItem(assignment.id);\n }\n } else {\n if (assignment.end_date.valueOf() > endDate.valueOf()) {\n var nextChunk = gantt.copy(assignment);\n nextChunk.id = gantt.uid();\n nextChunk.start_date = endDate;\n nextChunk.duration = gantt.calculateDuration({\n start_date: nextChunk.start_date,\n end_date: nextChunk.end_date,\n task: task\n });\n nextChunk.delay = gantt.calculateDuration({\n start_date: task.start_date,\n end_date: nextChunk.start_date,\n task: task\n });\n nextChunk.mode = assignment.mode || \"default\";\n\n if (nextChunk.duration !== 0) {\n assignmentStore.addItem(nextChunk);\n }\n }\n\n if (assignment.start_date.valueOf() < startDate.valueOf()) {\n assignment.end_date = startDate;\n assignment.duration = gantt.calculateDuration({\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n task: task\n });\n assignment.mode = \"fixedDuration\";\n\n if (assignment.duration === 0) {\n assignmentStore.removeItem(assignment.id);\n } else {\n assignmentStore.updateItem(assignment.id);\n }\n } else {\n assignmentStore.removeItem(assignment.id);\n }\n\n if (value) {\n assignmentStore.addItem({\n task_id: assignment.task_id,\n resource_id: assignment.resource_id,\n value: value,\n start_date: startDate,\n end_date: endDate,\n duration: gantt.calculateDuration({\n start_date: startDate,\n end_date: endDate,\n task: task\n }),\n delay: gantt.calculateDuration({\n start_date: task.start_date,\n end_date: startDate,\n task: task\n }),\n mode: \"fixedDuration\"\n });\n }\n }\n\n gantt.updateTaskAssignments(task.id);\n gantt.updateTask(task.id);\n } else if (value) {\n var assignment = {\n task_id: taskId,\n resource_id: resourceId,\n value: value,\n start_date: startDate,\n end_date: endDate,\n duration: gantt.calculateDuration({\n start_date: startDate,\n end_date: endDate,\n task: task\n }),\n delay: gantt.calculateDuration({\n start_date: task.start_date,\n end_date: startDate,\n task: task\n }),\n mode: \"fixedDuration\"\n };\n assignmentStore.addItem(assignment);\n gantt.updateTaskAssignments(task.id);\n gantt.updateTask(task.id);\n }\n }\n }\n });\n }, {\n once: true\n });\n }\n };\n return resourcePlugin;\n}\n\nmodule.exports = function (gantt) {\n var methods = createResourceMethods(gantt);\n gantt.ext.resources = createHelper(gantt);\n gantt.config.resources = {\n dataprocessor_assignments: false,\n dataprocessor_resources: false,\n editable_resource_diagram: false,\n resource_store: {\n type: \"treeDataStore\",\n fetchTasks: false,\n initItem: function initItem(item) {\n item.parent = item.parent || gantt.config.root_id;\n item[gantt.config.resource_property] = item.parent;\n item.open = true;\n return item;\n }\n },\n lightbox_resources: function selectResourceControlOptions(resources) {\n var lightboxOptions = [];\n var store = gantt.getDatastore(gantt.config.resource_store);\n resources.forEach(function (res) {\n if (!store.hasChild(res.id)) {\n var copy = gantt.copy(res);\n copy.key = res.id;\n copy.label = res.text;\n lightboxOptions.push(copy);\n }\n });\n return lightboxOptions;\n }\n };\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (gantt.getDatastore(gantt.config.resource_store)) {\n return;\n }\n\n var resourceStoreConfig = gantt.config.resources ? gantt.config.resources.resource_store : undefined;\n var fetchTasks = resourceStoreConfig ? resourceStoreConfig.fetchTasks : undefined;\n\n if (gantt.config.resources && gantt.config.resources.editable_resource_diagram) {\n fetchTasks = true;\n }\n\n var initItems = function initItems(item) {\n item.parent = item.parent || gantt.config.root_id;\n item[gantt.config.resource_property] = item.parent;\n item.open = true;\n return item;\n };\n\n if (resourceStoreConfig && resourceStoreConfig.initItem) {\n initItems = resourceStoreConfig.initItem;\n }\n\n var storeType = resourceStoreConfig && resourceStoreConfig.type ? resourceStoreConfig.type : \"treeDatastore\";\n gantt.$resourcesStore = gantt.createDatastore({\n name: gantt.config.resource_store,\n type: storeType,\n fetchTasks: fetchTasks !== undefined ? fetchTasks : false,\n initItem: initItems\n });\n gantt.$data.resourcesStore = gantt.$resourcesStore;\n gantt.$resourcesStore.attachEvent(\"onParse\", function () {\n function selectResourceControlOptions(resources) {\n var lightboxOptions = [];\n resources.forEach(function (res) {\n if (!gantt.$resourcesStore.hasChild(res.id)) {\n var copy = gantt.copy(res);\n copy.key = res.id;\n copy.label = res.text;\n lightboxOptions.push(copy);\n }\n });\n return lightboxOptions;\n }\n\n var lightboxOptionsFnc = selectResourceControlOptions;\n\n if (gantt.config.resources && gantt.config.resources.lightbox_resources) {\n lightboxOptionsFnc = gantt.config.resources.lightbox_resources;\n }\n\n var options = lightboxOptionsFnc(gantt.$resourcesStore.getItems());\n gantt.updateCollection(\"resourceOptions\", options);\n });\n });\n gantt.getTaskBy = methods.getTaskBy;\n gantt.getResourceAssignments = methods.getResourceAssignments;\n gantt.config.resource_property = \"owner_id\";\n gantt.config.resource_store = \"resource\";\n gantt.config.resource_render_empty_cells = false;\n /**\r\n * these are placeholder functions that should be redefined by the user\r\n */\n\n gantt.templates.histogram_cell_class = function (start_date, end_date, resource, tasks, assignments) {};\n\n gantt.templates.histogram_cell_label = function (start_date, end_date, resource, tasks, assignments) {\n return tasks.length + \"/3\";\n };\n\n gantt.templates.histogram_cell_allocated = function (start_date, end_date, resource, tasks, assignments) {\n return tasks.length / 3;\n };\n\n gantt.templates.histogram_cell_capacity = function (start_date, end_date, resource, tasks, assignments) {\n return 0;\n };\n\n var defaultResourceCellClass = function defaultResourceCellClass(start, end, resource, tasks, assignments) {\n var css = \"\";\n\n if (tasks.length <= 1) {\n css = \"gantt_resource_marker_ok\";\n } else {\n css = \"gantt_resource_marker_overtime\";\n }\n\n return css;\n };\n\n var defaultResourceCellTemplate = function defaultResourceCellTemplate(start, end, resource, tasks, assignments) {\n return tasks.length * 8;\n };\n\n gantt.templates.resource_cell_value = defaultResourceCellTemplate;\n gantt.templates.resource_cell_class = defaultResourceCellClass; //editable_resource_diagram\n\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (gantt.config.resources && gantt.config.resources.editable_resource_diagram) {\n gantt.config.resource_render_empty_cells = true;\n\n if (gantt.templates.resource_cell_value === defaultResourceCellTemplate) {\n gantt.templates.resource_cell_value = gantt.ext.resources.editableResourceCellTemplate;\n }\n\n if (gantt.templates.resource_cell_class === defaultResourceCellClass) {\n gantt.templates.resource_cell_class = gantt.ext.resources.editableResourceCellClass;\n }\n\n gantt.ext.resources.initEditableDiagram(gantt);\n }\n });\n};","var createWbs = function createWbs(gantt) {\n return {\n _needRecalc: true,\n reset: function reset() {\n this._needRecalc = true;\n },\n _isRecalcNeeded: function _isRecalcNeeded() {\n return !this._isGroupSort() && this._needRecalc;\n },\n _isGroupSort: function _isGroupSort() {\n return !!gantt.getState().group_mode;\n },\n _getWBSCode: function _getWBSCode(task) {\n if (!task) return \"\";\n\n if (this._isRecalcNeeded()) {\n this._calcWBS();\n }\n\n if (task.$virtual) return \"\";\n if (this._isGroupSort()) return task.$wbs || \"\";\n\n if (!task.$wbs) {\n this.reset();\n\n this._calcWBS();\n }\n\n return task.$wbs;\n },\n _setWBSCode: function _setWBSCode(task, value) {\n task.$wbs = value;\n },\n getWBSCode: function getWBSCode(task) {\n return this._getWBSCode(task);\n },\n getByWBSCode: function getByWBSCode(code) {\n var parts = code.split(\".\");\n var currentNode = gantt.config.root_id;\n\n for (var i = 0; i < parts.length; i++) {\n var children = gantt.getChildren(currentNode);\n var index = parts[i] * 1 - 1;\n\n if (gantt.isTaskExists(children[index])) {\n currentNode = children[index];\n } else {\n return null;\n }\n }\n\n if (gantt.isTaskExists(currentNode)) {\n return gantt.getTask(currentNode);\n } else {\n return null;\n }\n },\n _calcWBS: function _calcWBS() {\n if (!this._isRecalcNeeded()) return;\n var _isFirst = true;\n gantt.eachTask(function (ch) {\n if (_isFirst) {\n _isFirst = false;\n\n this._setWBSCode(ch, \"1\");\n\n return;\n }\n\n var _prevSibling = gantt.getPrevSibling(ch.id);\n\n if (_prevSibling !== null) {\n var _wbs = gantt.getTask(_prevSibling).$wbs;\n\n if (_wbs) {\n _wbs = _wbs.split(\".\");\n _wbs[_wbs.length - 1]++;\n\n this._setWBSCode(ch, _wbs.join(\".\"));\n }\n } else {\n var _parent = gantt.getParent(ch.id);\n\n this._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n }\n }, gantt.config.root_id, this);\n this._needRecalc = false;\n }\n };\n};\n\nmodule.exports = function (gantt) {\n var wbs = createWbs(gantt);\n\n gantt.getWBSCode = function getWBSCode(task) {\n return wbs.getWBSCode(task);\n };\n\n gantt.getTaskByWBSCode = function (code) {\n return wbs.getByWBSCode(code);\n };\n\n function resetCache() {\n wbs.reset();\n return true;\n }\n\n gantt.attachEvent(\"onAfterTaskMove\", resetCache);\n gantt.attachEvent(\"onBeforeParse\", resetCache);\n gantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n gantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n gantt.attachEvent(\"onAfterSort\", resetCache);\n};","var global = require(\"../../utils/global\");\n\nfunction createMethod(gantt) {\n var methods = {};\n var isActive = false;\n\n function disableMethod(methodName, dummyMethod) {\n dummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function () {};\n\n if (!methods[methodName]) {\n methods[methodName] = this[methodName];\n this[methodName] = dummyMethod;\n }\n }\n\n function restoreMethod(methodName) {\n if (methods[methodName]) {\n this[methodName] = methods[methodName];\n methods[methodName] = null;\n }\n }\n\n function disableMethods(methodsHash) {\n for (var i in methodsHash) {\n disableMethod.call(this, i, methodsHash[i]);\n }\n }\n\n function restoreMethods() {\n for (var i in methods) {\n restoreMethod.call(this, i);\n }\n }\n\n function batchUpdatePayload(callback) {\n try {\n callback();\n } catch (e) {\n global.console.error(e);\n }\n }\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"batchUpdate\", function () {\n return {\n batch_update: isActive\n };\n }, false);\n return function batchUpdate(callback, noRedraw) {\n if (isActive) {\n // batch mode is already active\n batchUpdatePayload(callback);\n return;\n }\n\n var call_dp = this._dp && this._dp.updateMode != \"off\";\n var dp_mode;\n\n if (call_dp) {\n dp_mode = this._dp.updateMode;\n\n this._dp.setUpdateMode(\"off\");\n } // temporary disable some methods while updating multiple tasks\n\n\n var resetProjects = {};\n var methods = {\n \"render\": true,\n \"refreshData\": true,\n \"refreshTask\": true,\n \"refreshLink\": true,\n \"resetProjectDates\": function resetProjectDates(task) {\n resetProjects[task.id] = task;\n }\n };\n disableMethods.call(this, methods);\n isActive = true;\n this.callEvent(\"onBeforeBatchUpdate\", []);\n batchUpdatePayload(callback);\n this.callEvent(\"onAfterBatchUpdate\", []);\n restoreMethods.call(this); // do required updates after changes applied\n\n for (var i in resetProjects) {\n this.resetProjectDates(resetProjects[i]);\n }\n\n isActive = false;\n\n if (!noRedraw) {\n this.render();\n }\n\n if (call_dp) {\n this._dp.setUpdateMode(dp_mode);\n\n this._dp.setGanttMode(\"task\");\n\n this._dp.sendData();\n\n this._dp.setGanttMode(\"link\");\n\n this._dp.sendData();\n }\n };\n}\n\nmodule.exports = function (gantt) {\n gantt.batchUpdate = createMethod(gantt);\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./batch_update\"), require(\"./wbs\"), require(\"./resources\"), require(\"./resource_assignments\"), require(\"./new_task_placeholder\"), require(\"./auto_task_types\"), require(\"./formatters\"), require(\"./empty_state_screen\")[\"default\"]];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n};","import * as utils from \"../../utils/utils\";\r\n\r\nexport default class SimpleStorage {\r\n\tpublic static create = () : SimpleStorage => {\r\n\t\treturn new SimpleStorage();\r\n\t}\r\n\r\n\tprotected _storage: { [id: string]: any; };\r\n\r\n\tprotected constructor() {\r\n\t\tthis._storage = {};\r\n\t}\r\n\r\n\tpublic clear = (): void => {\r\n\t\tthis._storage = {};\r\n\t}\r\n\r\n\tpublic storeItem = (item: any): void => {\r\n\t\tthis._storage[item.id] = utils.copy(item);\r\n\t}\r\n\r\n\tpublic getStoredItem = (id: string): any => {\r\n\t\treturn this._storage[id] || null;\r\n\t}\r\n}","\r\nexport default function extendGantt(gantt: any, dp: any) {\r\n\tgantt.getUserData = function(id, name, store) {\r\n\t\tif (!this.userdata) {\r\n\t\t\tthis.userdata = {};\r\n\t\t}\r\n\t\tthis.userdata[store] = this.userdata[store] || {};\r\n\t\tif (this.userdata[store][id] && this.userdata[store][id][name]) {\r\n\t\t\treturn this.userdata[store][id][name];\r\n\t\t}\r\n\t\treturn \"\";\r\n\t};\r\n\tgantt.setUserData = function(id, name, value, store) {\r\n\t\tif (!this.userdata) {\r\n\t\t\tthis.userdata = {};\r\n\t\t}\r\n\t\tthis.userdata[store] = this.userdata[store] || {};\r\n\t\tthis.userdata[store][id] = this.userdata[store][id] || {};\r\n\t\tthis.userdata[store][id][name] = value;\r\n\t};\r\n\r\n\tgantt._change_id = function(oldId, newId) {\r\n\t\tswitch (this._dp._ganttMode) {\r\n\t\t\tcase \"task\":\r\n\t\t\t\tthis.changeTaskId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"link\":\r\n\t\t\t\tthis.changeLinkId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"assignment\":\r\n\t\t\t\tthis.$data.assignmentsStore.changeId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"resource\":\r\n\t\t\t\tthis.$data.resourcesStore.changeId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Invalid mode of the dataProcessor after database id is received: ${this._dp._ganttMode}, new id: ${newId}`);\r\n\t\t}\r\n\t};\r\n\r\n\tgantt._row_style = function(rowId, classname){\r\n\t\tif (this._dp._ganttMode !== \"task\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!gantt.isTaskExists(rowId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst task = gantt.getTask(rowId);\r\n\t\ttask.$dataprocessor_class = classname;\r\n\t\tgantt.refreshTask(rowId);\r\n\t};\r\n\r\n\t// fake method for dataprocessor\r\n\tgantt._delete_task = function(rowId, node) {}; // tslint:disable-line\r\n\r\n\tgantt._sendTaskOrder = function(id, item){\r\n\t\tif (item.$drop_target) {\r\n\t\t\tthis._dp.setGanttMode(\"task\");\r\n\t\t\tthis.getTask(id).target = item.$drop_target;\r\n\t\t\tthis._dp.setUpdated(id, true,\"order\");\r\n\t\t\tdelete this.getTask(id).$drop_target;\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\r\n\tgantt.setDp();\r\n}","import * as helpers from \"../../utils/helpers\";\r\n\r\nexport default class DataProcessorEvents {\r\n\tprotected _dataProcessorHandlers: any[];\r\n\tprotected $gantt: any;\r\n\tprotected $dp: any;\r\n\r\n\tconstructor(gantt: any, dp: any) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$dp = dp;\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t}\r\n\r\n\tattach() {\r\n\t\tconst dp = this.$dp;\r\n\t\tconst gantt = this.$gantt;\r\n\t\tconst treeHelper = require(\"../../utils/task_tree_helpers\");\r\n\t\tconst cascadeDelete = {};\r\n\r\n\t\tconst clientSideDelete = (id) => {\r\n\t\t\treturn this.clientSideDelete(id, dp, gantt);\r\n\t\t};\r\n\r\n\t\tfunction getTaskLinks(task) {\r\n\t\t\tlet _links = [];\r\n\r\n\t\t\tif (task.$source) {\r\n\t\t\t\t_links = _links.concat(task.$source);\r\n\t\t\t}\r\n\t\t\tif (task.$target) {\r\n\t\t\t\t_links = _links.concat(task.$target);\r\n\t\t\t}\r\n\r\n\t\t\treturn _links;\r\n\t\t}\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskAdd\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true, \"inserted\");\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskUpdate\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\r\n\t\t\t\t// gantt can be destroyed/reinitialized after dp.setUpdated\r\n\t\t\t\tif(gantt._sendTaskOrder){\r\n\t\t\t\t\tgantt._sendTaskOrder(id, item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onBeforeTaskDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.config.cascade_delete) {\r\n\t\t\t\tcascadeDelete[id] = {\r\n\t\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\r\n\t\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// GS-631. Keep the deleted item in Gantt until we receive the successful response from the server\r\n\t\t\tif (dp.deleteAfterConfirmation) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true, \"deleted\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tdp.setGanttMode(\"tasks\");\r\n\r\n\t\t\t// not send delete request if item is not inserted into the db - just remove it from the client\r\n\t\t\tconst needDbDelete = !clientSideDelete(id);\r\n\t\t\tconst needCascadeDelete = gantt.config.cascade_delete && cascadeDelete[id];\r\n\t\t\tif (!needDbDelete && !needCascadeDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (needCascadeDelete) {\r\n\t\t\t\tconst dpMode = dp.updateMode;\r\n\t\t\t\tdp.setUpdateMode(\"off\");\r\n\r\n\t\t\t\tconst cascade = cascadeDelete[id];\r\n\t\t\t\tfor (const i in cascade.tasks) {\r\n\t\t\t\t\tif (!clientSideDelete(i)) {\r\n\t\t\t\t\t\tdp.storeItem(cascade.tasks[i]);\r\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tfor (const i in cascade.links) {\r\n\t\t\t\t\tif (!clientSideDelete(i)) {\r\n\t\t\t\t\t\tdp.storeItem(cascade.links[i]);\r\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcascadeDelete[id] = null;\r\n\r\n\t\t\t\tif (dpMode !== \"off\") {\r\n\t\t\t\t\tdp.sendAllData();\r\n\t\t\t\t}\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdateMode(dpMode);\r\n\t\t\t}\r\n\r\n\t\t\tif (needDbDelete){\r\n\t\t\t\tdp.storeItem(item);\r\n\t\t\t\tif (!dp.deleteAfterConfirmation){\r\n\t\t\t\t\tdp.setUpdated(id, true, \"deleted\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (dp.updateMode !== \"off\" && !dp._tSend) {\r\n\t\t\t\tdp.sendAllData();\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkUpdate\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isLinkExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkAdd\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isLinkExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tdp.setGanttMode(\"links\");\r\n\r\n\t\t\tconst needDbDelete = !clientSideDelete(id);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdp.storeItem(item);\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onRowDragEnd\", function(id, target) { // tslint:disable-line\r\n\t\t\tgantt._sendTaskOrder(id, gantt.getTask(id));\r\n\t\t}));\r\n\r\n\t\tlet tasks = null;\r\n\t\tlet links = null;\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onTaskIdChange\", function(oldId, newId) { // tslint:disable-line\r\n\t\t\tif (!dp._waitMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst children = gantt.getChildren(newId);\r\n\t\t\tif (children.length) {\r\n\t\t\t\ttasks = tasks || {};\r\n\r\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\t\t\tconst ch = this.getTask(children[i]);\r\n\t\t\t\t\ttasks[ch.id] = ch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst item = this.getTask(newId);\r\n\t\t\tconst itemLinks = getTaskLinks(item);\r\n\r\n\t\t\tif (itemLinks.length) {\r\n\t\t\t\tlinks = links || {};\r\n\r\n\t\t\t\tfor (let i = 0; i < itemLinks.length; i++) {\r\n\t\t\t\t\tconst link = this.getLink(itemLinks[i]);\r\n\t\t\t\t\tlinks[link.id] = link;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"onAfterUpdateFinish\", function() {\r\n\t\t\tif (tasks || links) {\r\n\t\t\t\tgantt.batchUpdate(function() {\r\n\t\t\t\t\tfor (const id in tasks) {\r\n\t\t\t\t\t\tgantt.updateTask(tasks[id].id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const id in links) {\r\n\t\t\t\t\t\tgantt.updateLink(links[id].id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttasks = null;\r\n\t\t\t\t\tlinks = null;\r\n\t\t\t\t});\r\n\t\t\t\tif (tasks) {\r\n\t\t\t\t\tgantt._dp.setGanttMode(\"tasks\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgantt._dp.setGanttMode(\"links\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"onBeforeDataSending\", function() {\r\n\t\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet url = this._serverProcessor;\r\n\t\t\tif (this._tMode === \"REST-JSON\" || this._tMode === \"REST\") {\r\n\t\t\t\tconst mode = this._ganttMode;\r\n\r\n\t\t\t\turl = url.substring(0, url.indexOf(\"?\") > -1 ? url.indexOf(\"?\") : url.length);\r\n\t\t\t\t// editing=true&\r\n\t\t\t\tthis.serverProcessor = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + mode;\r\n\t\t\t} else {\r\n\t\t\t\tconst pluralizedMode = this._ganttMode + \"s\";\r\n\t\t\t\tthis.serverProcessor = url + gantt.ajax.urlSeparator(url) + \"gantt_mode=\" + pluralizedMode;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", function insertCallback(upd, id, parent, mode) { // tslint:disable-line\r\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\r\n\t\t\tconst methods = {\r\n\t\t\t\tadd: gantt.addTask,\r\n\t\t\t\tisExist: gantt.isTaskExists\r\n\t\t\t};\r\n\t\t\tif (mode === \"links\") {\r\n\t\t\t\tmethods.add = gantt.addLink;\r\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\r\n\t\t\t}\r\n\t\t\tif (methods.isExist.call(gantt, id)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdata.id = id;\r\n\t\t\tmethods.add.call(gantt, data);\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"updateCallback\", function updateCallback(upd, id) {\r\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\r\n\t\t\tif (!gantt.isTaskExists(id)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst objData = gantt.getTask(id);\r\n\t\t\tfor (const key in data) {\r\n\t\t\t\tlet property = data[key];\r\n\t\t\t\tswitch (key) {\r\n\t\t\t\t\tcase \"id\":\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tcase \"start_date\":\r\n\t\t\t\t\tcase \"end_date\":\r\n\t\t\t\t\t\tproperty = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date(property) : gantt.templates.parse_date(property);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"duration\":\r\n\t\t\t\t\t\tobjData.end_date = gantt.calculateEndDate({start_date: objData.start_date, duration: property, task:objData});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tobjData[key] = property;\r\n\t\t\t}\r\n\t\t\tgantt.updateTask(id);\r\n\t\t\tgantt.refreshData();\r\n\t\t});\r\n\t\tdp.attachEvent(\"deleteCallback\", function deleteCallback(upd, id, parent, mode) { // tslint:disable-line\r\n\t\t\tconst methods = {\r\n\t\t\t\tdelete: gantt.deleteTask,\r\n\t\t\t\tisExist: gantt.isTaskExists\r\n\t\t\t};\r\n\t\t\tif (mode === \"links\") {\r\n\t\t\t\tmethods.delete = gantt.deleteLink;\r\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\r\n\t\t\t} else if(mode === \"assignment\") {\r\n\t\t\t\tmethods.delete = function(val) {\r\n\t\t\t\t\tgantt.$data.assignmentsStore.remove(val);\r\n\t\t\t\t};\r\n\t\t\t\tmethods.isExist = function(val){\r\n\t\t\t\t\treturn gantt.$data.assignmentsStore.exists(val);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (methods.isExist.call(gantt, id)) {\r\n\t\t\t\tmethods.delete.call(gantt, id);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.handleResourceCRUD(dp, gantt);\r\n\t\tthis.handleResourceAssignmentCRUD(dp, gantt);\r\n\t}\r\n\r\n\tclientSideDelete(id, dp, gantt){\r\n\t\tconst updated = dp.updatedRows.slice();\r\n\t\tlet clientOnly = false;\r\n\r\n\t\tif(gantt.getUserData(id, \"!nativeeditor_status\", dp._ganttMode) === \"true_deleted\"){\r\n\t\t\tclientOnly = true;\r\n\t\t\tdp.setUpdated(id,false);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < updated.length && !dp._in_progress[id]; i++) {\r\n\t\t\tif (updated[i] === id) {\r\n\t\t\t\tif (gantt.getUserData(id, \"!nativeeditor_status\", dp._ganttMode) === \"inserted\") {\r\n\t\t\t\t\tclientOnly = true;\r\n\t\t\t\t}\r\n\t\t\t\tdp.setUpdated(id,false);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clientOnly;\r\n\t}\r\n\r\n\thandleResourceAssignmentCRUD(dp, gantt){\r\n\t\tif(!gantt.config.resources || gantt.config.resources.dataprocessor_assignments !== true){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst assignmentsStore = gantt.getDatastore(gantt.config.resource_assignment_store);\r\n\t\tconst insertedTasks = {};\r\n\t\tconst pendingAssignments = {};\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskAdd\", function(id, task){\r\n\t\t\tinsertedTasks[id] = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tfunction putAssignmentToQueue(item){\r\n\t\t\tpendingAssignments[item.id] = item;\r\n\t\t\tinsertedTasks[item.task_id] = true;\r\n\t\t}\r\n\r\n\t\tfunction insertResourceAssignment(assignment){\r\n\t\t\tconst id = assignment.id;\r\n\t\t\tif (assignmentsStore.exists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"assignment\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t\tdelete pendingAssignments[id];\r\n\t\t}\r\n\r\n\t\tgantt.attachEvent(\"onTaskIdChange\", function(id, newId){\r\n\t\t\tdelete insertedTasks[id];\r\n\t\t});\r\n\r\n\t\tassignmentsStore.attachEvent(\"onAfterAdd\", (id, item) => {\r\n\t\t\tif(insertedTasks[item.task_id]){\r\n\t\t\t\t// inserting assignment of new task\r\n\t\t\t\t// task is not saved yet, need to wait till it gets permanent id and save assigmnents after that\r\n\t\t\t\tputAssignmentToQueue(item);\r\n\t\t\t}else{\r\n\t\t\t\tinsertResourceAssignment(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassignmentsStore.attachEvent(\"onAfterUpdate\", (id, item) => {\r\n\t\t\tif (assignmentsStore.exists(id)) {\r\n\t\t\t\tif(pendingAssignments[id]){\r\n\t\t\t\t\tinsertResourceAssignment(item);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdp.setGanttMode(\"assignment\");\r\n\t\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassignmentsStore.attachEvent(\"onAfterDelete\", (id, item) => {\r\n\t\t\tdp.setGanttMode(\"assignment\");\r\n\r\n\t\t\tconst needDbDelete = !this.clientSideDelete(id, dp, gantt);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdp.storeItem(item);\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t});\r\n\r\n\t}\r\n\r\n\thandleResourceCRUD(dp, gantt){\r\n\t\tif(!gantt.config.resources || gantt.config.resources.dataprocessor_resources !== true){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst resourcesStore = gantt.getDatastore(gantt.config.resource_store);\r\n\r\n\t\tfunction insertResource(resource){\r\n\t\t\tconst id = resource.id;\r\n\t\t\tif (resourcesStore.exists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"resource\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresourcesStore.attachEvent(\"onAfterAdd\", (id, item) => {\r\n\t\t\tinsertResource(item);\r\n\t\t});\r\n\r\n\t\tresourcesStore.attachEvent(\"onAfterUpdate\", (id, item) => {\r\n\t\t\tif (resourcesStore.exists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"resource\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresourcesStore.attachEvent(\"onAfterDelete\", (id, item) => {\r\n\t\t\tdp.setGanttMode(\"resource\");\r\n\r\n\t\t\tconst needDbDelete = !this.clientSideDelete(id, dp, gantt);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdp.storeItem(item);\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n\tdetach() {\r\n\t\thelpers.forEach(this._dataProcessorHandlers, (e) => {\r\n\t\t\tthis.$gantt.detachEvent(e);\r\n\t\t});\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t}\r\n}\r\n","import * as eventable from \"../../utils/eventable\";\r\nimport * as helpers from \"../../utils/helpers\";\r\nimport * as utils from \"../../utils/utils\";\r\nimport DataProcessorEvents from \"./data_processor_events\";\r\nimport extendGantt from \"./extend_gantt\";\r\nimport SimpleStorage from \"./simple_storage\";\r\n\r\nexport interface DataProcessor { // tslint:disable-line\r\n\t$gantt: any;\r\n\tdetachAllEvents: any;\r\n\tattachEvent: any;\r\n\tcallEvent: any;\r\n\r\n\tserverProcessor: string;\r\n\taction_param: string;\r\n\tupdatedRows: any[];\r\n\tautoUpdate: boolean;\r\n\tupdateMode: string;\r\n\tmessages: any[];\r\n\tstyles: object;\r\n\tdnd: any;\r\n\tdeleteAfterConfirmation?: any;\r\n}\r\n\r\nexport function createDataProcessor(config: any) {\r\n\tlet router;\r\n\tlet tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if (config.hasOwnProperty(\"assignment\") || config.hasOwnProperty(\"link\") || config.hasOwnProperty(\"task\")) {\r\n\t\trouter = config;\r\n\t}\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\tconst gantt = this; // tslint:disable-line\r\n\tconst dp = new DataProcessor(config.url);\r\n\r\n\r\n\tdp.init(gantt);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter\r\n\t}, config.batchUpdate);\r\n\tif(config.deleteAfterConfirmation){\r\n\t\tdp.deleteAfterConfirmation = config.deleteAfterConfirmation;\r\n\t}\r\n\treturn dp;\r\n}\r\n\r\nexport class DataProcessor {\r\n\tpublic modes: object;\r\n\tpublic serverProcessor: string;\r\n\tpublic action_param: string; // tslint:disable-line\r\n\tpublic updatedRows: any[];\r\n\tpublic autoUpdate: boolean;\r\n\tpublic updateMode: string;\r\n\tpublic messages: any[];\r\n\tpublic styles: object;\r\n\tpublic dnd: any;\r\n\r\n\tprotected _tMode: string;\r\n\tprotected _headers: any;\r\n\tprotected _payload: any;\r\n\tprotected _postDelim: string;\r\n\tprotected _waitMode: number;\r\n\tprotected _in_progress: object; // tslint:disable-line\r\n\tprotected _invalid: object;\r\n\tprotected _storage: SimpleStorage;\r\n\tprotected _tSend: boolean;\r\n\tprotected _serializeAsJson: boolean;\r\n\tprotected _router: any;\r\n\tprotected _utf: boolean;\r\n\tprotected _methods: any[];\r\n\tprotected _user: any;\r\n\tprotected _uActions: object;\r\n\tprotected _needUpdate: boolean;\r\n\tprotected _ganttMode: \"task\"|\"link\";\r\n\tprotected _routerParametersFormat: \"parameters\"|\"object\";\r\n\r\n\tprotected _silent_mode: any; // tslint:disable-line\r\n\tprotected _updateBusy: any;\r\n\tprotected _serverProcessor: any;\r\n\tprotected _initialized: boolean;\r\n\r\n\tconstructor(serverProcessorURL?) {\r\n\t\tthis.serverProcessor = serverProcessorURL;\r\n\t\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\t\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\t\tthis.autoUpdate = true;\r\n\t\tthis.updateMode = \"cell\";\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tthis._postDelim = \"_\";\r\n\t\tthis._routerParametersFormat = \"parameters\";\r\n\r\n\t\tthis._waitMode = 0;\r\n\t\tthis._in_progress = {}; // ?\r\n\t\tthis._storage = SimpleStorage.create();\r\n\t\tthis._invalid = {};\r\n\t\tthis.messages = [];\r\n\r\n\t\tthis.styles = {\r\n\t\t\tupdated: \"font-weight:bold;\",\r\n\t\t\tinserted: \"font-weight:bold;\",\r\n\t\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\t\terror: \"color:red;\",\r\n\t\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t\t};\r\n\t\tthis.enableUTFencoding(true);\r\n\t\teventable(this);\r\n\t}\r\n\r\n\tsetTransactionMode(mode:any, total?:any) {\r\n\t\tif (typeof mode === \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (utils.defined(mode.headers)) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (utils.defined(mode.payload)) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t}\r\n\r\n\tescape(data:any) {\r\n\t\tif (this._utf) {\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\t} else {\r\n\t\t\treturn escape(data);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: allows to set escaping mode\r\n\t * @param: true - utf based escaping, simple - use current page encoding\r\n\t * @type: public\r\n\t */\r\n\tenableUTFencoding(mode:boolean) {\r\n\t\tthis._utf = !!mode;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: get state of updating\r\n\t * @returns: true - all in sync with server, false - some items not updated yet.\r\n\t * @type: public\r\n\t */\r\n\tgetSyncState() {\r\n\t\treturn !this.updatedRows.length;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: set if rows should be send to server automatically\r\n\t * @param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t * @type: public\r\n\t */\r\n\tsetUpdateMode(mode: string, dnd: any) {\r\n\t\tthis.autoUpdate = (mode === \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t}\r\n\r\n\tignore(code: any, master: any) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: mark row as updated/normal. check mandatory fields, initiate autoupdate (if turned on)\r\n\t * @param: rowId - id of row to set update-status for\r\n\t * @param: state - true for \"updated\", false for \"not updated\"\r\n\t * @param: mode - update mode name\r\n\t * @type: public\r\n\t */\r\n\tsetUpdated(rowId:number|string, state: boolean, mode?: string) {\r\n\t\tif (this._silent_mode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tconst existing = this.$gantt.getUserData(rowId, this.action_param, this._ganttMode);\r\n\t\tif (existing && mode === \"updated\") {\r\n\t\t\tmode = existing;\r\n\t\t}\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); // clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$gantt.setUserData(rowId, this.action_param, mode, this._ganttMode);\r\n\t\t\tif (this._in_progress[rowId]) {\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$gantt.setUserData(rowId, this.action_param, \"\", this._ganttMode);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) {\r\n\t\t\tthis.sendData(rowId);\r\n\t\t}\r\n\t}\r\n\r\n\tmarkRow(id: number | string, state: boolean, mode: string) {\r\n\t\tlet str = \"\";\r\n\t\tconst invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t// default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + \" \" + str;\r\n\r\n\t\t\tthis.$gantt[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (let i = 0; i < invalid.details.length; i++) {\r\n\t\t\t\t\tif (invalid.details[i]) {\r\n\t\t\t\t\t\tthis.$gantt[this._methods[1]](id, i, str);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetActionByState(state: string):string {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\r\n\t\t// reorder\r\n\t\treturn \"update\";\r\n\t}\r\n\r\n\tgetState(id: number | string) {\r\n\t\treturn this.$gantt.getUserData(id, this.action_param, this._ganttMode);\r\n\t}\r\n\r\n\tis_invalid(id: number | string) {\r\n\t\treturn this._invalid[id];\r\n\t}\r\n\r\n\tset_invalid(id: number | string, mode: any, details?) {\r\n\t\tif (details) {\r\n\t\t\tmode = {\r\n\t\t\t\tvalue: mode,\r\n\t\t\t\tdetails,\r\n\t\t\t\ttoString: function() { // tslint:disable-line\r\n\t\t\t\t\treturn this.value.toString();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis._invalid[id] = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: check mandatory fields and verify values of cells, initiate update (if specified). Can be redefined in order to provide custom validation\r\n\t * @param: rowId - id of row to set update-status for\r\n\t * @type: public\r\n\t */\r\n\t// tslint:disable-next-line\r\n\tcheckBeforeUpdate(rowId: number | string) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: send row(s) values to server\r\n\t * @param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t * @type: public\r\n\t */\r\n\tsendData(rowId?: any) {\r\n\t\tif (this.$gantt.editStop) {\r\n\t\t\tthis.$gantt.editStop();\r\n\t\t}\r\n\r\n\t\tif (typeof rowId === \"undefined\" || this._tSend) {\r\n\r\n\t\t\tconst pendingUpdateModes = [];\r\n\t\t\tif(this.modes){\r\n\t\t\t\tconst knownModes = [\"task\", \"link\", \"assignment\"];\r\n\t\t\t\tknownModes.forEach((mode) => {\r\n\t\t\t\t\tif(this.modes[mode] && this.modes[mode].updatedRows.length){\r\n\t\t\t\t\t\tpendingUpdateModes.push(mode);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (pendingUpdateModes.length){\r\n\t\t\t\tfor(let i = 0; i < pendingUpdateModes.length; i++){\r\n\t\t\t\t\tthis.setGanttMode(pendingUpdateModes[i]);\r\n\t\t\t\t\tthis.sendAllData();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.sendAllData();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._in_progress[rowId]) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t}\r\n\r\n\tserialize(data: any, id: any) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tif (typeof id !== \"undefined\") {\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\t} else {\r\n\t\t\tconst stack = [];\r\n\t\t\tconst keys = [];\r\n\t\t\tfor (const key in data) {\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this._postDelim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$gantt.security_key) {\r\n\t\t\t\tstack.push(\"dhx_security=\" + this.$gantt.security_key);\r\n\t\t\t}\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t}\r\n\r\n\tserialize_one(data: any, pref: string) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tconst stack = [];\r\n\t\tlet serialized = \"\";\r\n\t\tfor (const key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key === \"id\" ||\r\n\t\t\t\t\tkey == this.action_param) && // tslint:disable-line\r\n\t\t\t\t\tthis._tMode === \"REST\") {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t}\r\n\r\n\tsendAllData() {\r\n\t\tif (!this.updatedRows.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tlet valid: any = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\t// this.updatedRows can be spliced from onBeforeUpdate via dp.setUpdated false\r\n\t\t\t// use an iterator instead of for(var i = 0; i < this.updatedRows; i++) then\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfindRow(pattern: any) {\r\n\t\tlet i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++) {\r\n\t\t\tif (pattern == this.updatedRows[i]) { // tslint:disable-line\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: define custom actions\r\n\t * @param: name - name of action, same as value of action attribute\r\n\t * @param: handler - custom function, which receives a XMl response content for action\r\n\t * @type: private\r\n\t */\r\n\tdefineAction(name: string, handler: any) {\r\n\t\tif (!this._uActions) {\r\n\t\t\tthis._uActions = {};\r\n\t\t}\r\n\t\tthis._uActions[name] = handler;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t * @param: sid - id of item before update\r\n\t * @param: tid - id of item after up0ate\r\n\t * @param: action - action name\r\n\t * @type: public\r\n\t * @topic: 0\r\n\t */\r\n\tafterUpdateCallback(sid: number | string, tid: number | string, action: string, btag: any, ganttMode: string) {\r\n\t\tif(!this.$gantt){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setGanttMode(ganttMode);\r\n\r\n\t\tconst marker = sid;\r\n\t\tconst correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tconst originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) { // tslint:disable-line\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$gantt[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tif(!this.deleteAfterConfirmation || this._ganttMode !== \"task\"){\r\n\t\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\", this._ganttMode);\r\n\t\t\t\t\tthis.$gantt[this._methods[3]](sid);\r\n\t\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif (this._ganttMode === \"task\" && this.$gantt.isTaskExists(sid)) {\r\n\t\t\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\", this._ganttMode);\r\n\t\t\t\t\t\tconst task = this.$gantt.getTask(sid);\r\n\t\t\t\t\t\tthis.$gantt.silent(() => {\r\n\t\t\t\t\t\t\tthis.$gantt.deleteTask(sid);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.$gantt.callEvent(\"onAfterTaskDelete\", [sid, task]);\r\n\t\t\t\t\t\tthis.$gantt.render();\r\n\t\t\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"\", this._ganttMode);\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$gantt.getUserData(sid, this.action_param, this._ganttMode));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: response from server\r\n\t * @param: xml - XMLLoader object with response XML\r\n\t * @type: private\r\n\t */\r\n\tafterUpdate(that: any, xml: any, id?:any) {\r\n\t\tlet _xml;\r\n\t\tif (arguments.length === 3) {\r\n\t\t\t_xml = arguments[1];\r\n\t\t} else {\r\n\t\t\t// old dataprocessor\r\n\t\t\t_xml = arguments[4];\r\n\t\t}\r\n\t\tlet mode = this.getGanttMode();\r\n\t\tconst reqUrl = _xml.filePath || _xml.url;\r\n\r\n\t\tif (this._tMode !== \"REST\" && this._tMode !== \"REST-JSON\") {\r\n\t\t\tif (reqUrl.indexOf(\"gantt_mode=links\") !== -1) {\r\n\t\t\t\tmode = \"link\";\r\n\t\t\t} else if (reqUrl.indexOf(\"gantt_mode=assignments\") !== -1) {\r\n\t\t\t\tmode = \"assignment\";\r\n\t\t\t} else {\r\n\t\t\t\tmode = \"task\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (reqUrl.indexOf(\"/link\") >= 0) {\r\n\t\t\t\tmode = \"link\";\r\n\t\t\t} else if(reqUrl.indexOf(\"/assignment\") >= 0){\r\n\t\t\t\tmode = \"assignment\";\r\n\t\t\t} else {\r\n\t\t\t\tmode = \"task\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.setGanttMode(mode);\r\n\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\t// try to use json first\r\n\t\tlet tag;\r\n\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst processCallback = (itemId: any) => {\r\n\t\t\tconst action = tag.action || this.getState(itemId) || \"updated\";\r\n\t\t\tconst sid = tag.sid || itemId[0];\r\n\t\t\tconst tid = tag.tid || itemId[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag, mode);\r\n\t\t};\r\n\t\tif (tag) {\r\n\t\t\t// GS-753. When multiple tasks are updated, unhighlight all of them\r\n\t\t\tif (Array.isArray(id) && id.length > 1) {\r\n\t\t\t\tid.forEach((taskId) => processCallback(taskId));\r\n\t\t\t} else {\r\n\t\t\t\tprocessCallback(id);\r\n\t\t\t}\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\tthis.setGanttMode(mode);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tconst top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this.cleanUpdate(id);\r\n\t\t}\r\n\t\tconst atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this.cleanUpdate(id);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < atag.length; i++) {\r\n\t\t\tconst btag = atag[i];\r\n\t\t\tconst action = btag.getAttribute(\"type\");\r\n\t\t\tconst sid = btag.getAttribute(\"sid\");\r\n\t\t\tconst tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag, mode);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t}\r\n\r\n\tcleanUpdate(id: any[]) {\r\n\t\tif (id) {\r\n\t\t\tfor (let i = 0; i < id.length; i++) {\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfinalizeUpdate() {\r\n\t\tif (this._waitMode) {\r\n\t\t\tthis._waitMode--;\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length) {\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: initializes data-processor\r\n\t * @param: gantt - dhtmlxGantt object to attach this data-processor to\r\n\t * @type: public\r\n\t */\r\n\tinit(gantt: any) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$gantt = gantt;\r\n\t\tif (this.$gantt._dp_init) {\r\n\t\t\tthis.$gantt._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis.styles = {\r\n\t\t\tupdated:\"gantt_updated\",\r\n\t\t\torder:\"gantt_updated\",\r\n\t\t\tinserted:\"gantt_inserted\",\r\n\t\t\tdeleted:\"gantt_deleted\",\r\n\t\t\tdelete_confirmation:\"gantt_deleted\",\r\n\t\t\tinvalid:\"gantt_invalid\",\r\n\t\t\terror:\"gantt_error\",\r\n\t\t\tclear:\"\"\r\n\t\t};\r\n\r\n\t\tthis._methods=[\"_row_style\",\"setCellTextStyle\",\"_change_id\",\"_delete_task\"];\r\n\t\textendGantt(this.$gantt, this);\r\n\t\tconst dataProcessorEvents = new DataProcessorEvents(this.$gantt, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this.setGanttMode;\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$gantt._dp;\r\n\t\t\tdelete this.$gantt._change_id;\r\n\t\t\tdelete this.$gantt._row_style;\r\n\t\t\tdelete this.$gantt._delete_task;\r\n\t\t\tdelete this.$gantt._sendTaskOrder;\r\n\t\t\tdelete this.$gantt;\r\n\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$gantt.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\t}\r\n\r\n\tsetOnAfterUpdate(handler) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", handler);\r\n\t}\r\n\r\n\tsetOnBeforeUpdateHandler(handler) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", handler);\r\n\t}\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate(interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._needUpdate = false;\r\n\r\n\t\tthis._updateBusy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", this.afterAutoUpdate); // arguments sid, action, tid, xml_node;\r\n\r\n\t\tthis.attachEvent(\"onFullSync\", this.fullSync);\r\n\r\n\t\tsetInterval(() => {\r\n\t\t\tthis.loadUpdate();\r\n\t\t}, interval);\r\n\t}\r\n\r\n\t/* process updating request response\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate(sid, action, tid, xml_node) { // tslint:disable-line\r\n\t\tif (action === \"collision\") {\r\n\t\t\tthis._needUpdate = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync() {\r\n\t\tif (this._needUpdate) {\r\n\t\t\tthis._needUpdate = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates(url, callback) {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tif (this._updateBusy) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\tthis._updateBusy = true;\r\n\t\t}\r\n\r\n\t\tajax.get(url, callback);\r\n\r\n\t}\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate() {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tconst version = this.$gantt.getUserData(0, \"version\", this._ganttMode);\r\n\t\tlet url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, (xml) => {\r\n\t\t\tconst vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tthis.$gantt.setUserData(0, \"version\", this._getXmlNodeValue(vers[0]), this._ganttMode);\r\n\r\n\t\t\tconst updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tthis._silent_mode = true;\r\n\r\n\t\t\t\tfor (let i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tconst status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tconst id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tconst parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._silent_mode = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis._updateBusy = false;\r\n\t\t});\r\n\t}\r\n\r\n\tdestructor() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {}; // ?\r\n\t\tthis._invalid = {};\r\n\t\tthis._storage.clear();\r\n\t\tthis._storage = null;\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t}\r\n\r\n\tsetGanttMode(mode) {\r\n\t\tif (mode === \"tasks\") {\r\n\t\t\tmode = \"task\";\r\n\t\t} else if (mode === \"links\") {\r\n\t\t\tmode = \"link\";\r\n\t\t}\r\n\r\n\t\tconst modes = this.modes || {};\r\n\t\tconst ganttMode = this.getGanttMode();\r\n\t\tif (ganttMode) {\r\n\t\t\tmodes[ganttMode] = {\r\n\t\t\t\t_in_progress : this._in_progress,\r\n\t\t\t\t_invalid: this._invalid,\r\n\t\t\t\t_storage: this._storage,\r\n\t\t\t\tupdatedRows : this.updatedRows\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tlet newState = modes[mode];\r\n\t\tif (!newState) {\r\n\t\t\tnewState = modes[mode] = {\r\n\t\t\t\t_in_progress : {},\r\n\t\t\t\t_invalid : {},\r\n\t\t\t\t_storage : SimpleStorage.create(),\r\n\t\t\t\tupdatedRows : []\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis._in_progress = newState._in_progress;\r\n\t\tthis._invalid = newState._invalid;\r\n\t\tthis._storage = newState._storage;\r\n\t\tthis.updatedRows = newState.updatedRows;\r\n\t\tthis.modes = modes;\r\n\t\tthis._ganttMode = mode;\r\n\t}\r\n\tgetGanttMode():string {\r\n\t\treturn this._ganttMode;\r\n\t}\r\n\r\n\tstoreItem(item) {\r\n\t\tthis._storage.storeItem(item);\r\n\t}\r\n\r\n\turl(url: string) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t}\r\n\r\n\tprotected _beforeSendData(data: any, rowId: any) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis._sendData(data, rowId);\r\n\t}\r\n\r\n\tprotected _serializeAsJSON(data: any) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tconst copy = utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t}\r\n\r\n\tprotected _applyPayload(url: string) {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tif (this._payload) {\r\n\t\t\tfor (const key in this._payload) {\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\tprotected _cleanupArgumentsBeforeSend(dataToSend: any) {\r\n\t\tlet processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(const i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t}\r\n\tprotected _cleanupItemBeforeSend(updatedItem: any) {\r\n\t\tlet output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprotected _sendData(dataToSend: any, rowId?: any) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tconst taskState = this.getState(rowId);\r\n\t\t\tconst taskAction = this.getActionByState(taskState);\r\n\t\t\tconst ganttMode = this.getGanttMode();\r\n\t\t\tconst _onResolvedCreateUpdate = (tag) => {\r\n\t\t\t\tlet action = taskState || \"updated\";\r\n\t\t\t\tlet sid = rowId;\r\n\t\t\t\tlet tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\taction = tag.action || taskState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tthis.afterUpdateCallback(sid, tid, action, tag, ganttMode);\r\n\t\t\t};\r\n\r\n\t\t\tlet actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tif(this._routerParametersFormat === \"object\"){\r\n\t\t\t\t\tconst obj = {\r\n\t\t\t\t\t\tentity: ganttMode,\r\n\t\t\t\t\t\taction: taskAction,\r\n\t\t\t\t\t\tdata: dataToSend,\r\n\t\t\t\t\t\tid: rowId\r\n\t\t\t\t\t};\r\n\t\t\t\t\tactionPromise = this._router(obj);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tactionPromise = this._router(ganttMode, taskAction, dataToSend, rowId);\r\n\t\t\t\t}\r\n\t\t\t} else if (this._router[ganttMode] instanceof Function) {\r\n\t\t\t\tactionPromise = this._router[ganttMode](taskAction, dataToSend, rowId);\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconst errorMsgStart = \"Incorrect configuration of gantt.createDataProcessor\";\r\n\t\t\t\tconst errorMsgEnd = `\r\nYou need to either add missing properties to the dataProcessor router object or to use a router function.\r\nSee https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting and https://docs.dhtmlx.com/gantt/api__gantt_createdataprocessor.html for details.`;\r\n\r\n\t\t\t\tif(!this._router[ganttMode]){\r\n\t\t\t\t\tthrow new Error(`${errorMsgStart}: router for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t}\r\n\t\t\t\tswitch (taskState) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tif(!this._router[ganttMode].create){\r\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **create** action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tif(!this._router[ganttMode].delete){\r\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **delete** action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(!this._router[ganttMode].update){\r\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **update**\" action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch((error) => {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet queryParams: any;\r\n\t\tqueryParams = {\r\n\t\t\tcallback: (xml) => {\r\n\t\t\t\tconst ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (const key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.afterUpdate(this, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: this._headers\r\n\t\t};\r\n\r\n\t\tconst dhxVersion = \"dhx_version=\" + this.$gantt.getUserData(0, \"version\", this._ganttMode);\r\n\t\tconst urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, dhxVersion].join(\"&\")) : \"\");\r\n\t\tlet url: any = this._applyPayload(urlParams);\r\n\t\tlet data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tconst preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (const key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t}\r\n\r\n\tprotected _forEachUpdatedRow(code: any) {\r\n\t\tconst updatedRows = this.updatedRows.slice();\r\n\t\tfor (let i = 0; i < updatedRows.length; i++) {\r\n\t\t\tconst rowId = updatedRows[i];\r\n\t\t\tif (this.$gantt.getUserData(rowId, this.action_param, this._ganttMode)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _setDefaultTransactionMode() {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t}\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\tprotected _getXmlNodeValue(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprotected _getAllData() {\r\n\t\tconst out = {};\r\n\t\tlet hasOne = false;\r\n\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thasOne = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\r\n\t\treturn hasOne ? out : null;\r\n\t}\r\n\r\n\tprotected _prepareDate(value: Date) : string {\r\n\t\treturn this.$gantt.defined(this.$gantt.templates.xml_format) ? this.$gantt.templates.xml_format(value) : this.$gantt.templates.format_date(value);\r\n\t}\r\n\r\n\tprotected _prepareArray(value: any[], traversedObjects: object[]) : any[] {\r\n\t\ttraversedObjects.push(value);\r\n\r\n\t\treturn value.map((item) => {\r\n\t\t\tif(helpers.isDate(item)){\r\n\t\t\t\treturn this._prepareDate(item);\r\n\t\t\t} else if (Array.isArray(item) && !helpers.arrayIncludes(traversedObjects, item)){\r\n\t\t\t\treturn this._prepareArray(item, traversedObjects);\r\n\t\t\t} else if (item && typeof item === \"object\" && !helpers.arrayIncludes(traversedObjects, item)) {\r\n\t\t\t\treturn this._prepareObject(item, traversedObjects);\r\n\t\t\t} else {\r\n\t\t\t\treturn item;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected _prepareObject(rawItem: any, traversedObjects: object[]) : any {\r\n\t\tconst processedItem = {};\r\n\t\ttraversedObjects.push(rawItem);\r\n\r\n\t\tfor (const key in rawItem) {\r\n\t\t\tif (key.substr(0, 1) === \"$\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst value = rawItem[key];\r\n\t\t\tif (helpers.isDate(value)) {\r\n\t\t\t\tprocessedItem[key] = this._prepareDate(value);\r\n\t\t\t} else if(value === null) {\r\n\t\t\t\tprocessedItem[key] = \"\";\r\n\t\t\t} else if (Array.isArray(value) && !helpers.arrayIncludes(traversedObjects, value)){\r\n\t\t\t\tprocessedItem[key] = this._prepareArray(value, traversedObjects);\r\n\t\t\t} else if (value && typeof value === \"object\" && !helpers.arrayIncludes(traversedObjects, value)) {\r\n\t\t\t\tprocessedItem[key] = this._prepareObject(value, traversedObjects);\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn processedItem;\r\n\t}\r\n\r\n\tprotected _prepareDataItem(rawItem: any): any {\r\n\t\tconst processedItem = this._prepareObject(rawItem, []);\r\n\r\n\t\tprocessedItem[this.action_param] = this.$gantt.getUserData(rawItem.id, this.action_param, this._ganttMode);\r\n\t\treturn processedItem;\r\n\t}\r\n\r\n\tprotected getStoredItem(id){\r\n\t\treturn this._storage.getStoredItem(id);\r\n\t}\r\n\r\n\tprotected _getRowData(id) {\r\n\t\tlet dataItem;\r\n\t\tconst gantt = this.$gantt;\r\n\t\tif (this.getGanttMode() === \"task\") {\r\n\t\t\tif(gantt.isTaskExists(id)){\r\n\t\t\t\tdataItem =this.$gantt.getTask(id);\r\n\t\t\t}\r\n\t\t} else if (this.getGanttMode() === \"assignment\") {\r\n\t\t\tif(this.$gantt.$data.assignmentsStore.exists(id)){\r\n\t\t\t\tdataItem =this.$gantt.$data.assignmentsStore.getItem(id);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(gantt.isLinkExists(id)){\r\n\t\t\t\tdataItem =this.$gantt.getLink(id);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = this.getStoredItem(id);\r\n\t\t}\r\n\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id };\r\n\t\t}\r\n\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n}","var DataProcessor = require(\"./data_processor\");\n\nmodule.exports = {\n DEPRECATED_api: function DEPRECATED_api(server) {\n return new DataProcessor.DataProcessor(server);\n },\n createDataProcessor: DataProcessor.createDataProcessor,\n getDataProcessorModes: DataProcessor.getAvailableModes\n};","var isHeadless = require(\"../../utils/is_headless\");\n\nvar storeRenderCreator = function storeRenderCreator(name, gantt) {\n var store = gantt.getDatastore(name);\n var itemRepainter = {\n renderItem: function renderItem(id, renderer) {\n var renders = renderer.getLayers();\n var item = store.getItem(id);\n\n if (item && store.isVisible(id)) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].render_item(item);\n }\n }\n },\n renderItems: function renderItems(renderer) {\n var renderers = renderer.getLayers();\n\n for (var i = 0; i < renderers.length; i++) {\n renderers[i].clear();\n }\n\n var allData = null;\n var loadedRanges = {};\n\n for (var _i = 0; _i < renderers.length; _i++) {\n var layer = renderers[_i];\n var layerData = void 0;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n\n if (range.start !== undefined && range.end !== undefined) {\n var key = range.start + \" - \" + range.end;\n\n if (loadedRanges[key]) {\n layerData = loadedRanges[key];\n } else {\n layerData = store.getIndexRange(range.start, range.end);\n loadedRanges[key] = layerData;\n }\n } else if (range.ids !== undefined) {\n layerData = range.ids.map(function (id) {\n return store.getItem(id);\n });\n } else {\n throw new Error(\"Invalid range returned from 'getVisibleRange' of the layer\");\n }\n } else {\n if (!allData) {\n allData = store.getVisibleItems();\n }\n\n layerData = allData;\n }\n\n if (layer.prepare_data) {\n // GS-1605. Highlight timeline cells below tasks and in an empty chart\n layer.prepare_data(layerData);\n }\n\n renderers[_i].render_items(layerData);\n }\n },\n updateItems: function updateItems(layer) {\n if (layer.update_items) {\n var data;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n\n if (range.start !== undefined && range.end !== undefined) {\n data = store.getIndexRange(range.start, range.end);\n } else if (range.ids !== undefined) {\n data = range.ids.map(function (id) {\n return store.getItem(id);\n });\n } else {\n throw new Error(\"Invalid range returned from 'getVisibleRange' of the layer\");\n }\n } else {\n data = store.getVisibleItems();\n }\n\n if (layer.prepare_data) {\n // GS-1605. Highlight timeline cells below tasks and in an empty chart\n layer.prepare_data(data, layer);\n }\n\n layer.update_items(data);\n }\n }\n };\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n renderer.onUpdateRequest = function (layer) {\n itemRepainter.updateItems(layer);\n };\n }\n });\n\n function skipRepaint(gantt) {\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return true;\n } else {\n return false;\n }\n }\n\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!id || action == \"move\" || action == \"delete\") {\n store.callEvent(\"onBeforeRefreshAll\", []);\n store.callEvent(\"onAfterRefreshAll\", []);\n } else {\n store.callEvent(\"onBeforeRefreshItem\", [item.id]);\n store.callEvent(\"onAfterRefreshItem\", [item.id]);\n }\n });\n store.attachEvent(\"onAfterRefreshAll\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer && !skipRepaint(gantt)) {\n itemRepainter.renderItems(renderer);\n }\n });\n store.attachEvent(\"onAfterRefreshItem\", function (id) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n itemRepainter.renderItem(id, renderer);\n }\n }); // TODO: probably can be done more in a more efficient way\n\n store.attachEvent(\"onItemOpen\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n store.attachEvent(\"onItemClose\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n\n function refreshId(renders, oldId, newId, item) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].change_id(oldId, newId);\n }\n }\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (isHeadless(gantt)) {\n return true;\n } // in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n // use onBeforeIdChange for this hook.\n // TODO: use something more reasonable instead\n\n\n store.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!store.isSilent()) {\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n // missing check for renderer GS-1814\n refreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n itemRepainter.renderItem(newId, renderer);\n } else {\n // GS-1814 repaint ui to apply new id when the datastore don't have own renderer\n gantt.render();\n }\n }\n });\n};\n\nmodule.exports = {\n bindDataStore: storeRenderCreator\n};","function createDataStoreSelectMixin(store) {\n var selectedId = null;\n var deleteItem = store._removeItemInner;\n\n function _unselect(id) {\n selectedId = null;\n this.callEvent(\"onAfterUnselect\", [id]);\n }\n\n store._removeItemInner = function (id) {\n if (selectedId == id) {\n _unselect.call(this, id);\n }\n\n if (selectedId && this.eachItem) {\n this.eachItem(function (subItem) {\n if (subItem.id == selectedId) {\n _unselect.call(this, subItem.id);\n }\n }, id);\n }\n\n return deleteItem.apply(this, arguments);\n };\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (store.getSelectedId() == oldId) {\n store.silent(function () {\n store.unselect(oldId);\n store.select(newId);\n });\n }\n });\n return {\n select: function select(id) {\n if (id) {\n if (selectedId == id) return selectedId;\n\n if (!this._skip_refresh) {\n if (!this.callEvent(\"onBeforeSelect\", [id])) {\n return false;\n }\n }\n\n this.unselect();\n selectedId = id;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n this.callEvent(\"onAfterSelect\", [id]);\n }\n }\n\n return selectedId;\n },\n getSelectedId: function getSelectedId() {\n return selectedId;\n },\n isSelected: function isSelected(id) {\n return id == selectedId;\n },\n unselect: function unselect(id) {\n var id = id || selectedId;\n if (!id) return;\n selectedId = null;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n\n _unselect.call(this, id);\n }\n }\n };\n}\n\nmodule.exports = createDataStoreSelectMixin;","var utils = require(\"../../utils/utils\");\n\nvar createLinksStoreFacade = function createLinksStoreFacade() {\n return {\n getLinkCount: function getLinkCount() {\n return this.$data.linksStore.count();\n },\n getLink: function getLink(id) {\n return this.$data.linksStore.getItem(id);\n },\n getLinks: function getLinks() {\n return this.$data.linksStore.getItems();\n },\n isLinkExists: function isLinkExists(id) {\n return this.$data.linksStore.exists(id);\n },\n addLink: function addLink(link) {\n var newLink = this.$data.linksStore.addItem(link); // GS-1222. Update fullOrder otherwise the link won't appear after render\n\n if (this.$data.linksStore.isSilent()) {\n this.$data.linksStore.fullOrder.push(newLink);\n }\n\n return newLink;\n },\n updateLink: function updateLink(id, data) {\n if (!utils.defined(data)) data = this.getLink(id);\n this.$data.linksStore.updateItem(id, data);\n },\n deleteLink: function deleteLink(id) {\n return this.$data.linksStore.removeItem(id);\n },\n changeLinkId: function changeLinkId(oldid, newid) {\n return this.$data.linksStore.changeId(oldid, newid);\n }\n };\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nvar createTasksDatastoreFacade = function createTasksDatastoreFacade() {\n return {\n getTask: function getTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument for gantt.getTask\");\n var task = this.$data.tasksStore.getItem(id);\n this.assert(task, \"Task not found id=\" + id);\n return task;\n },\n getTaskByTime: function getTaskByTime(from, to) {\n var p = this.$data.tasksStore.getItems();\n var res = [];\n\n if (!(from || to)) {\n res = p;\n } else {\n from = +from || -Infinity;\n to = +to || Infinity;\n\n for (var t = 0; t < p.length; t++) {\n var task = p[t];\n if (+task.start_date < to && +task.end_date > from) res.push(task);\n }\n }\n\n return res;\n },\n isTaskExists: function isTaskExists(id) {\n if (!this.$data || !this.$data.tasksStore) {\n return false;\n }\n\n return this.$data.tasksStore.exists(id);\n },\n updateTask: function updateTask(id, item) {\n if (!utils.defined(item)) item = this.getTask(id);\n this.$data.tasksStore.updateItem(id, item);\n if (this.isTaskExists(id)) this.refreshTask(id);\n },\n addTask: function addTask(item, parent, index) {\n if (!utils.defined(item.id)) item.id = utils.uid(); //GS-761: assert unique ID\n\n if (this.isTaskExists(item.id)) {\n var task = this.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n return this.$data.tasksStore.updateItem(item.id, item);\n }\n }\n\n if (!utils.defined(parent)) parent = this.getParent(item) || 0;\n if (!this.isTaskExists(parent)) parent = this.config.root_id;\n this.setParent(item, parent);\n return this.$data.tasksStore.addItem(item, index, parent);\n },\n deleteTask: function deleteTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n return this.$data.tasksStore.removeItem(id);\n },\n getTaskCount: function getTaskCount() {\n return this.$data.tasksStore.count();\n },\n getVisibleTaskCount: function getVisibleTaskCount() {\n return this.$data.tasksStore.countVisible();\n },\n getTaskIndex: function getTaskIndex(id) {\n return this.$data.tasksStore.getBranchIndex(id);\n },\n getGlobalTaskIndex: function getGlobalTaskIndex(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument\");\n return this.$data.tasksStore.getIndexById(id);\n },\n eachTask: function eachTask(code, parent, master) {\n return this.$data.tasksStore.eachItem(utils.bind(code, master || this), parent);\n },\n eachParent: function eachParent(callback, startTask, master) {\n return this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n },\n changeTaskId: function changeTaskId(oldid, newid) {\n this.$data.tasksStore.changeId(oldid, newid);\n var task = this.$data.tasksStore.getItem(newid);\n var links = [];\n\n if (task.$source) {\n links = links.concat(task.$source);\n }\n\n if (task.$target) {\n links = links.concat(task.$target);\n }\n\n for (var i = 0; i < links.length; i++) {\n var link = this.getLink(links[i]);\n\n if (link.source == oldid) {\n link.source = newid;\n }\n\n if (link.target == oldid) {\n link.target = newid;\n }\n }\n },\n calculateTaskLevel: function calculateTaskLevel(item) {\n return this.$data.tasksStore.calculateItemLevel(item);\n },\n getNext: function getNext(id) {\n return this.$data.tasksStore.getNext(id);\n },\n getPrev: function getPrev(id) {\n return this.$data.tasksStore.getPrev(id);\n },\n getParent: function getParent(id) {\n return this.$data.tasksStore.getParent(id);\n },\n setParent: function setParent(task, new_pid, silent) {\n return this.$data.tasksStore.setParent(task, new_pid, silent);\n },\n getSiblings: function getSiblings(id) {\n return this.$data.tasksStore.getSiblings(id).slice();\n },\n getNextSibling: function getNextSibling(id) {\n return this.$data.tasksStore.getNextSibling(id);\n },\n getPrevSibling: function getPrevSibling(id) {\n return this.$data.tasksStore.getPrevSibling(id);\n },\n getTaskByIndex: function getTaskByIndex(index) {\n var id = this.$data.tasksStore.getIdByIndex(index);\n\n if (this.isTaskExists(id)) {\n return this.getTask(id);\n } else {\n return null;\n }\n },\n getChildren: function getChildren(id) {\n if (!this.hasChild(id)) {\n return [];\n } else {\n return this.$data.tasksStore.getChildren(id).slice();\n }\n },\n hasChild: function hasChild(id) {\n return this.$data.tasksStore.hasChild(id);\n },\n open: function open(id) {\n this.$data.tasksStore.open(id);\n },\n close: function close(id) {\n this.$data.tasksStore.close(id);\n },\n moveTask: function moveTask(sid, tindex, parent) {\n parent = replaceValidZeroId(parent, this.config.root_id);\n return this.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n },\n sort: function sort(field, desc, parent, silent) {\n var render = !silent; //4th argument to cancel redraw after sorting\n\n this.$data.tasksStore.sort(field, desc, parent);\n this.callEvent(\"onAfterSort\", [field, desc, parent]);\n\n if (render) {\n this.render();\n }\n }\n };\n};\n\nmodule.exports = createTasksDatastoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksFacade = require(\"./datastore_tasks\"),\n createLinksFacade = require(\"./datastore_links\"),\n DataStore = require(\"../datastore/datastore\"),\n TreeDataStore = require(\"../datastore/treedatastore\"),\n createDatastoreSelect = require(\"../datastore/select\");\n\nvar datastoreRender = require(\"../datastore/datastore_render\");\n\nvar isHeadless = require(\"../../utils/is_headless\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nfunction getDatastores() {\n var storeNames = this.$services.getService(\"datastores\");\n var res = [];\n\n for (var i = 0; i < storeNames.length; i++) {\n var store = this.getDatastore(storeNames[i]);\n\n if (!store.$destroyed) {\n res.push(store);\n }\n }\n\n return res;\n}\n\nvar createDatastoreFacade = function createDatastoreFacade() {\n return {\n createDatastore: function createDatastore(config) {\n var $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n if (config) {\n var self = this;\n\n config.openInitially = function () {\n return self.config.open_tree_initially;\n };\n\n config.copyOnParse = function () {\n return self.config.deepcopy_on_parse;\n };\n }\n\n var store = new $StoreType(config);\n this.mixin(store, createDatastoreSelect(store));\n\n if (config.name) {\n var servicePrefix = \"datastore:\";\n var storeAccessName = servicePrefix + config.name;\n store.attachEvent(\"onDestroy\", function () {\n this.$services.dropService(storeAccessName);\n var storeList = this.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeList.length; i++) {\n if (storeList[i] === config.name) {\n storeList.splice(i, 1);\n break;\n }\n }\n }.bind(this));\n this.$services.dropService(storeAccessName);\n this.$services.setService(storeAccessName, function () {\n return store;\n });\n var storeList = this.$services.getService(\"datastores\");\n\n if (!storeList) {\n storeList = [];\n this.$services.setService(\"datastores\", function () {\n return storeList;\n });\n storeList.push(config.name);\n } else if (storeList.indexOf(config.name) < 0) {\n storeList.push(config.name);\n }\n\n datastoreRender.bindDataStore(config.name, this);\n }\n\n return store;\n },\n getDatastore: function getDatastore(name) {\n return this.$services.getService(\"datastore:\" + name);\n },\n _getDatastores: getDatastores,\n refreshData: function refreshData() {\n var scrollState;\n\n if (!isHeadless(this)) {\n scrollState = this.getScrollState();\n }\n\n this.callEvent(\"onBeforeDataRender\", []);\n var stores = getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].refresh();\n }\n\n if (this.config.preserve_scroll && !isHeadless(this) && (scrollState.x || scrollState.y)) {\n this.scrollTo(scrollState.x, scrollState.y);\n }\n\n this.callEvent(\"onDataRender\", []);\n },\n isChildOf: function isChildOf(childId, parentId) {\n return this.$data.tasksStore.isChildOf(childId, parentId);\n },\n refreshTask: function refreshTask(taskId, refresh_links) {\n var task = this.getTask(taskId);\n var self = this;\n\n function refreshLinks() {\n if (refresh_links !== undefined && !refresh_links) return;\n\n for (var i = 0; i < task.$source.length; i++) {\n self.refreshLink(task.$source[i]);\n }\n\n for (var i = 0; i < task.$target.length; i++) {\n self.refreshLink(task.$target[i]);\n }\n }\n\n if (task && this.isTaskVisible(taskId)) {\n this.$data.tasksStore.refresh(taskId, !!this.getState(\"tasksDnd\").drag_id || refresh_links === false); // do quick refresh during drag and drop\n\n refreshLinks();\n } else if (this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId)) && !this._bulk_dnd) {\n this.refreshTask(this.getParent(taskId));\n var hasSplitParent = false;\n this.eachParent(function (parent) {\n if (hasSplitParent || this.isSplitTask(parent)) {\n hasSplitParent = true;\n }\n }, taskId);\n\n if (hasSplitParent) {\n refreshLinks();\n }\n }\n },\n refreshLink: function refreshLink(linkId) {\n this.$data.linksStore.refresh(linkId, !!this.getState(\"tasksDnd\").drag_id); // do quick refresh during drag and drop\n },\n silent: function silent(code) {\n var gantt = this;\n gantt.$data.tasksStore.silent(function () {\n gantt.$data.linksStore.silent(function () {\n code();\n });\n });\n },\n clearAll: function clearAll() {\n var stores = getDatastores.call(this); // clear all stores without invoking clearAll event\n // in order to prevent calling handlers when only some stores are cleared\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].silent(function () {\n stores[i].clearAll();\n });\n } // run clearAll again to invoke events\n\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].clearAll();\n }\n\n this._update_flags();\n\n this.userdata = {};\n this.callEvent(\"onClear\", []);\n this.render();\n },\n _clear_data: function _clear_data() {\n this.$data.tasksStore.clearAll();\n this.$data.linksStore.clearAll();\n\n this._update_flags();\n\n this.userdata = {};\n },\n selectTask: function selectTask(id) {\n var store = this.$data.tasksStore;\n if (!this.config.select_task) return false;\n id = replaceValidZeroId(id, this.config.root_id);\n\n if (id) {\n var oldSelectId = this.getSelectedId(); // Don't repaint the resource panel as the data didn't change\n\n store._skipResourceRepaint = true;\n store.select(id);\n store._skipResourceRepaint = false; // GS-730. Split task is not included in the tree, \n // so the datastore renderer will think that the task is not visible\n\n if (oldSelectId && store.pull[oldSelectId].$split_subtask && oldSelectId != id) {\n this.refreshTask(oldSelectId);\n }\n\n if (store.pull[id].$split_subtask && oldSelectId != id) {\n // GS-1850. Do not repaint split task after double click\n this.refreshTask(id);\n }\n }\n\n return store.getSelectedId();\n },\n unselectTask: function unselectTask(id) {\n var store = this.$data.tasksStore;\n store.unselect(id); // GS-730. Split task is not included in the tree, \n // so the datastore renderer will think that the task is not visible\n\n if (id && store.pull[id].$split_subtask) {\n this.refreshTask(id);\n }\n },\n isSelectedTask: function isSelectedTask(id) {\n return this.$data.tasksStore.isSelected(id);\n },\n getSelectedId: function getSelectedId() {\n return this.$data.tasksStore.getSelectedId();\n }\n };\n};\n\nfunction createFacade() {\n var res = utils.mixin({}, createDatastoreFacade());\n utils.mixin(res, createTasksFacade());\n utils.mixin(res, createLinksFacade());\n return res;\n}\n\nmodule.exports = {\n create: createFacade\n};","var utils = require(\"../../utils/utils\");\n\nvar facadeFactory = require(\"./../facades/datastore\");\n\nvar calculateScaleRange = require(\"../gantt_data_range\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nfunction initDataStores(gantt) {\n var facade = facadeFactory.create();\n utils.mixin(gantt, facade);\n var tasksStore = gantt.createDatastore({\n name: \"task\",\n type: \"treeDatastore\",\n rootId: function rootId() {\n return gantt.config.root_id;\n },\n initItem: utils.bind(_init_task, gantt),\n getConfig: function getConfig() {\n return gantt.config;\n }\n });\n var linksStore = gantt.createDatastore({\n name: \"link\",\n initItem: utils.bind(_init_link, gantt)\n });\n gantt.attachEvent(\"onDestroy\", function () {\n tasksStore.destructor();\n linksStore.destructor();\n });\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (gantt.isLinkExists(link.id) || link.id === \"predecessor_generated\") {\n // link was already added into gantt\n return true;\n }\n\n var source = gantt.getTask(link.source);\n var taskLinks = source.$source;\n\n for (var i = 0; i < taskLinks.length; i++) {\n var existingLink = gantt.getLink(taskLinks[i]);\n var sourceMatch = link.source == existingLink.source;\n var targetMatch = link.target == existingLink.target;\n var typeMatch = link.type == existingLink.type; // prevent creating duplicated links from the UI\n\n if (sourceMatch && targetMatch && typeMatch) {\n return false;\n }\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onBeforeRefreshAll\", function () {\n // GS-2170 do not recalculate indexes and dates as the event will be called later in the onStoreUpdate event\n if (tasksStore._skipTaskRecalculation) {\n return;\n }\n\n var order = tasksStore.getVisibleItems();\n\n for (var i = 0; i < order.length; i++) {\n var item = order[i];\n item.$index = i;\n item.$local_index = gantt.getTaskIndex(item.id);\n gantt.resetProjectDates(item);\n }\n });\n tasksStore.attachEvent(\"onFilterItem\", function (id, task) {\n if (gantt.config.show_tasks_outside_timescale) {\n return true;\n }\n\n var min = null,\n max = null;\n\n if (gantt.config.start_date && gantt.config.end_date) {\n if (gantt._isAllowedUnscheduledTask(task)) return true;\n min = gantt.config.start_date.valueOf();\n max = gantt.config.end_date.valueOf();\n if (+task.start_date > max || +task.end_date < +min) return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onIdChange\", function (oldId, newId) {\n gantt._update_flags(oldId, newId);\n\n var changedTask = gantt.getTask(newId);\n\n if (!tasksStore.isSilent()) {\n if (changedTask.$split_subtask || changedTask.rollup) {\n gantt.eachParent(function (parent) {\n gantt.refreshTask(parent.id);\n }, newId);\n }\n }\n });\n tasksStore.attachEvent(\"onAfterUpdate\", function (id) {\n gantt._update_parents(id);\n\n if (gantt.getState(\"batchUpdate\").batch_update) {\n return true;\n }\n\n var task = tasksStore.getItem(id);\n if (!task.$source) task.$source = [];\n\n for (var i = 0; i < task.$source.length; i++) {\n linksStore.refresh(task.$source[i]);\n }\n\n if (!task.$target) task.$target = [];\n\n for (var i = 0; i < task.$target.length; i++) {\n linksStore.refresh(task.$target[i]);\n }\n });\n tasksStore.attachEvent(\"onBeforeItemMove\", function (sid, parent, tindex) {\n // GS-125. Don't allow users to move the placeholder task\n if (isPlaceholderTask(sid, gantt, tasksStore)) {\n //eslint-disable-next-line\n console.log(\"The placeholder task cannot be moved to another position.\");\n return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onAfterItemMove\", function (sid, parent, tindex) {\n var source = gantt.getTask(sid);\n\n if (this.getNextSibling(sid) !== null) {\n source.$drop_target = this.getNextSibling(sid);\n } else if (this.getPrevSibling(sid) !== null) {\n source.$drop_target = \"next:\" + this.getPrevSibling(sid);\n } else {\n source.$drop_target = \"next:null\";\n }\n });\n tasksStore.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (action == \"delete\") {\n gantt._update_flags(id, null);\n }\n\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (gantt.config.fit_tasks && action !== \"paint\") {\n var oldState = gantt.getState();\n calculateScaleRange(gantt);\n var newState = gantt.getState(); //this._init_tasks_range();\n\n if (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n if (action == \"add\" || action == \"move\" || action == \"delete\") {\n if (gantt.$layout) {\n // GS-2170. Do not recalculate the indexes and dates of other tasks in the\n // onBeforeResize layout event, but do it later. If lightbox is opened, it will\n // trigger the refreshData, so the indexes and dates will be recalculated there\n if (this.$config.name == \"task\" && (action == \"add\" || action == \"delete\")) {\n if (this._skipTaskRecalculation != \"lightbox\") {\n this._skipTaskRecalculation = true;\n }\n }\n\n gantt.$layout.resize();\n }\n } else if (!id) {\n linksStore.refresh();\n }\n });\n linksStore.attachEvent(\"onAfterAdd\", function (id, link) {\n sync_link(link);\n });\n linksStore.attachEvent(\"onAfterUpdate\", function (id, link) {\n sync_links();\n });\n linksStore.attachEvent(\"onAfterDelete\", function (id, link) {\n sync_link_delete(link);\n });\n linksStore.attachEvent(\"onBeforeIdChange\", function (oldId, newId) {\n sync_link_delete(gantt.mixin({\n id: oldId\n }, gantt.$data.linksStore.getItem(newId)));\n sync_link(gantt.$data.linksStore.getItem(newId));\n });\n\n function checkLinkedTaskVisibility(taskId) {\n var isVisible = gantt.isTaskVisible(taskId);\n\n if (!isVisible && gantt.isTaskExists(taskId)) {\n var parent = gantt.getParent(taskId);\n\n if (gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)) {\n parent = gantt.getTask(parent);\n\n if (gantt.isSplitTask(parent)) {\n isVisible = true;\n }\n }\n }\n\n return isVisible;\n }\n\n linksStore.attachEvent(\"onFilterItem\", function (id, link) {\n if (!gantt.config.show_links) {\n return false;\n }\n\n var sourceVisible = checkLinkedTaskVisibility(link.source);\n var targetVisible = checkLinkedTaskVisibility(link.target);\n if (!(sourceVisible && targetVisible) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target))) return false;\n return gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n });\n\n (function () {\n // delete all connected links after task is deleted\n var treeHelper = require(\"../../utils/task_tree_helpers\");\n\n var deletedLinks = {};\n gantt.attachEvent(\"onBeforeTaskDelete\", function (id, item) {\n deletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n return true;\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n if (deletedLinks[id]) {\n gantt.$data.linksStore.silent(function () {\n for (var i in deletedLinks[id]) {\n if (gantt.isLinkExists(i)) {\n gantt.$data.linksStore.removeItem(i);\n }\n\n sync_link_delete(deletedLinks[id][i]);\n }\n\n deletedLinks[id] = null;\n });\n }\n });\n })();\n\n gantt.attachEvent(\"onAfterLinkDelete\", function (id, link) {\n gantt.refreshTask(link.source);\n gantt.refreshTask(link.target);\n });\n gantt.attachEvent(\"onParse\", sync_links);\n mapEvents({\n source: linksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onLinkLoading\",\n \"onBeforeAdd\": \"onBeforeLinkAdd\",\n \"onAfterAdd\": \"onAfterLinkAdd\",\n \"onBeforeUpdate\": \"onBeforeLinkUpdate\",\n \"onAfterUpdate\": \"onAfterLinkUpdate\",\n \"onBeforeDelete\": \"onBeforeLinkDelete\",\n \"onAfterDelete\": \"onAfterLinkDelete\",\n \"onIdChange\": \"onLinkIdChange\"\n }\n });\n mapEvents({\n source: tasksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onTaskLoading\",\n \"onBeforeAdd\": \"onBeforeTaskAdd\",\n \"onAfterAdd\": \"onAfterTaskAdd\",\n \"onBeforeUpdate\": \"onBeforeTaskUpdate\",\n \"onAfterUpdate\": \"onAfterTaskUpdate\",\n \"onBeforeDelete\": \"onBeforeTaskDelete\",\n \"onAfterDelete\": \"onAfterTaskDelete\",\n \"onIdChange\": \"onTaskIdChange\",\n \"onBeforeItemMove\": \"onBeforeTaskMove\",\n \"onAfterItemMove\": \"onAfterTaskMove\",\n \"onFilterItem\": \"onBeforeTaskDisplay\",\n \"onItemOpen\": \"onTaskOpened\",\n \"onItemClose\": \"onTaskClosed\",\n \"onBeforeSelect\": \"onBeforeTaskSelected\",\n \"onAfterSelect\": \"onTaskSelected\",\n \"onAfterUnselect\": \"onTaskUnselected\"\n }\n });\n gantt.$data = {\n tasksStore: tasksStore,\n linksStore: linksStore\n };\n\n function sync_link(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n sourceTask.$source = sourceTask.$source || [];\n sourceTask.$source.push(link.id);\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n targetTask.$target = targetTask.$target || [];\n targetTask.$target.push(link.id);\n }\n }\n\n function sync_link_delete(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n\n for (var i = 0; i < sourceTask.$source.length; i++) {\n if (sourceTask.$source[i] == link.id) {\n sourceTask.$source.splice(i, 1);\n break;\n }\n }\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n\n for (var i = 0; i < targetTask.$target.length; i++) {\n if (targetTask.$target[i] == link.id) {\n targetTask.$target.splice(i, 1);\n break;\n }\n }\n }\n }\n\n function sync_links() {\n var task = null;\n var tasks = gantt.$data.tasksStore.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n task = tasks[i];\n task.$source = [];\n task.$target = [];\n }\n\n var links = gantt.$data.linksStore.getItems();\n\n for (var i = 0, len = links.length; i < len; i++) {\n var link = links[i];\n sync_link(link);\n }\n }\n\n function mapEvents(conf) {\n var mapFrom = conf.source;\n var mapTo = conf.target;\n\n for (var i in conf.events) {\n (function (sourceEvent, targetEvent) {\n mapFrom.attachEvent(sourceEvent, function () {\n return mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n }, targetEvent);\n })(i, conf.events[i]);\n }\n }\n\n function _init_task(task) {\n if (!this.defined(task.id)) task.id = this.uid();\n if (task.start_date) task.start_date = gantt.date.parseDate(task.start_date, \"parse_date\");\n if (task.end_date) task.end_date = gantt.date.parseDate(task.end_date, \"parse_date\");\n var duration = null;\n\n if (task.duration || task.duration === 0) {\n task.duration = duration = task.duration * 1;\n }\n\n if (duration) {\n if (task.start_date && !task.end_date) {\n task.end_date = this.calculateEndDate(task);\n } else if (!task.start_date && task.end_date) {\n task.start_date = this.calculateEndDate({\n start_date: task.end_date,\n duration: -task.duration,\n task: task\n });\n } //task.$calculate_duration = false;\n\n }\n\n task.progress = Number(task.progress) || 0;\n\n if (this._isAllowedUnscheduledTask(task)) {\n this._set_default_task_timing(task);\n }\n\n this._init_task_timing(task);\n\n if (task.start_date && task.end_date) this.correctTaskWorkTime(task);\n task.$source = [];\n task.$target = [];\n var originalTask = this.$data.tasksStore.getItem(task.id);\n\n if (originalTask && !utils.defined(task.open)) {\n // if a task with the same id is already in the gantt and the new object doesn't specify the `open` state -\n // restore the `open` state we already have in the chart\n task.$open = originalTask.$open;\n }\n\n if (task.parent === undefined) {\n task.parent = this.config.root_id;\n }\n\n return task;\n }\n\n function _init_link(link) {\n if (!this.defined(link.id)) link.id = this.uid();\n return link;\n }\n}\n\nmodule.exports = initDataStores;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n\n/**\n * bluebird build version 3.5.4\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function (e) {\n if (\"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module) module.exports = e();else if (\"function\" == typeof define && define.amd) define([], e);else {\n var f;\n \"undefined\" != typeof window ? f = window : \"undefined\" != typeof global ? f = global : \"undefined\" != typeof self && (f = self), f.Promise = e();\n }\n}(function () {\n var define, module, exports;\n return function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof _dereq_ == \"function\" && _dereq_;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f;\n }\n\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function (e) {\n var n = t[o][1][e];\n return s(n ? n : e);\n }, l, l.exports, e, t, n, r);\n }\n\n return n[o].exports;\n }\n\n var i = typeof _dereq_ == \"function\" && _dereq_;\n\n for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }\n\n return s;\n }({\n 1: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var SomePromiseArray = Promise._SomePromiseArray;\n\n function any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n }\n\n Promise.any = function (promises) {\n return any(promises);\n };\n\n Promise.prototype.any = function () {\n return any(this);\n };\n };\n }, {}],\n 2: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var firstLineError;\n\n try {\n throw new Error();\n } catch (e) {\n firstLineError = e;\n }\n\n var schedule = _dereq_(\"./schedule\");\n\n var Queue = _dereq_(\"./queue\");\n\n var util = _dereq_(\"./util\");\n\n function Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n\n this.drainQueues = function () {\n self._drainQueues();\n };\n\n this._schedule = schedule;\n }\n\n Async.prototype.setScheduler = function (fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n };\n\n Async.prototype.hasCustomScheduler = function () {\n return this._customScheduler;\n };\n\n Async.prototype.enableTrampoline = function () {\n this._trampolineEnabled = true;\n };\n\n Async.prototype.disableTrampolineIfNecessary = function () {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n };\n\n Async.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n };\n\n Async.prototype.fatalError = function (e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) + \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n };\n\n Async.prototype.throwLater = function (fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n\n fn = function fn() {\n throw arg;\n };\n }\n\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function () {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function () {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n };\n\n function AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n\n this._queueTick();\n }\n\n if (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n } else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n setTimeout(function () {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function (promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function () {\n promise._settlePromises();\n });\n }\n };\n }\n\n function _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n }\n\n function _drainQueueStep(queue) {\n var fn = queue.shift();\n\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n }\n\n Async.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n\n this._reset();\n\n this._haveDrainedQueues = true;\n\n _drainQueue(this._lateQueue);\n };\n\n Async.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n\n this._schedule(this.drainQueues);\n }\n };\n\n Async.prototype._reset = function () {\n this._isTickUsed = false;\n };\n\n module.exports = Async;\n module.exports.firstLineError = firstLineError;\n }, {\n \"./queue\": 26,\n \"./schedule\": 29,\n \"./util\": 36\n }],\n 3: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, debug) {\n var calledBind = false;\n\n var rejectThis = function rejectThis(_, e) {\n this._reject(e);\n };\n\n var targetRejected = function targetRejected(e, context) {\n context.promiseRejectionQueued = true;\n\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n };\n\n var bindingResolved = function bindingResolved(thisArg, context) {\n if ((this._bitField & 50397184) === 0) {\n this._resolveCallback(context.target);\n }\n };\n\n var bindingRejected = function bindingRejected(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n };\n\n Promise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n\n ret._propagateFrom(this, 1);\n\n var target = this._target();\n\n ret._setBoundTo(maybePromise);\n\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n\n maybePromise._then(bindingResolved, bindingRejected, undefined, ret, context);\n\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n\n return ret;\n };\n\n Promise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & ~2097152;\n }\n };\n\n Promise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n };\n\n Promise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n };\n };\n }, {}],\n 4: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var old;\n if (typeof Promise !== \"undefined\") old = Promise;\n\n function noConflict() {\n try {\n if (Promise === bluebird) Promise = old;\n } catch (e) {}\n\n return bluebird;\n }\n\n var bluebird = _dereq_(\"./promise\")();\n\n bluebird.noConflict = noConflict;\n module.exports = bluebird;\n }, {\n \"./promise\": 22\n }],\n 5: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var cr = Object.create;\n\n if (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n }\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var isIdentifier = util.isIdentifier;\n var getMethodCaller;\n var getGetter;\n\n if (!true) {\n var makeMethodCaller = function makeMethodCaller(methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n };\n\n var makeGetter = function makeGetter(propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n };\n\n var getCompiled = function getCompiled(name, compiler, cache) {\n var ret = cache[name];\n\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n\n for (var i = 0; i < 256; ++i) {\n delete cache[keys[i]];\n }\n\n cache[\" size\"] = keys.length - 256;\n }\n }\n\n return ret;\n };\n\n getMethodCaller = function getMethodCaller(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n };\n\n getGetter = function getGetter(name) {\n return getCompiled(name, makeGetter, getterCache);\n };\n }\n\n function ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" + util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n\n return fn;\n }\n\n function caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n }\n\n Promise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);\n ;\n\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n\n if (maybeCaller !== null) {\n return this._then(maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n };\n\n function namedGetter(obj) {\n return obj[this];\n }\n\n function indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n }\n\n Promise.prototype.get = function (propertyName) {\n var isIndex = typeof propertyName === \"number\";\n var getter;\n\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n\n return this._then(getter, undefined, undefined, propertyName, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 6: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n Promise.prototype[\"break\"] = Promise.prototype.cancel = function () {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n var promise = this;\n var child = promise;\n\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n\n break;\n }\n\n var parent = promise._cancellationParent;\n\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n\n promise._setWillBeCancelled();\n\n child = promise;\n promise = parent;\n }\n }\n };\n\n Promise.prototype._branchHasCancelled = function () {\n this._branchesRemainingToCancel--;\n };\n\n Promise.prototype._enoughBranchesHaveCancelled = function () {\n return this._branchesRemainingToCancel === undefined || this._branchesRemainingToCancel <= 0;\n };\n\n Promise.prototype._cancelBy = function (canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n\n this._invokeOnCancel();\n\n return true;\n } else {\n this._branchHasCancelled();\n\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n\n return true;\n }\n }\n\n return false;\n };\n\n Promise.prototype._cancelBranched = function () {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n };\n\n Promise.prototype._cancel = function () {\n if (!this._isCancellable()) return;\n\n this._setCancelled();\n\n async.invoke(this._cancelPromises, this, undefined);\n };\n\n Promise.prototype._cancelPromises = function () {\n if (this._length() > 0) this._settlePromises();\n };\n\n Promise.prototype._unsetOnCancel = function () {\n this._onCancelField = undefined;\n };\n\n Promise.prototype._isCancellable = function () {\n return this.isPending() && !this._isCancelled();\n };\n\n Promise.prototype.isCancellable = function () {\n return this.isPending() && !this.isCancelled();\n };\n\n Promise.prototype._doInvokeOnCancel = function (onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n };\n\n Promise.prototype._invokeOnCancel = function () {\n var onCancelCallback = this._onCancel();\n\n this._unsetOnCancel();\n\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n };\n\n Promise.prototype._invokeInternalOnCancel = function () {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n\n this._unsetOnCancel();\n }\n };\n\n Promise.prototype._resultCancelled = function () {\n this.cancel();\n };\n };\n }, {\n \"./util\": 36\n }],\n 7: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var getKeys = _dereq_(\"./es5\").keys;\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function catchFilter(instances, cb, promise) {\n return function (e) {\n var boundTo = promise._boundValue();\n\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error || item != null && item.prototype instanceof Error) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n\n return tryCatch(cb).call(boundTo, e);\n }\n }\n\n return NEXT_FILTER;\n };\n }\n\n return catchFilter;\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 8: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var longStackTraces = false;\n var contextStack = [];\n\n Promise.prototype._promiseCreated = function () {};\n\n Promise.prototype._pushContext = function () {};\n\n Promise.prototype._popContext = function () {\n return null;\n };\n\n Promise._peekContext = Promise.prototype._peekContext = function () {};\n\n function Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n }\n\n Context.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n };\n\n Context.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n\n return null;\n };\n\n function createContext() {\n if (longStackTraces) return new Context();\n }\n\n function peekContext() {\n var lastIndex = contextStack.length - 1;\n\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n\n return undefined;\n }\n\n Context.CapturedTrace = null;\n Context.create = createContext;\n\n Context.deactivateLongStackTraces = function () {};\n\n Context.activateLongStackTraces = function () {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n\n Context.deactivateLongStackTraces = function () {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n\n Promise.prototype._promiseCreated = function () {\n var ctx = this._peekContext();\n\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n };\n\n return Context;\n };\n }, {}],\n 9: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, Context) {\n var getDomain = Promise._getDomain;\n var async = Promise._async;\n\n var Warning = _dereq_(\"./errors\").Warning;\n\n var util = _dereq_(\"./util\");\n\n var es5 = _dereq_(\"./es5\");\n\n var canAttachTrace = util.canAttachTrace;\n var unhandledRejectionHandled;\n var possiblyUnhandledRejection;\n var bluebirdFramePattern = /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\n var nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\n var parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\n var stackFramePattern = null;\n var formatStack = null;\n var indentStackFrames = false;\n var printWarning;\n var debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 && (true || util.env(\"BLUEBIRD_DEBUG\") || util.env(\"NODE_ENV\") === \"development\"));\n var warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 && (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n var longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 && (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n var wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 && (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\n Promise.prototype.suppressUnhandledRejections = function () {\n var target = this._target();\n\n target._bitField = target._bitField & ~1048576 | 524288;\n };\n\n Promise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n\n this._setRejectionIsUnhandled();\n\n var self = this;\n setTimeout(function () {\n self._notifyUnhandledRejection();\n }, 1);\n };\n\n Promise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\", unhandledRejectionHandled, undefined, this);\n };\n\n Promise.prototype._setReturnedNonUndefined = function () {\n this._bitField = this._bitField | 268435456;\n };\n\n Promise.prototype._returnedNonUndefined = function () {\n return (this._bitField & 268435456) !== 0;\n };\n\n Promise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n\n this._setUnhandledRejectionIsNotified();\n\n fireRejectionEvent(\"unhandledRejection\", possiblyUnhandledRejection, reason, this);\n }\n };\n\n Promise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n };\n\n Promise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & ~262144;\n };\n\n Promise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n };\n\n Promise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n };\n\n Promise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & ~1048576;\n\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n\n this._notifyUnhandledRejectionIsHandled();\n }\n };\n\n Promise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n };\n\n Promise.prototype._warn = function (message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n };\n\n Promise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n Promise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n var disableLongStackTraces = function disableLongStackTraces() {};\n\n Promise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n\n disableLongStackTraces = function disableLongStackTraces() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n };\n\n Promise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n };\n\n var fireDomEvent = function () {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(eventData, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(eventData, \"reason\", {\n value: event.reason\n });\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(domEvent, \"reason\", {\n value: event.reason\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true, event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n\n return function () {\n return false;\n };\n }();\n\n var fireGlobalEvent = function () {\n if (util.isNode) {\n return function () {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function () {\n return false;\n };\n }\n\n return function (name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n }();\n\n function generatePromiseLifecycleEventObject(name, promise) {\n return {\n promise: promise\n };\n }\n\n var eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function promiseChained(name, promise, child) {\n return {\n promise: promise,\n child: child\n };\n },\n warning: function warning(name, _warning) {\n return {\n warning: _warning\n };\n },\n unhandledRejection: function unhandledRejection(name, reason, promise) {\n return {\n reason: reason,\n promise: promise\n };\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n };\n\n var activeFireEvent = function activeFireEvent(name) {\n var globalEventFired = false;\n\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n\n try {\n domEventFired = fireDomEvent(name, eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n };\n\n Promise.config = function (opts) {\n opts = Object(opts);\n\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\"cannot enable cancellation after promises are in use\");\n }\n\n Promise.prototype._clearCancellationData = cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback = cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n _propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n\n return Promise;\n };\n\n function defaultFireEvent() {\n return false;\n }\n\n Promise.prototype._fireEvent = defaultFireEvent;\n\n Promise.prototype._execute = function (executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n };\n\n Promise.prototype._onCancel = function () {};\n\n Promise.prototype._setOnCancel = function (handler) {\n ;\n };\n\n Promise.prototype._attachCancellationCallback = function (onCancel) {\n ;\n };\n\n Promise.prototype._captureStackTrace = function () {};\n\n Promise.prototype._attachExtraTrace = function () {};\n\n Promise.prototype._dereferenceTrace = function () {};\n\n Promise.prototype._clearCancellationData = function () {};\n\n Promise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n };\n\n function cancellationExecute(executor, resolve, reject) {\n var promise = this;\n\n try {\n executor(resolve, reject, function (onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" + util.toString(onCancel));\n }\n\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n }\n\n function cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n }\n\n function cancellationOnCancel() {\n return this._onCancelField;\n }\n\n function cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n }\n\n function cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n }\n\n function cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n function bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n var _propagateFromFunction = bindingPropagateFrom;\n\n function _boundValueFunction() {\n var ret = this._boundTo;\n\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n\n return ret;\n }\n\n function longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n }\n\n function longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\", parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n }\n\n function longStackTracesDereferenceTrace() {\n this._trace = undefined;\n }\n\n function checkForgottenReturns(returnValue, promiseCreated, name, promise, parent) {\n if (returnValue === undefined && promiseCreated !== null && wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n\n var stack = cleanStack(traceLines);\n\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] + \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n\n for (var i = 0; i < traceLines.length; ++i) {\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n\n break;\n }\n }\n }\n }\n\n var msg = \"a promise was created in a \" + name + \"handler \" + handlerLine + \"but was not returned from it, \" + \"see http://goo.gl/rRqMUw\" + creatorLine;\n\n promise._warn(msg, true, promiseCreated);\n }\n }\n\n function deprecated(name, replacement) {\n var message = name + \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n }\n\n function warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n }\n\n function reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n return message + \"\\n\" + stacks.join(\"\\n\");\n }\n\n function removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 || i + 1 < stacks.length && stacks[i][0] === stacks[i + 1][0]) {\n stacks.splice(i, 1);\n i--;\n }\n }\n }\n\n function removeCommonRoots(stacks) {\n var current = stacks[0];\n\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n\n current = prev;\n }\n }\n\n function cleanStack(stack) {\n var ret = [];\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line || stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n\n ret.push(line);\n }\n }\n\n return ret;\n }\n\n function stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n\n return stack;\n }\n\n function parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0 ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n }\n\n function formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" || _typeof(console.log) === \"object\") {\n console.log(message);\n }\n }\n }\n\n function fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n }\n\n function formatNonError(obj) {\n var str;\n\n if (typeof obj === \"function\") {\n str = \"[function \" + (obj.name || \"anonymous\") + \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\" ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n } catch (e) {}\n }\n\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n\n return \"(<\" + snip(str) + \">, no stack trace)\";\n }\n\n function snip(str) {\n var maxChars = 41;\n\n if (str.length < maxChars) {\n return str;\n }\n\n return str.substr(0, maxChars - 3) + \"...\";\n }\n\n function longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n }\n\n var shouldIgnore = function shouldIgnore() {\n return false;\n };\n\n var parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\n\n function parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n }\n\n function setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function shouldIgnore(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n\n if (info) {\n if (info.fileName === firstFileName && firstIndex <= info.line && info.line <= lastIndex) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n }\n\n util.inherits(CapturedTrace, Error);\n Context.CapturedTrace = CapturedTrace;\n\n CapturedTrace.prototype.uncycle = function () {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n\n length = this._length = i;\n\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n\n cycleEdgeNode._parent.uncycle();\n\n cycleEdgeNode._length = cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n\n var currentChildLength = cycleEdgeNode._length + 1;\n\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n\n return;\n }\n }\n };\n\n CapturedTrace.prototype.attachExtraTrace = function (error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n var trace = this;\n\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n };\n\n var captureStackTrace = function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n\n var v8stackFormatter = function v8stackFormatter(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" && typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function shouldIgnore(line) {\n return bluebirdFramePattern.test(line);\n };\n\n return function (receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n\n var err = new Error();\n\n if (typeof err.stack === \"string\" && err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n\n try {\n throw new Error();\n } catch (e) {\n hasStackAfterThrow = \"stack\" in e;\n }\n\n if (!(\"stack\" in err) && hasStackAfterThrow && typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n\n try {\n throw new Error();\n } catch (e) {\n o.stack = e.stack;\n }\n\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function formatStack(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((_typeof(error) === \"object\" || typeof error === \"function\") && error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n return null;\n }([]);\n\n if (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function printWarning(message) {\n console.warn(message);\n };\n\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function printWarning(message, isSoft) {\n var color = isSoft ? \"\\x1B[33m\" : \"\\x1B[31m\";\n console.warn(color + message + \"\\x1B[0m\\n\");\n };\n } else if (!util.isNode && typeof new Error().stack === \"string\") {\n printWarning = function printWarning(message, isSoft) {\n console.warn(\"%c\" + message, isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n }\n\n var config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n };\n if (longStackTraces) Promise.longStackTraces();\n return {\n longStackTraces: function longStackTraces() {\n return config.longStackTraces;\n },\n warnings: function warnings() {\n return config.warnings;\n },\n cancellation: function cancellation() {\n return config.cancellation;\n },\n monitoring: function monitoring() {\n return config.monitoring;\n },\n propagateFromFunction: function propagateFromFunction() {\n return _propagateFromFunction;\n },\n boundValueFunction: function boundValueFunction() {\n return _boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n };\n };\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 10: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function returner() {\n return this.value;\n }\n\n function thrower() {\n throw this.reason;\n }\n\n Promise.prototype[\"return\"] = Promise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(returner, undefined, undefined, {\n value: value\n }, undefined);\n };\n\n Promise.prototype[\"throw\"] = Promise.prototype.thenThrow = function (reason) {\n return this._then(thrower, undefined, undefined, {\n reason: reason\n }, undefined);\n };\n\n Promise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(undefined, thrower, undefined, {\n reason: reason\n }, undefined);\n } else {\n var _reason = arguments[1];\n\n var handler = function handler() {\n throw _reason;\n };\n\n return this.caught(reason, handler);\n }\n };\n\n Promise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(undefined, returner, undefined, {\n value: value\n }, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n\n var handler = function handler() {\n return _value;\n };\n\n return this.caught(value, handler);\n }\n };\n };\n }, {}],\n 11: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseReduce = Promise.reduce;\n var PromiseAll = Promise.all;\n\n function promiseAllThis() {\n return PromiseAll(this);\n }\n\n function PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n }\n\n Promise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, this, undefined);\n };\n\n Promise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n };\n\n Promise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, promises, undefined);\n };\n\n Promise.mapSeries = PromiseMapSeries;\n };\n }, {}],\n 12: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var Objectfreeze = es5.freeze;\n\n var util = _dereq_(\"./util\");\n\n var inherits = util.inherits;\n var notEnumerableProp = util.notEnumerableProp;\n\n function subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\", typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n\n inherits(SubError, Error);\n return SubError;\n }\n\n var _TypeError, _RangeError;\n\n var Warning = subError(\"Warning\", \"warning\");\n var CancellationError = subError(\"CancellationError\", \"cancellation error\");\n var TimeoutError = subError(\"TimeoutError\", \"timeout error\");\n var AggregateError = subError(\"AggregateError\", \"aggregate error\");\n\n try {\n _TypeError = TypeError;\n _RangeError = RangeError;\n } catch (e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n }\n\n var methods = (\"join pop push shift unshift slice filter forEach some \" + \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\n for (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n }\n\n es5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n });\n AggregateError.prototype[\"isOperational\"] = true;\n var level = 0;\n\n AggregateError.prototype.toString = function () {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n\n level--;\n return ret;\n };\n\n function OperationalError(message) {\n if (!(this instanceof OperationalError)) return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n inherits(OperationalError, Error);\n var errorTypes = Error[\"__BluebirdErrorTypes__\"];\n\n if (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n }\n\n module.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 13: [function (_dereq_, module, exports) {\n var isES5 = function () {\n \"use strict\";\n\n return this === undefined;\n }();\n\n if (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n } else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function ObjectKeys(o) {\n var ret = [];\n\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n\n return ret;\n };\n\n var ObjectGetDescriptor = function ObjectGetDescriptor(o, key) {\n return {\n value: o[key]\n };\n };\n\n var ObjectDefineProperty = function ObjectDefineProperty(o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function ObjectFreeze(obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function ObjectGetPrototypeOf(obj) {\n try {\n return Object(obj).constructor.prototype;\n } catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function ArrayIsArray(obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n } catch (e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable() {\n return true;\n }\n };\n }\n }, {}],\n 14: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseMap = Promise.map;\n\n Promise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n };\n\n Promise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n };\n };\n }, {}],\n 15: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, tryConvertToPromise, NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var CancellationError = Promise.CancellationError;\n var errorObj = util.errorObj;\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n function PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n }\n\n PassThroughHandlerContext.prototype.isFinallyHandler = function () {\n return this.type === 0;\n };\n\n function FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n }\n\n FinallyHandlerCancelReaction.prototype._resultCancelled = function () {\n checkCancel(this.finallyHandler);\n };\n\n function checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n\n ctx.cancelPromise = null;\n return true;\n }\n\n return false;\n }\n\n function succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n }\n\n function fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n }\n\n function finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler() ? handler.call(promise._boundValue()) : handler.call(promise._boundValue(), reasonOrValue);\n\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n\n var maybePromise = tryConvertToPromise(ret, promise);\n\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(new FinallyHandlerCancelReaction(this));\n }\n }\n\n return maybePromise._then(succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n }\n\n Promise.prototype._passThrough = function (handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success, fail, undefined, new PassThroughHandlerContext(this, type, handler), undefined);\n };\n\n Promise.prototype.lastly = Promise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler, 0, finallyHandler, finallyHandler);\n };\n\n Promise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n };\n\n Promise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n\n if (len === 1) {\n return this._passThrough(handlerOrPredicate, 1, undefined, finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\"tapCatch statement predicate: \" + \"expecting an object but got \" + util.classString(item)));\n }\n }\n\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this), 1, undefined, finallyHandler);\n }\n };\n\n return PassThroughHandlerContext;\n };\n }, {\n \"./catch_filter\": 7,\n \"./util\": 36\n }],\n 16: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug) {\n var errors = _dereq_(\"./errors\");\n\n var TypeError = errors.TypeError;\n\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var yieldHandlers = [];\n\n function promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n\n var result = tryCatch(yieldHandlers[i])(value);\n\n traceParent._popContext();\n\n if (result === errorObj) {\n traceParent._pushContext();\n\n var ret = Promise.reject(errorObj.e);\n\n traceParent._popContext();\n\n return ret;\n }\n\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n\n return null;\n }\n\n function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n\n this._promise = internal.lastly(function () {\n return _finallyPromise;\n });\n\n internal._captureStackTrace();\n\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n }\n\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\" ? [yieldHandler].concat(yieldHandlers) : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n }\n\n util.inherits(PromiseSpawn, Proxyable);\n\n PromiseSpawn.prototype._isResolved = function () {\n return this._promise === null;\n };\n\n PromiseSpawn.prototype._cleanup = function () {\n this._promise = this._generator = null;\n\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n\n this._finallyPromise = null;\n }\n };\n\n PromiseSpawn.prototype._promiseCancelled = function () {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n var result;\n\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"return\"]).call(this._generator, undefined);\n\n this._promise._popContext();\n }\n\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseFulfilled = function (value) {\n this._yieldedPromise = null;\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator.next).call(this._generator, value);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseRejected = function (reason) {\n this._yieldedPromise = null;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._resultCancelled = function () {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n };\n\n PromiseSpawn.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver = this._generatorFunction = undefined;\n\n this._promiseFulfilled(undefined);\n };\n\n PromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n\n if (result === errorObj) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n\n if (result.done === true) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n\n if (!(maybePromise instanceof Promise)) {\n maybePromise = promiseFromYieldHandler(maybePromise, this._yieldHandlers, this._promise);\n\n if (maybePromise === null) {\n this._promiseRejected(new TypeError(\"A value %s was yielded that could not be treated as a promise\\n\\n See http://goo.gl/MqrFmX\\n\\n\".replace(\"%s\", String(value)) + \"From coroutine:\\n\" + this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")));\n\n return;\n }\n }\n\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n this._yieldedPromise = maybePromise;\n\n maybePromise._proxy(this, null);\n } else if ((bitField & 33554432) !== 0) {\n Promise._async.invoke(this._promiseFulfilled, this, maybePromise._value());\n } else if ((bitField & 16777216) !== 0) {\n Promise._async.invoke(this._promiseRejected, this, maybePromise._reason());\n } else {\n this._promiseCancelled();\n }\n }\n };\n\n Promise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n\n spawn._promiseFulfilled(undefined);\n\n return ret;\n };\n };\n\n Promise.coroutine.addYieldHandler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n yieldHandlers.push(fn);\n };\n\n Promise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n\n spawn._run(Promise.spawn);\n\n return ret;\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 17: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var reject;\n\n if (!true) {\n if (canEvaluate) {\n var thenCallback = function thenCallback(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function promiseSetter(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function generateHolderClass(total) {\n var props = new Array(total);\n\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i + 1);\n }\n\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode = \"var promise;\\n\" + props.map(function (prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n code = code.replace(/\\[TheName\\]/g, name).replace(/\\[TheTotal\\]/g, total).replace(/\\[ThePassedArguments\\]/g, passedArguments).replace(/\\[TheProperties\\]/g, assignment).replace(/\\[CancellationCode\\]/g, cancellationCode);\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)(tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function reject(reason) {\n this._reject(reason);\n };\n }\n }\n\n Promise.join = function () {\n var last = arguments.length - 1;\n var fn;\n\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n maybePromise._then(callbacks[i], reject, undefined, ret, holder);\n\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if ((bitField & 33554432) !== 0) {\n callbacks[i].call(ret, maybePromise._value(), holder);\n } else if ((bitField & 16777216) !== 0) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n\n ret._setAsyncGuaranteed();\n\n ret._setOnCancel(holder);\n }\n\n return ret;\n }\n }\n }\n\n var args = [].slice.call(arguments);\n ;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 18: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n function MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n\n this._promise._captureStackTrace();\n\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL ? new Array(this.length()) : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n }\n\n util.inherits(MappingPromiseArray, PromiseArray);\n\n MappingPromiseArray.prototype._asyncInit = function () {\n this._init$(undefined, -2);\n };\n\n MappingPromiseArray.prototype._init = function () {};\n\n MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = index * -1 - 1;\n values[index] = value;\n\n if (limit >= 1) {\n this._inFlight--;\n\n this._drainQueue();\n\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n\n this._queue.push(index);\n\n return false;\n }\n\n if (preservedValues !== null) preservedValues[index] = value;\n var promise = this._promise;\n var callback = this._callback;\n\n var receiver = promise._boundValue();\n\n promise._pushContext();\n\n var ret = tryCatch(callback).call(receiver, value, index, length);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, preservedValues !== null ? \"Promise.filter\" : \"Promise.map\", promise);\n\n if (ret === errorObj) {\n this._reject(ret.e);\n\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n\n maybePromise._proxy(this, (index + 1) * -1);\n\n return false;\n } else if ((bitField & 33554432) !== 0) {\n ret = maybePromise._value();\n } else if ((bitField & 16777216) !== 0) {\n this._reject(maybePromise._reason());\n\n return true;\n } else {\n this._cancel();\n\n return true;\n }\n }\n\n values[index] = ret;\n }\n\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n\n return true;\n }\n\n return false;\n };\n\n MappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n\n this._promiseFulfilled(values[index], index);\n }\n };\n\n MappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n\n ret.length = j;\n\n this._resolve(ret);\n };\n\n MappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n };\n\n function map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n\n if (options !== undefined) {\n if (_typeof(options) === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(new TypeError(\"'concurrency' must be a number but it is \" + util.classString(options.concurrency)));\n }\n\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\"options argument must be an object but it is \" + util.classString(options)));\n }\n }\n\n limit = typeof limit === \"number\" && isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n }\n\n Promise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n };\n\n Promise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n };\n };\n }, {\n \"./util\": 36\n }],\n 19: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n Promise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return function () {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value = tryCatch(fn).apply(this, arguments);\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.method\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n };\n\n Promise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value;\n\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.try\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n\n Promise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n };\n };\n }, {\n \"./util\": 36\n }],\n 20: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var maybeWrapAsError = util.maybeWrapAsError;\n\n var errors = _dereq_(\"./errors\");\n\n var OperationalError = errors.OperationalError;\n\n var es5 = _dereq_(\"./es5\");\n\n function isUntypedError(obj) {\n return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype;\n }\n\n var rErrorKey = /^(?:name|message|stack|cause)$/;\n\n function wrapAsOperationalError(obj) {\n var ret;\n\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n\n return ret;\n }\n\n util.markAsOriginatingFromRejection(obj);\n return obj;\n }\n\n function nodebackForPromise(promise, multiArgs) {\n return function (err, value) {\n if (promise === null) return;\n\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n\n promise._attachExtraTrace(wrapped);\n\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);\n ;\n\n promise._fulfill(args);\n }\n\n promise = null;\n };\n }\n\n module.exports = nodebackForPromise;\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 21: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var async = Promise._async;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret = tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function successAdapter(val, nodeback) {\n var promise = this;\n\n var receiver = promise._boundValue();\n\n var ret = val === undefined ? tryCatch(nodeback).call(receiver, null) : tryCatch(nodeback).call(receiver, null, val);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function errorAdapter(reason, nodeback) {\n var promise = this;\n\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n\n this._then(adapter, errorAdapter, undefined, this, nodeback);\n }\n\n return this;\n };\n };\n }, {\n \"./util\": 36\n }],\n 22: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function () {\n var makeSelfResolutionError = function makeSelfResolutionError() {\n return new TypeError(\"circular promise resolution chain\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var reflectHandler = function reflectHandler() {\n return new Promise.PromiseInspection(this._target());\n };\n\n var apiRejection = function apiRejection(msg) {\n return Promise.reject(new TypeError(msg));\n };\n\n function Proxyable() {}\n\n var UNDEFINED_BINDING = {};\n\n var util = _dereq_(\"./util\");\n\n var getDomain;\n\n if (util.isNode) {\n getDomain = function getDomain() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n } else {\n getDomain = function getDomain() {\n return null;\n };\n }\n\n util.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\n var es5 = _dereq_(\"./es5\");\n\n var Async = _dereq_(\"./async\");\n\n var async = new Async();\n es5.defineProperty(Promise, \"_async\", {\n value: async\n });\n\n var errors = _dereq_(\"./errors\");\n\n var TypeError = Promise.TypeError = errors.TypeError;\n Promise.RangeError = errors.RangeError;\n var CancellationError = Promise.CancellationError = errors.CancellationError;\n Promise.TimeoutError = errors.TimeoutError;\n Promise.OperationalError = errors.OperationalError;\n Promise.RejectionError = errors.OperationalError;\n Promise.AggregateError = errors.AggregateError;\n\n var INTERNAL = function INTERNAL() {};\n\n var APPLY = {};\n var NEXT_FILTER = {};\n\n var tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\n\n var PromiseArray = _dereq_(\"./promise_array\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable);\n\n var Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\n\n\n var createContext = Context.create;\n\n var debug = _dereq_(\"./debuggability\")(Promise, Context);\n\n var CapturedTrace = debug.CapturedTrace;\n\n var PassThroughHandlerContext = _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n\n function check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n }\n\n function Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._resolveFromExecutor(executor);\n\n this._promiseCreated();\n\n this._fireEvent(\"promiseCreated\", this);\n }\n\n Promise.prototype.toString = function () {\n return \"[object Promise]\";\n };\n\n Promise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" + \"expecting an object but got \" + util.classString(item));\n }\n }\n\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n\n return this.then(undefined, fn);\n };\n\n Promise.prototype.reflect = function () {\n return this._then(reflectHandler, reflectHandler, undefined, this, undefined);\n };\n\n Promise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 && typeof didFulfill !== \"function\" && typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" + util.classString(didFulfill);\n\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n\n this._warn(msg);\n }\n\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n };\n\n Promise.prototype.done = function (didFulfill, didReject) {\n var promise = this._then(didFulfill, didReject, undefined, undefined, undefined);\n\n promise._setIsFinal();\n };\n\n Promise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n };\n\n Promise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n\n return ret;\n };\n\n Promise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n\n return new PromiseArray(this).promise();\n };\n\n Promise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n };\n\n Promise.getNewLibraryCopy = module.exports;\n\n Promise.is = function (val) {\n return val instanceof Promise;\n };\n\n Promise.fromNode = Promise.fromCallback = function (fn) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n };\n\n Promise.all = function (promises) {\n return new PromiseArray(promises).promise();\n };\n\n Promise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._setFulfilled();\n\n ret._rejectionHandler0 = obj;\n }\n\n return ret;\n };\n\n Promise.resolve = Promise.fulfilled = Promise.cast;\n\n Promise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._rejectCallback(reason, true);\n\n return ret;\n };\n\n Promise.setScheduler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return async.setScheduler(fn);\n };\n\n Promise.prototype._then = function (didFulfill, didReject, _, receiver, internalData) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n\n var target = this._target();\n\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n\n promise._captureStackTrace();\n\n if (receiver === undefined && (this._bitField & 2097152) !== 0) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n\n if (!((bitField & 50397184) === 0)) {\n var handler,\n value,\n settler = target._settlePromiseCtx;\n\n if ((bitField & 33554432) !== 0) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if ((bitField & 16777216) !== 0) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n\n target._attachExtraTrace(value);\n\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler : typeof handler === \"function\" && util.domainBind(domain, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n };\n\n Promise.prototype._length = function () {\n return this._bitField & 65535;\n };\n\n Promise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n };\n\n Promise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n };\n\n Promise.prototype._setLength = function (len) {\n this._bitField = this._bitField & -65536 | len & 65535;\n };\n\n Promise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n\n this._fireEvent(\"promiseFulfilled\", this);\n };\n\n Promise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n\n this._fireEvent(\"promiseRejected\", this);\n };\n\n Promise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n\n this._fireEvent(\"promiseResolved\", this);\n };\n\n Promise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n };\n\n Promise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n };\n\n Promise.prototype._unsetCancelled = function () {\n this._bitField = this._bitField & ~65536;\n };\n\n Promise.prototype._setCancelled = function () {\n this._bitField = this._bitField | 65536;\n\n this._fireEvent(\"promiseCancelled\", this);\n };\n\n Promise.prototype._setWillBeCancelled = function () {\n this._bitField = this._bitField | 8388608;\n };\n\n Promise.prototype._setAsyncGuaranteed = function () {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n };\n\n Promise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[index * 4 - 4 + 3];\n\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n\n return ret;\n };\n\n Promise.prototype._promiseAt = function (index) {\n return this[index * 4 - 4 + 2];\n };\n\n Promise.prototype._fulfillmentHandlerAt = function (index) {\n return this[index * 4 - 4 + 0];\n };\n\n Promise.prototype._rejectionHandlerAt = function (index) {\n return this[index * 4 - 4 + 1];\n };\n\n Promise.prototype._boundValue = function () {};\n\n Promise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n\n var receiver = follower._receiverAt(0);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n\n var reject = follower._rejectionHandlerAt(index);\n\n var promise = follower._promiseAt(index);\n\n var receiver = follower._receiverAt(index);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._addCallbacks = function (fulfill, reject, promise, receiver, domain) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n\n if (typeof fulfill === \"function\") {\n this[base + 0] = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this[base + 1] = domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n\n this._setLength(index + 1);\n\n return index;\n };\n\n Promise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n };\n\n Promise.prototype._resolveCallback = function (value, shouldBind) {\n if ((this._bitField & 117506048) !== 0) return;\n if (value === this) return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n\n return;\n }\n\n var bitField = promise._bitField;\n\n if ((bitField & 50397184) === 0) {\n var len = this._length();\n\n if (len > 0) promise._migrateCallback0(this);\n\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n\n this._setFollowing();\n\n this._setLength(0);\n\n this._setFollowee(promise);\n } else if ((bitField & 33554432) !== 0) {\n this._fulfill(promise._value());\n } else if ((bitField & 16777216) !== 0) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n this._reject(reason);\n }\n };\n\n Promise.prototype._rejectCallback = function (reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" + util.classString(reason);\n\n this._warn(message, true);\n }\n\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n\n this._reject(reason);\n };\n\n Promise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n\n this._captureStackTrace();\n\n this._pushContext();\n\n var synchronous = true;\n\n var r = this._execute(executor, function (value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n\n synchronous = false;\n\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n };\n\n Promise.prototype._settlePromiseFromHandler = function (handler, receiver, value, promise) {\n var bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n promise._pushContext();\n\n var x;\n\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" + util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n\n var promiseCreated = promise._popContext();\n\n bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n\n promise._resolveCallback(x);\n }\n };\n\n Promise.prototype._target = function () {\n var ret = this;\n\n while (ret._isFollowing()) {\n ret = ret._followee();\n }\n\n return ret;\n };\n\n Promise.prototype._followee = function () {\n return this._rejectionHandler0;\n };\n\n Promise.prototype._setFollowee = function (promise) {\n this._rejectionHandler0 = promise;\n };\n\n Promise.prototype._settlePromise = function (promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = (bitField & 134217728) !== 0;\n\n if ((bitField & 65536) !== 0) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext && receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if ((bitField & 33554432) !== 0) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n if ((bitField & 33554432) !== 0) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n };\n\n Promise.prototype._settlePromiseLateCancellationObserver = function (ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n };\n\n Promise.prototype._settlePromiseCtx = function (ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n };\n\n Promise.prototype._settlePromise0 = function (handler, value, bitField) {\n var promise = this._promise0;\n\n var receiver = this._receiverAt(0);\n\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._settlePromise(promise, handler, receiver, value);\n };\n\n Promise.prototype._clearCallbackDataAtIndex = function (index) {\n var base = index * 4 - 4;\n this[base + 2] = this[base + 3] = this[base + 0] = this[base + 1] = undefined;\n };\n\n Promise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n if (value === this) {\n var err = makeSelfResolutionError();\n\n this._attachExtraTrace(err);\n\n return this._reject(err);\n }\n\n this._setFulfilled();\n\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if ((bitField & 134217728) !== 0) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n\n this._dereferenceTrace();\n }\n };\n\n Promise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n this._setRejected();\n\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n };\n\n Promise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, value);\n }\n };\n\n Promise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, reason);\n }\n };\n\n Promise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = bitField & 65535;\n\n if (len > 0) {\n if ((bitField & 16842752) !== 0) {\n var reason = this._fulfillmentHandler0;\n\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n\n this._fulfillPromises(len, value);\n }\n\n this._setLength(0);\n }\n\n this._clearCancellationData();\n };\n\n Promise.prototype._settledValue = function () {\n var bitField = this._bitField;\n\n if ((bitField & 33554432) !== 0) {\n return this._rejectionHandler0;\n } else if ((bitField & 16777216) !== 0) {\n return this._fulfillmentHandler0;\n }\n };\n\n function deferResolve(v) {\n this.promise._resolveCallback(v);\n }\n\n function deferReject(v) {\n this.promise._rejectCallback(v, false);\n }\n\n Promise.defer = Promise.pending = function () {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n };\n\n util.notEnumerableProp(Promise, \"_makeSelfResolutionError\", makeSelfResolutionError);\n\n _dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug);\n\n _dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n\n _dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n\n _dereq_(\"./direct_resolve\")(Promise);\n\n _dereq_(\"./synchronous_inspection\")(Promise);\n\n _dereq_(\"./join\")(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\n\n Promise.Promise = Promise;\n Promise.version = \"3.5.4\";\n\n _dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./call_get.js')(Promise);\n\n _dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n\n _dereq_('./timers.js')(Promise, INTERNAL, debug);\n\n _dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n\n _dereq_('./nodeify.js')(Promise);\n\n _dereq_('./promisify.js')(Promise, INTERNAL);\n\n _dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n\n _dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n\n _dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./settle.js')(Promise, PromiseArray, debug);\n\n _dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n\n _dereq_('./filter.js')(Promise, INTERNAL);\n\n _dereq_('./each.js')(Promise, INTERNAL);\n\n _dereq_('./any.js')(Promise);\n\n util.toFastProperties(Promise);\n util.toFastProperties(Promise.prototype);\n\n function fillTypes(value) {\n var p = new Promise(INTERNAL);\n p._fulfillmentHandler0 = value;\n p._rejectionHandler0 = value;\n p._promise0 = value;\n p._receiver0 = value;\n } // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n\n\n fillTypes({\n a: 1\n });\n fillTypes({\n b: 2\n });\n fillTypes({\n c: 3\n });\n fillTypes(1);\n fillTypes(function () {});\n fillTypes(undefined);\n fillTypes(false);\n fillTypes(new Promise(INTERNAL));\n debug.setBounds(Async.firstLineError, util.lastLineError);\n return Promise;\n };\n }, {\n \"./any.js\": 1,\n \"./async\": 2,\n \"./bind\": 3,\n \"./call_get.js\": 5,\n \"./cancel\": 6,\n \"./catch_filter\": 7,\n \"./context\": 8,\n \"./debuggability\": 9,\n \"./direct_resolve\": 10,\n \"./each.js\": 11,\n \"./errors\": 12,\n \"./es5\": 13,\n \"./filter.js\": 14,\n \"./finally\": 15,\n \"./generators.js\": 16,\n \"./join\": 17,\n \"./map.js\": 18,\n \"./method\": 19,\n \"./nodeback\": 20,\n \"./nodeify.js\": 21,\n \"./promise_array\": 23,\n \"./promisify.js\": 24,\n \"./props.js\": 25,\n \"./race.js\": 27,\n \"./reduce.js\": 28,\n \"./settle.js\": 30,\n \"./some.js\": 31,\n \"./synchronous_inspection\": 32,\n \"./thenables\": 33,\n \"./timers.js\": 34,\n \"./using.js\": 35,\n \"./util\": 36\n }],\n 23: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable) {\n var util = _dereq_(\"./util\");\n\n var isArray = util.isArray;\n\n function toResolutionValue(val) {\n switch (val) {\n case -2:\n return [];\n\n case -3:\n return {};\n\n case -6:\n return new Map();\n }\n }\n\n function PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n\n promise._setOnCancel(this);\n\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n\n this._init(undefined, -2);\n }\n\n util.inherits(PromiseArray, Proxyable);\n\n PromiseArray.prototype.length = function () {\n return this._length;\n };\n\n PromiseArray.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if ((bitField & 50397184) === 0) {\n this._promise._setAsyncGuaranteed();\n\n return values._then(init, this._reject, undefined, this, resolveValueIfEmpty);\n } else if ((bitField & 33554432) !== 0) {\n values = values._value();\n } else if ((bitField & 16777216) !== 0) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n\n values = util.asArray(values);\n\n if (values === null) {\n var err = apiRejection(\"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n\n this._promise._rejectCallback(err, false);\n\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n } else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n\n return;\n }\n\n this._iterate(values);\n };\n\n PromiseArray.prototype._iterate = function (values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if ((bitField & 50397184) === 0) {\n maybePromise._proxy(this, i);\n\n this._values[i] = maybePromise;\n } else if ((bitField & 33554432) !== 0) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if ((bitField & 16777216) !== 0) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n\n if (!isResolved) result._setAsyncGuaranteed();\n };\n\n PromiseArray.prototype._isResolved = function () {\n return this._values === null;\n };\n\n PromiseArray.prototype._resolve = function (value) {\n this._values = null;\n\n this._promise._fulfill(value);\n };\n\n PromiseArray.prototype._cancel = function () {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n\n this._promise._cancel();\n };\n\n PromiseArray.prototype._reject = function (reason) {\n this._values = null;\n\n this._promise._rejectCallback(reason, false);\n };\n\n PromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n PromiseArray.prototype._promiseCancelled = function () {\n this._cancel();\n\n return true;\n };\n\n PromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n\n this._reject(reason);\n\n return true;\n };\n\n PromiseArray.prototype._resultCancelled = function () {\n if (this._isResolved()) return;\n var values = this._values;\n\n this._cancel();\n\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n };\n\n PromiseArray.prototype.shouldCopyValues = function () {\n return true;\n };\n\n PromiseArray.prototype.getActualLength = function (len) {\n return len;\n };\n\n return PromiseArray;\n };\n }, {\n \"./util\": 36\n }],\n 24: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var THIS = {};\n\n var util = _dereq_(\"./util\");\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var withAppended = util.withAppended;\n var maybeWrapAsError = util.maybeWrapAsError;\n var canEvaluate = util.canEvaluate;\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var defaultSuffix = \"Async\";\n var defaultPromisified = {\n __isPromisified__: true\n };\n var noCopyProps = [\"arity\", \"length\", \"name\", \"arguments\", \"caller\", \"callee\", \"prototype\", \"__isPromisified__\"];\n var noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\n var defaultFilter = function defaultFilter(name) {\n return util.isIdentifier(name) && name.charAt(0) !== \"_\" && name !== \"constructor\";\n };\n\n function propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n }\n\n function isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n } catch (e) {\n return false;\n }\n }\n\n function hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix, defaultPromisified);\n return val ? isPromisified(val) : false;\n }\n\n function checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\n\\n See http://goo.gl/MqrFmX\\n\".replace(\"%s\", suffix));\n }\n }\n }\n }\n }\n\n function promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter ? true : defaultFilter(key, value, obj);\n\n if (typeof value === \"function\" && !isPromisified(value) && !hasPromisified(obj, key, suffix) && filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n }\n\n var escapeIdentRegex = function escapeIdentRegex(str) {\n return str.replace(/([$])/, \"\\\\$\");\n };\n\n var makeNodePromisifiedEval;\n\n if (!true) {\n var switchCaseArgumentOrder = function switchCaseArgumentOrder(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n\n for (var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n\n for (var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n\n return ret;\n };\n\n var argumentSequence = function argumentSequence(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n };\n\n var parameterDeclaration = function parameterDeclaration(parameterCount) {\n return util.filledRange(Math.max(parameterCount, 3), \"_arg\", \"\");\n };\n\n var parameterCount = function parameterCount(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n\n return 0;\n };\n\n makeNodePromisifiedEval = function makeNodePromisifiedEval(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined ? \"ret = callback({{args}}, nodeback); break;\\n\" : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] + \":\" + generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", shouldProxyThis ? \"ret = callback.apply(this, args);\\n\" : \"ret = callback.apply(receiver, args);\\n\");\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\" ? \"this != null ? this['\" + callback + \"'] : fn\" : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase()).replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\", \"fn\", \"receiver\", \"withAppended\", \"maybeWrapAsError\", \"nodebackForPromise\", \"tryCatch\", \"errorObj\", \"notEnumerableProp\", \"INTERNAL\", body)(Promise, fn, receiver, withAppended, maybeWrapAsError, nodebackForPromise, util.tryCatch, util.errorObj, util.notEnumerableProp, INTERNAL);\n };\n }\n\n function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = function () {\n return this;\n }();\n\n var method = callback;\n\n if (typeof method === \"string\") {\n callback = fn;\n }\n\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n\n var cb = typeof method === \"string\" && this !== defaultThis ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch (e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n }\n\n var makeNodePromisified = canEvaluate ? makeNodePromisifiedEval : makeNodePromisifiedClosure;\n\n function promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods = promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i += 2) {\n var key = methods[i];\n var fn = methods[i + 1];\n var promisifiedKey = key + suffix;\n\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] = makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function () {\n return makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n\n util.toFastProperties(obj);\n return obj;\n }\n\n function promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined, callback, null, multiArgs);\n }\n\n Promise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n if (isPromisified(fn)) {\n return fn;\n }\n\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n };\n\n Promise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && _typeof(target) !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var keys = util.inheritedDataKeys(target);\n\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n\n if (keys[i] !== \"constructor\" && util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier, multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n };\n };\n }, {\n \"./errors\": 12,\n \"./nodeback\": 20,\n \"./util\": 36\n }],\n 25: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var isObject = util.isObject;\n\n var es5 = _dereq_(\"./es5\");\n\n var Es6Map;\n if (typeof Map === \"function\") Es6Map = Map;\n\n var mapToEntries = function () {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n }();\n\n var entriesToMap = function entriesToMap(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n\n return ret;\n };\n\n function PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n\n this.constructor$(entries);\n this._isMap = isMap;\n\n this._init$(undefined, isMap ? -6 : -3);\n }\n\n util.inherits(PropertiesPromiseArray, PromiseArray);\n\n PropertiesPromiseArray.prototype._init = function () {};\n\n PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n var val;\n\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n\n this._resolve(val);\n\n return true;\n }\n\n return false;\n };\n\n PropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n PropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n };\n\n function props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\n\\n See http://goo.gl/MqrFmX\\n\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n\n return ret;\n }\n\n Promise.prototype.props = function () {\n return props(this);\n };\n\n Promise.props = function (promises) {\n return props(promises);\n };\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 26: [function (_dereq_, module, exports) {\n \"use strict\";\n\n function arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n }\n\n function Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n }\n\n Queue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n };\n\n Queue.prototype._pushOne = function (arg) {\n var length = this.length();\n\n this._checkCapacity(length + 1);\n\n var i = this._front + length & this._capacity - 1;\n this[i] = arg;\n this._length = length + 1;\n };\n\n Queue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n\n this._pushOne(receiver);\n\n this._pushOne(arg);\n\n return;\n }\n\n var j = this._front + length - 3;\n\n this._checkCapacity(length);\n\n var wrapMask = this._capacity - 1;\n this[j + 0 & wrapMask] = fn;\n this[j + 1 & wrapMask] = receiver;\n this[j + 2 & wrapMask] = arg;\n this._length = length;\n };\n\n Queue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n this[front] = undefined;\n this._front = front + 1 & this._capacity - 1;\n this._length--;\n return ret;\n };\n\n Queue.prototype.length = function () {\n return this._length;\n };\n\n Queue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n };\n\n Queue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = front + length & oldCapacity - 1;\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n };\n\n module.exports = Queue;\n }, {}],\n 27: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var raceLater = function raceLater(promise) {\n return promise.then(function (array) {\n return race(array, promise);\n });\n };\n\n function race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null) return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n\n return ret;\n }\n\n Promise.race = function (promises) {\n return race(promises, undefined);\n };\n\n Promise.prototype.race = function () {\n return race(this, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 28: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n function ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n\n initialValue._attachCancellationCallback(this);\n }\n\n this._initialValue = initialValue;\n this._currentCancellable = null;\n\n if (_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n\n this._promise._captureStackTrace();\n\n this._init$(undefined, -5);\n }\n\n util.inherits(ReductionPromiseArray, PromiseArray);\n\n ReductionPromiseArray.prototype._gotAccum = function (accum) {\n if (this._eachValues !== undefined && this._eachValues !== null && accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n };\n\n ReductionPromiseArray.prototype._eachComplete = function (value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n\n return this._eachValues;\n };\n\n ReductionPromiseArray.prototype._init = function () {};\n\n ReductionPromiseArray.prototype._resolveEmptyArray = function () {\n this._resolve(this._eachValues !== undefined ? this._eachValues : this._initialValue);\n };\n\n ReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n ReductionPromiseArray.prototype._resolve = function (value) {\n this._promise._resolveCallback(value);\n\n this._values = null;\n };\n\n ReductionPromiseArray.prototype._resultCancelled = function (sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n\n this._resultCancelled$();\n\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n };\n\n ReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n\n value._then(completed, completed, undefined, value, this);\n };\n\n Promise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n };\n\n Promise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n };\n\n function completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n }\n\n function reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n }\n\n function gotAccum(accum) {\n this.accum = accum;\n\n this.array._gotAccum(accum);\n\n var value = tryConvertToPromise(this.value, this.array._promise);\n\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n }\n\n function gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n\n promise._pushContext();\n\n var ret;\n\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(), this.accum, value, this.index, this.length);\n }\n\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\", promise);\n return ret;\n }\n };\n }, {\n \"./util\": 36\n }],\n 29: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var schedule;\n\n var noAsyncScheduler = function noAsyncScheduler() {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var NativePromise = util.getNativePromise();\n\n if (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode ? function (fn) {\n GlobalSetImmediate.call(global, fn);\n } : function (fn) {\n ProcessNextTick.call(process, fn);\n };\n } else if (typeof NativePromise === \"function\" && typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n\n schedule = function schedule(fn) {\n nativePromise.then(fn);\n };\n } else if (typeof MutationObserver !== \"undefined\" && !(typeof window !== \"undefined\" && window.navigator && (window.navigator.standalone || window.cordova))) {\n schedule = function () {\n var div = document.createElement(\"div\");\n var opts = {\n attributes: true\n };\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function () {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function scheduleToggle() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function () {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n }();\n } else if (typeof setImmediate !== \"undefined\") {\n schedule = function schedule(fn) {\n setImmediate(fn);\n };\n } else if (typeof setTimeout !== \"undefined\") {\n schedule = function schedule(fn) {\n setTimeout(fn, 0);\n };\n } else {\n schedule = noAsyncScheduler;\n }\n\n module.exports = schedule;\n }, {\n \"./util\": 36\n }],\n 30: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, debug) {\n var PromiseInspection = Promise.PromiseInspection;\n\n var util = _dereq_(\"./util\");\n\n function SettledPromiseArray(values) {\n this.constructor$(values);\n }\n\n util.inherits(SettledPromiseArray, PromiseArray);\n\n SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n };\n\n SettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n };\n\n Promise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n };\n\n Promise.prototype.settle = function () {\n return Promise.settle(this);\n };\n };\n }, {\n \"./util\": 36\n }],\n 31: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var RangeError = _dereq_(\"./errors\").RangeError;\n\n var AggregateError = _dereq_(\"./errors\").AggregateError;\n\n var isArray = util.isArray;\n var CANCELLATION = {};\n\n function SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n }\n\n util.inherits(SomePromiseArray, PromiseArray);\n\n SomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n\n if (this._howMany === 0) {\n this._resolve([]);\n\n return;\n }\n\n this._init$(undefined, -5);\n\n var isArrayResolved = isArray(this._values);\n\n if (!this._isResolved() && isArrayResolved && this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n };\n\n SomePromiseArray.prototype.init = function () {\n this._initialized = true;\n\n this._init();\n };\n\n SomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n };\n\n SomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n };\n\n SomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n };\n\n SomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n\n this._addRejected(CANCELLATION);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._checkOutcome = function () {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n };\n\n SomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n };\n\n SomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n };\n\n SomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n };\n\n SomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n };\n\n SomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" + this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n };\n\n SomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n };\n\n function some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n }\n\n Promise.some = function (promises, howMany) {\n return some(promises, howMany);\n };\n\n Promise.prototype.some = function (howMany) {\n return some(this, howMany);\n };\n\n Promise._SomePromiseArray = SomePromiseArray;\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 32: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed() ? promise._settledValue() : undefined;\n } else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n }\n\n PromiseInspection.prototype._settledValue = function () {\n return this._settledValueField;\n };\n\n var value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var reason = PromiseInspection.prototype.error = PromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var isFulfilled = PromiseInspection.prototype.isFulfilled = function () {\n return (this._bitField & 33554432) !== 0;\n };\n\n var isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n };\n\n var isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n };\n\n var isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n };\n\n PromiseInspection.prototype.isCancelled = function () {\n return (this._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.__isCancelled = function () {\n return (this._bitField & 65536) === 65536;\n };\n\n Promise.prototype._isCancelled = function () {\n return this._target().__isCancelled();\n };\n\n Promise.prototype.isCancelled = function () {\n return (this._target()._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.isPending = function () {\n return isPending.call(this._target());\n };\n\n Promise.prototype.isRejected = function () {\n return isRejected.call(this._target());\n };\n\n Promise.prototype.isFulfilled = function () {\n return isFulfilled.call(this._target());\n };\n\n Promise.prototype.isResolved = function () {\n return isResolved.call(this._target());\n };\n\n Promise.prototype.value = function () {\n return value.call(this._target());\n };\n\n Promise.prototype.reason = function () {\n var target = this._target();\n\n target._unsetRejectionIsUnhandled();\n\n return reason.call(target);\n };\n\n Promise.prototype._value = function () {\n return this._settledValue();\n };\n\n Promise.prototype._reason = function () {\n this._unsetRejectionIsUnhandled();\n\n return this._settledValue();\n };\n\n Promise.PromiseInspection = PromiseInspection;\n };\n }, {}],\n 33: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var isObject = util.isObject;\n\n function tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n\n obj._then(ret._fulfill, ret._reject, undefined, ret, null);\n\n return ret;\n }\n\n return doThenable(obj, then, context);\n }\n }\n\n return obj;\n }\n\n function doGetThen(obj) {\n return obj.then;\n }\n\n function getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n var hasProp = {}.hasOwnProperty;\n\n function isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n }\n\n function doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n\n promise._captureStackTrace();\n\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n\n promise._resolveCallback(value);\n\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n\n promise._rejectCallback(reason, synchronous, true);\n\n promise = null;\n }\n\n return ret;\n }\n\n return tryConvertToPromise;\n };\n }, {\n \"./util\": 36\n }],\n 34: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TimeoutError = Promise.TimeoutError;\n\n function HandleWrapper(handle) {\n this.handle = handle;\n }\n\n HandleWrapper.prototype._resultCancelled = function () {\n clearTimeout(this.handle);\n };\n\n var afterValue = function afterValue(value) {\n return delay(+this).thenReturn(value);\n };\n\n var delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n\n if (value !== undefined) {\n ret = Promise.resolve(value)._then(afterValue, null, null, ms, undefined);\n\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function () {\n ret._fulfill();\n }, +ms);\n\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n\n ret._captureStackTrace();\n }\n\n ret._setAsyncGuaranteed();\n\n return ret;\n };\n\n Promise.prototype.delay = function (ms) {\n return delay(ms, this);\n };\n\n var afterTimeout = function afterTimeout(promise, message, parent) {\n var err;\n\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n\n util.markAsOriginatingFromRejection(err);\n\n promise._attachExtraTrace(err);\n\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n };\n\n function successClear(value) {\n clearTimeout(this.handle);\n return value;\n }\n\n function failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n }\n\n Promise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear, undefined, handleWrapper, undefined);\n\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear, undefined, handleWrapper, undefined);\n }\n\n return ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 35: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var inherits = _dereq_(\"./util\").inherits;\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n\n if (maybePromise !== thenable && typeof thenable._isDisposable === \"function\" && typeof thenable._getDisposer === \"function\" && thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n\n return maybePromise;\n }\n\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n\n if (maybePromise instanceof Promise && maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(maybePromise._getDisposer().tryDispose(inspection), resources.promise);\n } catch (e) {\n return thrower(e);\n }\n\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower, null, null, null);\n }\n }\n\n iterator();\n }\n\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function (inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n\n this._promise._unsetDisposable();\n\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return d != null && typeof d.resource === \"function\" && typeof d.tryDispose === \"function\";\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n\n return value.promise();\n }\n\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length - 1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function () {\n var len = this.length;\n\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var input;\n var spreadArgs = true;\n\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n\n var resources = new ResourceList(len);\n\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n\n if (maybePromise instanceof Promise) {\n resource = maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources).then(function (inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n\n inspections[i] = inspection.value();\n }\n\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs ? fn.apply(undefined, inspections) : fn(inspections);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n var promise = resultPromise.lastly(function () {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n\n promise._setOnCancel(resources);\n\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & ~131072;\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n\n throw new TypeError();\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 36: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var canEvaluate = typeof navigator == \"undefined\";\n var errorObj = {\n e: {}\n };\n var tryCatchTarget;\n var globalObject = typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : this !== undefined ? this : null;\n\n function tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n function tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n }\n\n var inherits = function inherits(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) && propertyName.charAt(propertyName.length - 1) !== \"$\") {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n };\n\n function isPrimitive(val) {\n return val == null || val === true || val === false || typeof val === \"string\" || typeof val === \"number\";\n }\n\n function isObject(value) {\n return typeof value === \"function\" || _typeof(value) === \"object\" && value !== null;\n }\n\n function maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n return new Error(safeToString(maybeError));\n }\n\n function withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n\n ret[i] = appendee;\n return ret;\n }\n\n function getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null ? desc.value : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n }\n\n function notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n }\n\n function thrower(r) {\n throw r;\n }\n\n var inheritedDataKeys = function () {\n var excludedPrototypes = [Array.prototype, Object.prototype, Function.prototype];\n\n var isExcludedProto = function isExcludedProto(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function (obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n\n obj = es5.getPrototypeOf(obj);\n }\n\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function (obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n /*jshint forin:false */\n\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n\n ret.push(key);\n }\n }\n\n return ret;\n };\n }\n }();\n\n var thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\n\n function isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 && !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods = thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor || hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n\n return false;\n } catch (e) {\n return false;\n }\n }\n\n function toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n\n function ic() {\n return _typeof(receiver.foo);\n }\n\n ic();\n ic();\n return obj;\n eval(obj);\n }\n\n var rident = /^[a-z$_][a-z$_0-9]*$/i;\n\n function isIdentifier(str) {\n return rident.test(str);\n }\n\n function filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n\n for (var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n\n return ret;\n }\n\n function safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n }\n\n function isError(obj) {\n return obj instanceof Error || obj !== null && _typeof(obj) === \"object\" && typeof obj.message === \"string\" && typeof obj.name === \"string\";\n }\n\n function markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n } catch (ignore) {}\n }\n\n function originatesFromRejection(e) {\n if (e == null) return false;\n return e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError || e[\"isOperational\"] === true;\n }\n\n function canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n }\n\n var ensureErrorObject = function () {\n if (!(\"stack\" in new Error())) {\n return function (value) {\n if (canAttachTrace(value)) return value;\n\n try {\n throw new Error(safeToString(value));\n } catch (err) {\n return err;\n }\n };\n } else {\n return function (value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n }();\n\n function classString(obj) {\n return {}.toString.call(obj);\n }\n\n function copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n }\n\n var asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n }\n\n return null;\n };\n\n if (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function (v) {\n return Array.from(v);\n } : function (v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n\n while (!(itResult = it.next()).done) {\n ret.push(itResult.value);\n }\n\n return ret;\n };\n\n asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n\n return null;\n };\n }\n\n var isNode = typeof process !== \"undefined\" && classString(process).toLowerCase() === \"[object process]\";\n var hasEnvVariables = typeof process !== \"undefined\" && typeof process.env !== \"undefined\";\n\n function env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n }\n\n function getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function () {});\n\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n }\n\n function domainBind(self, cb) {\n return self.bind(cb);\n }\n\n var ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome && typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n };\n\n ret.isRecentNode = ret.isNode && function () {\n var version;\n\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n\n return version[0] === 0 && version[1] > 10 || version[0] > 0;\n }();\n\n if (ret.isNode) ret.toFastProperties(process);\n\n try {\n throw new Error();\n } catch (e) {\n ret.lastLineError = e;\n }\n\n module.exports = ret;\n }, {\n \"./es5\": 13\n }]\n }, {}, [4])(4);\n});\n;\n\nif (typeof window !== 'undefined' && window !== null) {\n window.P = window.Promise;\n} else if (typeof self !== 'undefined' && self !== null) {\n self.P = self.Promise;\n}","module.exports = require(\"bluebird\");","var utils = require(\"../../utils/utils\");\n\nvar StateService = function StateService() {\n var stateProviders = {};\n\n function getState(name) {\n var provider = stateProviders[name];\n\n if (provider) {\n return stateProviders[name].method();\n } else {\n var res = {};\n\n for (var i in stateProviders) {\n if (!stateProviders[i].internal) utils.mixin(res, stateProviders[i].method(), true);\n }\n\n return res;\n }\n }\n\n function registerProvider(name, provider, internal) {\n stateProviders[name] = {\n method: provider,\n internal: internal\n };\n }\n\n function unregisterProvider(name) {\n delete stateProviders[name];\n }\n\n return {\n getState: getState,\n registerProvider: registerProvider,\n unregisterProvider: unregisterProvider\n };\n};\n\nmodule.exports = StateService;","module.exports = function (gantt) {\n var regTemplates = {};\n\n function initTemplate(name, initial, template_name) {\n template_name = template_name || name;\n var config = gantt.config,\n templates = gantt.templates;\n\n if (gantt.config[name] && regTemplates[template_name] != config[name]) {\n if (!(initial && templates[template_name])) {\n templates[template_name] = gantt.date.date_to_str(config[name]);\n regTemplates[template_name] = config[name];\n }\n }\n }\n\n function initTemplates() {\n var labels = gantt.locale.labels;\n labels.gantt_save_btn = labels.icon_save;\n labels.gantt_cancel_btn = labels.icon_cancel;\n labels.gantt_delete_btn = labels.icon_delete;\n var date = gantt.date; //build configuration based templates\n\n var d = date.date_to_str;\n var c = gantt.config;\n var format_date = d(c.xml_date || c.date_format, c.server_utc);\n var parse_date = date.str_to_date(c.xml_date || c.date_format, c.server_utc);\n initTemplate(\"date_scale\", true, undefined, gantt.config, gantt.templates);\n initTemplate(\"date_grid\", true, \"grid_date_format\", gantt.config, gantt.templates);\n initTemplate(\"task_date\", true, undefined, gantt.config, gantt.templates);\n gantt.mixin(gantt.templates, {\n xml_format: undefined,\n // deprecated\n format_date: format_date,\n xml_date: undefined,\n // deprecated\n parse_date: parse_date,\n progress_text: function progress_text(start, end, task) {\n return \"\";\n },\n grid_header_class: function grid_header_class(column, config) {\n return \"\";\n },\n task_text: function task_text(start, end, task) {\n return task.text;\n },\n task_class: function task_class(start, end, task) {\n return \"\";\n },\n task_end_date: function task_end_date(date) {\n return gantt.templates.task_date(date);\n },\n grid_row_class: function grid_row_class(start, end, task) {\n return \"\";\n },\n task_row_class: function task_row_class(start, end, task) {\n return \"\";\n },\n timeline_cell_class: function timeline_cell_class(item, date) {\n return \"\";\n },\n timeline_cell_content: function timeline_cell_content(item, date) {\n return \"\";\n },\n scale_cell_class: function scale_cell_class(date) {\n return \"\";\n },\n scale_row_class: function scale_row_class(date) {\n return \"\";\n },\n grid_indent: function grid_indent(item) {\n return \"<div class='gantt_tree_indent'></div>\";\n },\n grid_folder: function grid_folder(item) {\n return \"<div class='gantt_tree_icon gantt_folder_\" + (item.$open ? \"open\" : \"closed\") + \"'></div>\";\n },\n grid_file: function grid_file(item) {\n return \"<div class='gantt_tree_icon gantt_file'></div>\";\n },\n grid_open: function grid_open(item) {\n return \"<div class='gantt_tree_icon gantt_\" + (item.$open ? \"close\" : \"open\") + \"'></div>\";\n },\n grid_blank: function grid_blank(item) {\n return \"<div class='gantt_tree_icon gantt_blank'></div>\";\n },\n date_grid: function date_grid(date, item, column) {\n if (item && gantt.isUnscheduledTask(item) && gantt.config.show_unscheduled) {\n return gantt.templates.task_unscheduled_time(item);\n } else {\n return gantt.templates.grid_date_format(date, column);\n }\n },\n task_time: function task_time(start, end, ev) {\n if (gantt.isUnscheduledTask(ev) && gantt.config.show_unscheduled) {\n return gantt.templates.task_unscheduled_time(ev);\n } else {\n return gantt.templates.task_date(start) + \" - \" + gantt.templates.task_end_date(end);\n }\n },\n task_unscheduled_time: function task_unscheduled_time(task) {\n return \"\";\n },\n time_picker: d(c.time_picker),\n link_class: function link_class(link) {\n return \"\";\n },\n link_description: function link_description(link) {\n var from = gantt.getTask(link.source),\n to = gantt.getTask(link.target);\n return \"<b>\" + from.text + \"</b> – <b>\" + to.text + \"</b>\";\n },\n drag_link: function drag_link(from, from_start, to, to_start) {\n from = gantt.getTask(from);\n var labels = gantt.locale.labels;\n var text = \"<b>\" + from.text + \"</b> \" + (from_start ? labels.link_start : labels.link_end) + \"<br/>\";\n\n if (to) {\n to = gantt.getTask(to);\n text += \"<b> \" + to.text + \"</b> \" + (to_start ? labels.link_start : labels.link_end) + \"<br/>\";\n }\n\n return text;\n },\n drag_link_class: function drag_link_class(from, from_start, to, to_start) {\n var add = \"\";\n\n if (from && to) {\n var allowed = gantt.isLinkAllowed(from, to, from_start, to_start);\n add = \" \" + (allowed ? \"gantt_link_allow\" : \"gantt_link_deny\");\n }\n\n return \"gantt_link_tooltip\" + add;\n },\n\n /* used for aria-labels of bar elements and for tooltip.js */\n tooltip_date_format: date.date_to_str(\"%Y-%m-%d\"),\n tooltip_text: function tooltip_text(start, end, event) {\n return \"<b>Task:</b> \" + event.text + \"<br/><b>Start date:</b> \" + gantt.templates.tooltip_date_format(start) + \"<br/><b>End date:</b> \" + gantt.templates.tooltip_date_format(end);\n }\n });\n }\n\n return {\n initTemplates: initTemplates,\n initTemplate: initTemplate\n };\n};","var eventable = require(\"../../utils/eventable\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar timeout = require(\"../../utils/timeout\");\n\nvar global = require(\"../../utils/global\");\n\nvar domHelpers = require(\"../ui/utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n function copyDomEvent(e) {\n return {\n target: e.target || e.srcElement,\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n altKey: e.altKey\n };\n }\n\n function DnD(obj, config) {\n this._obj = obj;\n this._settings = config || {};\n eventable(this);\n var inputMethods = this.getInputMethods();\n this._drag_start_timer = null;\n gantt.attachEvent(\"onGanttScroll\", utils.bind(function (left, top) {\n this.clearDragTimer();\n }, this));\n var lastDown = 0;\n var eventParams = {\n passive: false\n };\n\n for (var i = 0; i < inputMethods.length; i++) {\n utils.bind(function (input) {\n gantt.event(obj, input.down, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n if (config.preventDefault && config.selector && domHelpers.closest(e.target, config.selector)) {\n e.preventDefault();\n }\n\n if (gantt.config.touch && e.timeStamp && e.timeStamp - lastDown < 300) {\n return;\n }\n\n this._settings.original_target = copyDomEvent(e);\n\n if (gantt.config.touch) {\n this.clearDragTimer();\n this._drag_start_timer = setTimeout(utils.bind(function () {\n if (gantt.getState().lightbox) {\n return;\n }\n\n this.dragStart(obj, e, input);\n }, this), gantt.config.touch_drag);\n } else {\n this.dragStart(obj, e, input);\n }\n }, this), eventParams);\n var eventElement = document.body;\n gantt.event(eventElement, input.up, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n this.clearDragTimer();\n }, this), eventParams);\n }, this)(inputMethods[i]);\n }\n }\n\n DnD.prototype = {\n traceDragEvents: function traceDragEvents(domElement, inputMethod) {\n var mousemove = utils.bind(function (e) {\n return this.dragMove(domElement, e, inputMethod.accessor);\n }, this);\n utils.bind(function (e) {\n return this.dragScroll(domElement, e);\n }, this);\n var limited_mousemove = utils.bind(function (e) {\n if (this.config.started && utils.defined(this.config.updates_per_second)) {\n if (!timeout(this, this.config.updates_per_second)) return;\n }\n\n var dndActive = mousemove(e);\n\n if (dndActive) {\n try {\n if (e && e.preventDefault && e.cancelable) {\n //e.cancelable condition - because navigator.vibrate is blocked by Chrome\n e.preventDefault(); //Cancel default action on DND\n } //Cancel default action on DND\n\n } catch (e) {// just suppress the exception, nothing needed to be done here\n } //e.cancelBubble = true;\n\n }\n\n return dndActive;\n }, this);\n var eventElement = domHelpers.getRootNode(gantt.$root);\n var mousemoveContainer = this.config.mousemoveContainer || domHelpers.getRootNode(gantt.$root);\n var eventParams = {\n passive: false\n };\n var mouseup = utils.bind(function (e) {\n gantt.eventRemove(mousemoveContainer, inputMethod.move, limited_mousemove);\n gantt.eventRemove(eventElement, inputMethod.up, mouseup, eventParams);\n return this.dragEnd(domElement);\n }, this);\n gantt.event(mousemoveContainer, inputMethod.move, limited_mousemove, eventParams);\n gantt.event(eventElement, inputMethod.up, mouseup, eventParams);\n },\n checkPositionChange: function checkPositionChange(pos) {\n var diff_x = pos.x - this.config.pos.x;\n var diff_y = pos.y - this.config.pos.y;\n var distance = Math.sqrt(Math.pow(Math.abs(diff_x), 2) + Math.pow(Math.abs(diff_y), 2));\n\n if (distance > this.config.sensitivity) {\n return true;\n } else {\n return false;\n }\n },\n initDnDMarker: function initDnDMarker() {\n // create dnd placeholder and put it in dom\n var marker = this.config.marker = document.createElement(\"div\");\n marker.className = \"gantt_drag_marker\"; // GS-1333: don't show any message when we resize grid columns\n\n marker.innerHTML = \"\";\n document.body.appendChild(marker);\n },\n backupEventTarget: function backupEventTarget(domEvent, getEvent) {\n if (!gantt.config.touch) {\n return;\n } // keep original event target in DOM in order to keep dnd on touchmove event\n\n\n var e = getEvent(domEvent);\n var el = e.target || e.srcElement;\n var copy = el.cloneNode(true); //this.config.target.target = copy;\n\n this.config.original_target = copyDomEvent(e);\n this.config.original_target.target = copy;\n this.config.backup_element = el;\n el.parentNode.appendChild(copy);\n el.style.display = \"none\";\n var mousemoveContainer = this.config.mousemoveContainer || document.body;\n mousemoveContainer.appendChild(el);\n },\n getInputMethods: function getInputMethods() {\n // bind actions to browser events\n var inputMethods = [];\n inputMethods.push({\n \"move\": \"mousemove\",\n \"down\": \"mousedown\",\n \"up\": \"mouseup\",\n \"accessor\": function accessor(e) {\n return e;\n }\n });\n\n if (gantt.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n inputMethods.push({\n \"move\": \"touchmove\",\n \"down\": \"touchstart\",\n \"up\": \"touchend\",\n \"accessor\": function accessor(ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY),\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }\n });\n } else if (global.navigator.pointerEnabled) {\n inputMethods.push({\n \"move\": \"pointermove\",\n \"down\": \"pointerdown\",\n \"up\": \"pointerup\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }\n });\n } else if (global.navigator.msPointerEnabled) {\n inputMethods.push({\n \"move\": \"MSPointerMove\",\n \"down\": \"MSPointerDown\",\n \"up\": \"MSPointerUp\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }\n });\n }\n }\n\n return inputMethods;\n },\n clearDragTimer: function clearDragTimer() {\n if (this._drag_start_timer) {\n clearTimeout(this._drag_start_timer);\n this._drag_start_timer = null;\n }\n },\n dragStart: function dragStart(obj, e, inputMethod) {\n if (this.config && this.config.started) {\n return;\n }\n\n this.config = {\n obj: obj,\n marker: null,\n started: false,\n pos: this.getPosition(e),\n sensitivity: 4\n };\n if (this._settings) utils.mixin(this.config, this._settings, true);\n this.traceDragEvents(obj, inputMethod);\n gantt._prevent_touch_scroll = true;\n document.body.className += \" gantt_noselect\";\n\n if (gantt.config.touch) {\n this.dragMove(obj, e, inputMethod.accessor);\n }\n },\n dragMove: function dragMove(obj, e, getEvent) {\n var source = getEvent(e);\n if (!source) return false;\n\n if (!this.config.marker && !this.config.started) {\n var pos = this.getPosition(source);\n\n if (gantt.config.touch || this.checkPositionChange(pos)) {\n // real drag starts here,\n // when user moves mouse at first time after onmousedown\n this.config.started = true;\n this.config.ignore = false;\n\n if (this.callEvent(\"onBeforeDragStart\", [obj, this.config.original_target]) === false) {\n this.config.ignore = true;\n return false;\n }\n\n this.backupEventTarget(e, getEvent);\n this.initDnDMarker();\n\n gantt._touch_feedback();\n\n this.callEvent(\"onAfterDragStart\", [obj, this.config.original_target]);\n } else {\n this.config.ignore = true;\n }\n }\n\n if (!this.config.ignore) {\n // GS-1279 Gantt crashes on Mobile Firefox after starting to create a link and moving finger outisde the page.\n if (e.targetTouches && !source.target) return;\n source.pos = this.getPosition(source);\n this.config.marker.style.left = source.pos.x + \"px\";\n this.config.marker.style.top = source.pos.y + \"px\";\n this.callEvent(\"onDragMove\", [obj, source]);\n return true;\n }\n\n return false;\n },\n dragEnd: function dragEnd(obj) {\n var target = this.config.backup_element;\n\n if (target && target.parentNode) {\n target.parentNode.removeChild(target);\n }\n\n gantt._prevent_touch_scroll = false;\n\n if (this.config.marker) {\n this.config.marker.parentNode.removeChild(this.config.marker);\n this.config.marker = null;\n this.callEvent(\"onDragEnd\", []);\n }\n\n this.config.started = false;\n document.body.className = document.body.className.replace(\" gantt_noselect\", \"\");\n },\n getPosition: function getPosition(e) {\n var x = 0,\n y = 0;\n\n if (e.pageX || e.pageY) {\n x = e.pageX;\n y = e.pageY;\n } else if (e.clientX || e.clientY) {\n x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n\n return {\n x: x,\n y: y\n };\n }\n };\n return DnD;\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar t = /*#__PURE__*/function () {\n function t(_t) {\n _classCallCheck(this, t);\n\n var e = _t.url,\n s = _t.token;\n this._url = e, this._token = s, this._mode = 1, this._seed = 1, this._queue = [], this.data = {}, this.api = {}, this._events = {};\n }\n\n _createClass(t, [{\n key: \"headers\",\n value: function headers() {\n return {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Remote-Token\": this._token\n };\n }\n }, {\n key: \"fetch\",\n value: function (_fetch) {\n function fetch(_x, _x2) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function (_t2, e) {\n var s = {\n credentials: \"include\",\n headers: this.headers()\n };\n return e && (s.method = \"POST\", s.body = e), fetch(_t2, s).then(function (_t3) {\n return _t3.json();\n });\n })\n }, {\n key: \"load\",\n value: function load(_t4) {\n var _this = this;\n\n return _t4 && (this._url = _t4), this.fetch(this._url).then(function (_t5) {\n return _this.parse(_t5);\n });\n }\n }, {\n key: \"parse\",\n value: function parse(_t6) {\n var e = _t6.key,\n s = _t6.websocket;\n e && (this._token = _t6.key);\n\n for (var _e in _t6.data) {\n this.data[_e] = _t6.data[_e];\n }\n\n for (var _e2 in _t6.api) {\n var _s = this.api[_e2] = {},\n i = _t6.api[_e2];\n\n for (var _t29 in i) {\n _s[_t29] = this._wrapper(_e2 + \".\" + _t29);\n }\n }\n\n return s && this.connect(), this;\n }\n }, {\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var _t8 = this._socket;\n _t8 && (this._socket = null, _t8.onclose = function () {}, _t8.close()), this._mode = 2, this._socket = function (t, e, s, i) {\n var n = e;\n \"/\" === n[0] && (n = document.location.protocol + \"//\" + document.location.host + e);\n n = n.replace(/^http(s|):/, \"ws$1:\");\n var o = -1 != n.indexOf(\"?\") ? \"&\" : \"?\";\n n = \"\".concat(n).concat(o, \"token=\").concat(s, \"&ws=1\");\n var r = new WebSocket(n);\n return r.onclose = function () {\n return setTimeout(function () {\n return t.connect();\n }, 2e3);\n }, r.onmessage = function (e) {\n var s = JSON.parse(e.data);\n\n switch (s.action) {\n case \"result\":\n t.result(s.body, []);\n break;\n\n case \"event\":\n t.fire(s.body.name, s.body.value);\n break;\n\n case \"start\":\n i();\n break;\n\n default:\n t.onError(s.data);\n }\n }, r;\n }(this, this._url, this._token, function () {\n return _this2._mode = 3, _this2._send(), _this2._resubscribe(), _this2;\n });\n }\n }, {\n key: \"_wrapper\",\n value: function _wrapper(_t9) {\n return function () {\n var _this3 = this;\n\n var e = [].slice.call(arguments);\n var s = null;\n var i = new Promise(function (i, n) {\n s = {\n data: {\n id: _this3._uid(),\n name: _t9,\n args: e\n },\n status: 1,\n resolve: i,\n reject: n\n }, _this3._queue.push(s);\n });\n return this.onCall(s, i), 3 === this._mode ? this._send(s) : setTimeout(function () {\n return _this3._send();\n }, 1), i;\n }.bind(this);\n }\n }, {\n key: \"_uid\",\n value: function _uid() {\n return (this._seed++).toString();\n }\n }, {\n key: \"_send\",\n value: function _send(_t10) {\n var _this4 = this;\n\n if (2 == this._mode) return void setTimeout(function () {\n return _this4._send();\n }, 100);\n var e = _t10 ? [_t10] : this._queue.filter(function (_t11) {\n return 1 === _t11.status;\n });\n if (!e.length) return;\n var s = e.map(function (_t12) {\n return _t12.status = 2, _t12.data;\n });\n 3 !== this._mode ? this.fetch(this._url, JSON.stringify(s))[\"catch\"](function (_t13) {\n return _this4.onError(_t13);\n }).then(function (_t14) {\n return _this4.result(_t14, s);\n }) : this._socket.send(JSON.stringify({\n action: \"call\",\n body: s\n }));\n }\n }, {\n key: \"result\",\n value: function result(_t15, e) {\n var s = {};\n if (_t15) for (var _e3 = 0; _e3 < _t15.length; _e3++) {\n s[_t15[_e3].id] = _t15[_e3];\n } else for (var _t30 = 0; _t30 < e.length; _t30++) {\n s[e[_t30].id] = {\n id: e[_t30].id,\n error: \"Network Error\",\n data: null\n };\n }\n\n for (var _t31 = this._queue.length - 1; _t31 >= 0; _t31--) {\n var _e4 = this._queue[_t31],\n i = s[_e4.data.id];\n i && (this.onResponse(_e4, i), i.error ? _e4.reject(i.error) : _e4.resolve(i.data), this._queue.splice(_t31, 1));\n }\n }\n }, {\n key: \"on\",\n value: function on(_t18, e) {\n var s = this._uid();\n\n var i = this._events[_t18];\n var n = !!i;\n return n || (i = this._events[_t18] = []), i.push({\n id: s,\n handler: e\n }), n || 3 != this._mode || this._socket.send(JSON.stringify({\n action: \"subscribe\",\n name: _t18\n })), {\n name: _t18,\n id: s\n };\n }\n }, {\n key: \"_resubscribe\",\n value: function _resubscribe() {\n if (3 == this._mode) for (var _t32 in this._events) {\n this._socket.send(JSON.stringify({\n action: \"subscribe\",\n name: _t32\n }));\n }\n }\n }, {\n key: \"detach\",\n value: function detach(_t20) {\n if (!_t20) {\n if (3 == this._mode) for (var _t33 in this._events) {\n this._socket.send(JSON.stringify({\n action: \"unsubscribe\",\n key: _t33\n }));\n }\n return void (this._events = {});\n }\n\n var e = _t20.id,\n s = _t20.name,\n i = this._events[s];\n\n if (i) {\n var _t34 = i.filter(function (_t23) {\n return _t23.id != e;\n });\n\n _t34.length ? this._events[s] = _t34 : (delete this._events[s], 3 == this._mode && this._socket.send(JSON.stringify({\n action: \"unsubscribe\",\n name: s\n })));\n }\n }\n }, {\n key: \"fire\",\n value: function fire(_t24, e) {\n var s = this._events[_t24];\n if (s) for (var _t35 = 0; _t35 < s.length; _t35++) {\n s[_t35].handler(e);\n }\n }\n }, {\n key: \"onError\",\n value: function onError(_t26) {\n return null;\n }\n }, {\n key: \"onCall\",\n value: function onCall(_t27, e) {}\n }, {\n key: \"onResponse\",\n value: function onResponse(_t28, e) {}\n }]);\n\n return t;\n}();\n\nexport { t as Client };","var remote_client = require(\"remote-client\");\n\nmodule.exports = {\n remoteEvents: function remoteEvents(url, token) {\n var _this = this;\n\n var remote = new remote_client.Client({\n url: url,\n token: token\n }); // temporary patch, as we do not want credentials\n\n remote.fetch = function (url, body) {\n var req = {\n headers: this.headers()\n };\n\n if (body) {\n req.method = \"POST\";\n req.body = body;\n }\n\n return fetch(url, req).then(function (res) {\n return res.json();\n });\n };\n\n this._ready = remote.load().then(function (back) {\n return _this._remote = back;\n });\n\n function ready() {\n return this._ready;\n }\n\n function on(name, handler) {\n this.ready().then(function (back) {\n if (typeof name === \"string\") back.on(name, handler);else {\n for (var key in name) {\n back.on(key, name[key]);\n }\n }\n });\n }\n\n this.ready = ready;\n this.on = on;\n }\n};","const dateToStr = (format: string, utc: boolean, gantt) => {\r\n\treturn (date) => {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, (a) => {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? gantt.date.to_fixed(date.getUTCDate()) : gantt.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? gantt.date.to_fixed((date.getUTCMonth() + 1)) : gantt.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? gantt.date.to_fixed(date.getUTCFullYear() % 100) : gantt.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? gantt.locale.date.day_short[date.getUTCDay()] : gantt.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? gantt.locale.date.day_full[date.getUTCDay()] : gantt.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? gantt.locale.date.month_short[date.getUTCMonth()] : gantt.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? gantt.locale.date.month_full[date.getUTCMonth()] : gantt.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? gantt.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : gantt.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? gantt.date.to_fixed(date.getUTCHours()) : gantt.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? gantt.date.to_fixed(date.getUTCMinutes()) : gantt.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? gantt.date.to_fixed(date.getUTCSeconds()) : gantt.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? gantt.date.to_fixed(gantt.date.getUTCISOWeek(date)) : gantt.date.to_fixed(gantt.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nconst strToDate = (format: string, utc: boolean, gantt:any) => {\r\n\treturn (date: string) => {\r\n\t\tconst set: Array<string|number> = [0, 0, 1, 0, 0, 0];\r\n\t\tconst temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\t\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\r\n\t\tfor (let i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] as unknown as number || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] as unknown as number || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] as unknown as number * 1 + ((temp[i] as unknown as number) > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] as unknown as number || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] as unknown as number || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] as unknown as number || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] as number % 12 + ((temp[i] || \"\").toLowerCase() === \"am\" ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = gantt.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = gantt.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(\r\n\t\t\t\tset[0] as number,\r\n\t\t\t\tset[1] as number,\r\n\t\t\t\tset[2] as number,\r\n\t\t\t\tset[3] as number,\r\n\t\t\t\tset[4] as number,\r\n\t\t\t\tset[5] as number\r\n\t\t\t));\r\n\t\t}\r\n\t\treturn new Date(\r\n\t\t\tset[0] as number,\r\n\t\t\tset[1] as number,\r\n\t\t\tset[2] as number,\r\n\t\t\tset[3] as number,\r\n\t\t\tset[4] as number,\r\n\t\t\tset[5] as number\r\n\t\t);\r\n\t};\r\n\r\n};\r\n\r\n\r\nconst cspVersion = {\r\n\tdate_to_str: dateToStr,\r\n\tstr_to_date: strToDate\r\n};\r\n\r\nexport default cspVersion;","const dateToStr = (format: string, utc: boolean, gantt) => {\r\n\tformat = format.replace(/%[a-zA-Z]/g, (a) => {\r\n\t\tswitch (a) {\r\n\t\t\tcase \"%d\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Date())+\"`;\r\n\t\t\tcase \"%m\":\r\n\t\t\t\treturn `\"+to_fixed((date.get${utc?\"UTC\":\"\"}Month()+1))+\"`;\r\n\t\t\tcase \"%j\":\r\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}Date()+\"`;\r\n\t\t\tcase \"%n\":\r\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Month()+1)+\"`;\r\n\t\t\tcase \"%y\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}FullYear()%100)+\"`;\r\n\t\t\tcase \"%Y\":\r\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}FullYear()+\"`;\r\n\t\t\tcase \"%D\":\r\n\t\t\t\treturn `\"+locale.date.day_short[date.get${utc?\"UTC\":\"\"}Day()]+\"`;\r\n\t\t\tcase \"%l\":\r\n\t\t\t\treturn `\"+locale.date.day_full[date.get${utc?\"UTC\":\"\"}Day()]+\"`;\r\n\t\t\tcase \"%M\":\r\n\t\t\t\treturn `\"+locale.date.month_short[date.get${utc?\"UTC\":\"\"}Month()]+\"`;\r\n\t\t\tcase \"%F\":\r\n\t\t\t\treturn `\"+locale.date.month_full[date.get${utc?\"UTC\":\"\"}Month()]+\"`;\r\n\t\t\tcase \"%h\":\r\n\t\t\t\treturn `\"+to_fixed((date.get${utc?\"UTC\":\"\"}Hours()+11)%12+1)+\"`;\r\n\t\t\tcase \"%g\":\r\n\t\t\t\treturn `\"+((date.get${utc?\"UTC\":\"\"}Hours()+11)%12+1)+\"`;\r\n\t\t\tcase \"%G\":\r\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}Hours()+\"`;\r\n\t\t\tcase \"%H\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Hours())+\"`;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Minutes())+\"`;\r\n\t\t\tcase \"%a\":\r\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Hours()>11?\"pm\":\"am\")+\"`;\r\n\t\t\tcase \"%A\":\r\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Hours()>11?\"PM\":\"AM\")+\"`;\r\n\t\t\tcase \"%s\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Seconds())+\"`;\r\n\t\t\tcase \"%W\":\r\n\t\t\t\treturn `\"+to_fixed(getISOWeek(date))+\"`;\r\n\t\t\tcase \"%w\":\r\n\t\t\t\treturn `\"+to_fixed(getWeek(date))+\"`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn a;\r\n\t\t}\r\n\t});\r\n\r\n\t// tslint:disable-next-line: function-constructor\r\n\tconst dateToStrFn = new Function(\"date\", \"to_fixed\", \"locale\", \"getISOWeek\", \"getWeek\", `return \"${format}\";`);\r\n\r\n\treturn (date: Date) => {\r\n\t\treturn dateToStrFn(date, gantt.date.to_fixed, gantt.locale, gantt.date.getISOWeek, gantt.date.getWeek);\r\n\t};\r\n};\r\n\r\n\r\nconst strToDate = (format: string, utc: boolean, gantt:any) => {\r\n\tlet splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (let i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\":\r\n\t\t\t\tsplt += `set[2]=temp[${i}]||1;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\":\r\n\t\t\t\tsplt += `set[1]=(temp[${i}]||1)-1;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\":\r\n\t\t\t\tsplt += `set[0]=temp[${i}]*1+(temp[${i}]>50?1900:2000);`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += `set[3]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += `set[4]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\":\r\n\t\t\t\tsplt += `set[0]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\":\r\n\t\t\t\tsplt += `set[3]=set[3]%12+((temp[${i}]||'').toLowerCase()=='am'?0:12);`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\":\r\n\t\t\t\tsplt += `set[5]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\":\r\n\t\t\t\tsplt += `set[1]=locale.date.month_short_hash[temp[${i}]]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\":\r\n\t\t\t\tsplt += `set[1]=locale.date.month_full_hash[temp[${i}]]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tlet code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) { code = ` Date.UTC(${code})`; }\r\n\t// tslint:disable-next-line: function-constructor\r\n\tconst strToDateFn = new Function(\"date\", \"locale\", `var set=[0,0,1,0,0,0]; ${splt} return new Date(${code});`);\r\n\r\n\treturn (dateString) => {\r\n\t\treturn strToDateFn(dateString, gantt.locale);\r\n\t};\r\n};\r\n\r\nconst fastVersion = {\r\n\tdate_to_str: dateToStr,\r\n\tstr_to_date: strToDate\r\n};\r\n\r\nexport default fastVersion;","/*\r\n %d - the day as a number with a leading zero ( 01 to 31 );\r\n %j - the day as a number without a leading zero ( 1 to 31 );\r\n %D - the day as an abbreviation ( Sun to Sat );\r\n %l - the day as a full name ( Sunday to Saturday );\r\n %W - the ISO-8601 week number of the year. Weeks start on Monday; 1)\r\n %m - the month as a number without a leading zero ( 1 to 12 );\r\n %n - the month as a number with a leading zero ( 01 to 12);\r\n %M - the month as an abbreviation ( Jan to Dec );\r\n %F - the month as a full name ( January to December );\r\n %y - the year as a two-digit number ( 00 to 99 );\r\n %Y - the year as a four-digit number ( 1900–9999 );\r\n %h - the hour based on the 12-hour clock ( 00 to 11 );\r\n %H - the hour based on the 24-hour clock ( 00 to 23 );\r\n %i - the minute as a number with a leading zero ( 00 to 59 );\r\n %s - the second as a number without a leading zero ( 00 to 59 ); 2)\r\n %a - displays am (for times from midnight until noon) and pm (for times from noon until midnight);\r\n %A - displays AM (for times from midnight until noon) and PM (for times from noon until midnight).\r\n*/\nvar fastVersion = require(\"./date_parsers/fast_version\")[\"default\"];\n\nvar cspCompliantVersion = require(\"./date_parsers/csp_compliant_version\")[\"default\"];\n\nmodule.exports = function (gantt) {\n var canUseCsp = null;\n\n function cspAutoCheck() {\n try {\n new Function(\"canUseCsp = false;\");\n } catch (e) {\n canUseCsp = true;\n }\n }\n\n function useCsp() {\n var result = false;\n\n if (gantt.config.csp === \"auto\") {\n if (canUseCsp === null) {\n cspAutoCheck();\n }\n\n result = canUseCsp;\n } else {\n result = gantt.config.csp;\n }\n\n return result;\n }\n\n var dateHelper = {\n init: function init() {\n var locale = gantt.locale;\n var s = locale.date.month_short;\n var t = locale.date.month_short_hash = {};\n\n for (var i = 0; i < s.length; i++) {\n t[s[i]] = i;\n }\n\n var s = locale.date.month_full;\n var t = locale.date.month_full_hash = {};\n\n for (var i = 0; i < s.length; i++) {\n t[s[i]] = i;\n }\n },\n date_part: function date_part(date) {\n var old = new Date(date);\n date.setHours(0);\n this.hour_start(date);\n if (date.getHours() && ( //shift to yesterday on dst\n date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear())) date.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\n return date;\n },\n time_part: function time_part(date) {\n return (date.valueOf() / 1000 - date.getTimezoneOffset() * 60) % 86400;\n },\n week_start: function week_start(date) {\n var shift = date.getDay();\n\n if (gantt.config.start_on_monday) {\n if (shift === 0) shift = 6;else shift--;\n }\n\n return this.date_part(this.add(date, -1 * shift, \"day\"));\n },\n month_start: function month_start(date) {\n date.setDate(1);\n return this.date_part(date);\n },\n quarter_start: function quarter_start(date) {\n this.month_start(date);\n var m = date.getMonth(),\n res_month;\n\n if (m >= 9) {\n res_month = 9;\n } else if (m >= 6) {\n res_month = 6;\n } else if (m >= 3) {\n res_month = 3;\n } else {\n res_month = 0;\n }\n\n date.setMonth(res_month);\n return date;\n },\n year_start: function year_start(date) {\n date.setMonth(0);\n return this.month_start(date);\n },\n day_start: function day_start(date) {\n return this.date_part(date);\n },\n hour_start: function hour_start(date) {\n if (date.getMinutes()) date.setMinutes(0);\n this.minute_start(date);\n return date;\n },\n minute_start: function minute_start(date) {\n if (date.getSeconds()) date.setSeconds(0);\n if (date.getMilliseconds()) date.setMilliseconds(0);\n return date;\n },\n _add_days: function _add_days(modifiedDate, inc, originalDate) {\n modifiedDate.setDate(modifiedDate.getDate() + inc);\n var incCondition = inc >= 0;\n var getHoursCondition = !originalDate.getHours() && modifiedDate.getHours(); //shift to yesterday on dst\n\n var getDateCondition = modifiedDate.getDate() <= originalDate.getDate() || modifiedDate.getMonth() < originalDate.getMonth() || modifiedDate.getFullYear() < originalDate.getFullYear();\n\n if (incCondition && getHoursCondition && getDateCondition) {\n modifiedDate.setTime(modifiedDate.getTime() + 60 * 60 * 1000 * (24 - modifiedDate.getHours()));\n }\n\n var worktimeCalculation = inc > 1;\n\n if (worktimeCalculation && getHoursCondition) {\n // try to shift the modified Date to 00:00\n modifiedDate.setHours(0);\n }\n\n return modifiedDate;\n },\n add: function add(date, inc, mode) {\n /*jsl:ignore*/\n var ndate = new Date(date.valueOf());\n\n switch (mode) {\n case \"day\":\n ndate = this._add_days(ndate, inc, date);\n break;\n\n case \"week\":\n ndate = this._add_days(ndate, inc * 7, date);\n break;\n\n case \"month\":\n ndate.setMonth(ndate.getMonth() + inc);\n break;\n\n case \"year\":\n ndate.setYear(ndate.getFullYear() + inc);\n break;\n\n case \"hour\":\n /*\r\n \tadding hours/minutes via setHour(getHour() + inc) gives weird result when\r\n \tadding one hour to the time before switch to a Daylight Saving time\r\n \t\t\texample: //Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\r\n \tnew Date(2014, 02, 30, 1).setHours(2)\r\n \t>>Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\r\n \t\t\tsetTime seems working as expected\r\n */\n ndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\n break;\n\n case \"minute\":\n ndate.setTime(ndate.getTime() + inc * 60 * 1000);\n break;\n\n default:\n return this[\"add_\" + mode](date, inc, mode);\n }\n\n return ndate;\n /*jsl:end*/\n },\n add_quarter: function add_quarter(date, inc) {\n return this.add(date, inc * 3, \"month\");\n },\n to_fixed: function to_fixed(num) {\n if (num < 10) return \"0\" + num;\n return num;\n },\n copy: function copy(date) {\n return new Date(date.valueOf());\n },\n date_to_str: function date_to_str(format, utc) {\n var result = fastVersion;\n\n if (useCsp()) {\n result = cspCompliantVersion;\n }\n\n return result.date_to_str(format, utc, gantt);\n },\n str_to_date: function str_to_date(format, utc) {\n var result = fastVersion;\n\n if (useCsp()) {\n result = cspCompliantVersion;\n }\n\n return result.str_to_date(format, utc, gantt);\n },\n getISOWeek: function getISOWeek(ndate) {\n return gantt.date._getWeekNumber(ndate, true);\n },\n _getWeekNumber: function _getWeekNumber(ndate, isoWeek) {\n if (!ndate) return false;\n var nday = ndate.getDay();\n\n if (isoWeek) {\n if (nday === 0) {\n nday = 7;\n }\n }\n\n var first_thursday = new Date(ndate.valueOf());\n first_thursday.setDate(ndate.getDate() + (4 - nday));\n var year_number = first_thursday.getFullYear(); // year of the first Thursday\n\n var ordinal_date = Math.round((first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\n\n var week_number = 1 + Math.floor(ordinal_date / 7);\n return week_number;\n },\n getWeek: function getWeek(ndate) {\n return gantt.date._getWeekNumber(ndate, gantt.config.start_on_monday);\n },\n getUTCISOWeek: function getUTCISOWeek(ndate) {\n return gantt.date.getISOWeek(ndate);\n },\n convert_to_utc: function convert_to_utc(date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n },\n parseDate: function parseDate(date, format) {\n // raw date may be of type string, number (timestamp) or something else\n // do not check for instanceof Date explicitly, since we may swap native date with different date implementation at some point\n if (date && !date.getFullYear) {\n if (typeof format !== \"function\") {\n if (typeof format === \"string\") {\n if (format === \"parse_date\" || format === \"xml_date\") {\n format = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n } else {\n format = gantt.defined(gantt.templates[format]) ? gantt.templates[format] : gantt.date.str_to_date(format);\n }\n } else {\n format = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n }\n }\n\n if (date) {\n date = format(date);\n } else {\n date = null;\n }\n }\n\n return date;\n }\n };\n return dateHelper;\n};","export default function serialize(data: object | string) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\r\n\tlet result = \"\";\r\n\r\n\tfor (const key in data) {\r\n\t\tlet serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar env = require(\"../../utils/env\");\n\nvar global = require(\"../../utils/global\");\n\nvar serialize = require(\"./serialize\")[\"default\"];\n\nfunction createConfig(method, args) {\n var result = {\n method: method\n };\n\n if (args.length === 0) {\n throw new Error(\"Arguments list of query is wrong.\");\n }\n\n if (args.length === 1) {\n if (typeof args[0] === \"string\") {\n result.url = args[0];\n result.async = true;\n } else {\n result.url = args[0].url;\n result.async = args[0].async || true;\n result.callback = args[0].callback;\n result.headers = args[0].headers;\n }\n\n if (method === \"POST\" || \"PUT\") {\n if (args[0].data) {\n if (typeof args[0].data !== \"string\") {\n result.data = serialize(args[0].data);\n } else {\n result.data = args[0].data;\n }\n } else {\n result.data = \"\";\n }\n }\n\n return result;\n }\n\n result.url = args[0];\n\n switch (method) {\n case \"GET\":\n case \"DELETE\":\n result.callback = args[1];\n result.headers = args[2];\n break;\n\n case \"POST\":\n case \"PUT\":\n if (args[1]) {\n if (typeof args[1] !== \"string\") {\n result.data = serialize(args[1]);\n } else {\n result.data = args[1];\n }\n } else {\n result.data = \"\";\n }\n\n result.callback = args[2];\n result.headers = args[3];\n break;\n }\n\n return result;\n}\n\nmodule.exports = function (gantt) {\n return {\n // if false - dhxr param will added to prevent caching on client side (default),\n // if true - do not add extra params\n cache: true,\n // default method for load/loadStruct, post/get allowed\n // get - since 4.1.1, this should fix 412 error for macos safari\n method: \"get\",\n parse: function parse(data) {\n if (typeof data !== \"string\") return data;\n var obj;\n data = data.replace(/^[\\s]+/, \"\");\n\n if (typeof DOMParser !== \"undefined\" && !env.isIE) {\n // ff,ie9\n obj = new DOMParser().parseFromString(data, \"text/xml\");\n } else if (typeof global.ActiveXObject !== \"undefined\") {\n obj = new global.ActiveXObject(\"Microsoft.XMLDOM\");\n obj.async = \"false\";\n obj.loadXML(data);\n }\n\n return obj;\n },\n xmltop: function xmltop(tagname, xhr, obj) {\n if (typeof xhr.status == \"undefined\" || xhr.status < 400) {\n var xml = !xhr.responseXML ? this.parse(xhr.responseText || xhr) : xhr.responseXML || xhr;\n\n if (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\n return xml.getElementsByTagName(tagname)[0];\n }\n }\n\n if (obj !== -1) gantt.callEvent(\"onLoadXMLError\", [\"Incorrect XML\", arguments[1], obj]);\n return document.createElement(\"DIV\");\n },\n xpath: function xpath(xpathExp, docObj) {\n if (!docObj.nodeName) docObj = docObj.responseXML || docObj;\n\n if (env.isIE) {\n return docObj.selectNodes(xpathExp) || [];\n } else {\n var rows = [];\n var first;\n var col = (docObj.ownerDocument || docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\n\n while (true) {\n first = col.iterateNext();\n\n if (first) {\n rows.push(first);\n } else {\n break;\n }\n }\n\n return rows;\n }\n },\n query: function query(config) {\n return this._call(config.method || \"GET\", config.url, config.data || \"\", config.async || true, config.callback, config.headers);\n },\n get: function get(url, onLoad, headers) {\n var config = createConfig(\"GET\", arguments);\n return this.query(config);\n },\n getSync: function getSync(url, headers) {\n var config = createConfig(\"GET\", arguments);\n config.async = false;\n return this.query(config);\n },\n put: function put(url, postData, onLoad, headers) {\n var config = createConfig(\"PUT\", arguments);\n return this.query(config);\n },\n del: function del(url, onLoad, headers) {\n /**\r\n * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n * A payload within a DELETE request message has no defined semantics;\r\n * sending a payload body on a DELETE request might cause some existing\r\n * implementations to reject the request.\r\n */\n var config = createConfig(\"DELETE\", arguments);\n return this.query(config);\n },\n post: function post(url, postData, onLoad, headers) {\n if (arguments.length == 1) {\n postData = \"\";\n } else if (arguments.length == 2 && typeof postData == \"function\") {\n onLoad = postData;\n postData = \"\";\n }\n\n var config = createConfig(\"POST\", arguments);\n return this.query(config);\n },\n postSync: function postSync(url, postData, headers) {\n postData = postData === null ? \"\" : String(postData);\n var config = createConfig(\"POST\", arguments);\n config.async = false;\n return this.query(config);\n },\n _call: function _call(method, url, postData, async, onLoad, headers) {\n return new gantt.Promise(function (resolve, reject) {\n var t = (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) !== undefined ? new XMLHttpRequest() : new global.ActiveXObject(\"Microsoft.XMLHTTP\");\n var isQt = navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null;\n\n if (!!async) {\n t.onreadystatechange = function () {\n if (t.readyState == 4 || isQt && t.readyState == 3) {\n // what for long response and status 404?\n if (t.status != 200 || t.responseText === \"\") if (!gantt.callEvent(\"onAjaxError\", [t])) return;\n setTimeout(function () {\n if (typeof onLoad == \"function\") {\n onLoad.apply(global, [{\n xmlDoc: t,\n filePath: url\n }]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n }\n\n resolve(t);\n\n if (typeof onLoad == \"function\") {\n onLoad = null;\n t = null;\n }\n }, 0);\n }\n };\n }\n\n var noCache = !this || !this.cache;\n\n if (method == \"GET\" && noCache) {\n url += (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"dhxr\" + new Date().getTime() + \"=1\";\n }\n\n t.open(method, url, async);\n\n if (headers) {\n for (var key in headers) {\n t.setRequestHeader(key, headers[key]);\n }\n } else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n t.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n } else if (method == \"GET\") {\n postData = null;\n }\n\n t.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n t.send(postData);\n if (!async) return {\n xmlDoc: t,\n filePath: url\n }; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n });\n },\n urlSeparator: function urlSeparator(str) {\n if (str.indexOf(\"?\") != -1) return \"&\";else return \"?\";\n }\n };\n};","type DurationUnits = \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\r\ntype Align = \"left\" | \"center\" | \"right\";\r\ntype SectionType = \"textarea\"\r\n\t\t\t\t\t| \"time\"\r\n\t\t\t\t\t| \"duration\"\r\n\t\t\t\t\t| \"select\"\r\n\t\t\t\t\t| \"typeselect\"\r\n\t\t\t\t\t| \"parent\"\r\n\t\t\t\t\t| \"template\"\r\n\t\t\t\t\t| \"checkbox\"\r\n\t\t\t\t\t| \"radio\"\r\n\t\t\t\t\t| \"resources\"\r\n\t\t\t\t\t| \"constraint\";\r\n\r\ntype LightboxSection = Array<ILightboxSection\r\n\t| ILightboxTimeAndDurationSection\r\n\t| ILightboxInputControl\r\n\t| ILightboxSelectControl\r\n\t| ILightboxParentControl\r\n\t| ILightboxTypeselectControl>;\r\n\r\ntype LayoutView = \"grid\"\r\n\t| \"timeline\"\r\n\t| \"resizer\"\r\n\t| \"scrollbar\"\r\n\t| \"resourceGrid\"\r\n\t| \"resourceTimeline\";\r\n\r\ninterface IColumnItem {\r\n\tname: string;\r\n\tlabel?: string;\r\n\ttree?: boolean;\r\n\talign?: Align;\r\n\thide?: boolean;\r\n\tmax_width?: number;\r\n\tmin_width?: number;\r\n\tresize?: boolean;\r\n\ttemplate?: (obj: any) => string;\r\n\twidth?: number | \"*\";\r\n}\r\n\r\nexport type TModifierKeys = \"metaKey\" | \"ctrlKey\" | \"altKey\" | \"shiftKey\" | false | undefined;\r\n\r\nexport interface IScale {\r\n\tcss?: () => string;\r\n\tdate?: string;\r\n\tstep: number;\r\n\ttemplate?: (date: Date) => string;\r\n\tunit: DurationUnits;\r\n}\r\n\r\ninterface ILightboxSection {\r\n\tname: string;\r\n\tmap_to: string;\r\n\ttype: SectionType;\r\n\theight?: number;\r\n\tfocus?: boolean;\r\n}\r\n\r\ninterface ILightboxTimeAndDurationSection extends ILightboxSection {\r\n\treadonly: boolean;\r\n\tyear_range: number[] | number;\r\n\tsingle_date: boolean;\r\n\ttime_format: string;\r\n}\r\n\r\ninterface ILightboxInputControl extends ILightboxSection {\r\n\tdefault_value?: any;\r\n\toptions?: Array<{key: string, label: string}>;\r\n}\r\n\r\ninterface ILightboxSelectControl extends ILightboxInputControl {\r\n\tonchange: () => boolean | undefined;\r\n}\r\n\r\ninterface ILightboxParentControl extends ILightboxSection {\r\n\tallow_root: boolean;\r\n\troot_label: string;\r\n\tsort?: (a: any, b: any) => -1 | 0 | 1;\r\n\tfilter?: (task: string | number | object) => boolean;\r\n\ttemplate?: (start: Date, end: Date, ev: object) => string;\r\n}\r\n\r\ninterface ILightboxTypeselectControl extends ILightboxSection {\r\n\tfilter?: (typeName: string) => boolean;\r\n}\r\n\r\n\r\ninterface ILayoutScrollbar {\r\n\tview: \"scrollbar\";\r\n\tscroll?: \"x\" | \"y\";\r\n\tid: string;\r\n\theight?: number;\r\n\twidth?: number;\r\n}\r\n\r\ninterface ILayoutView {\r\n\tview: LayoutView;\r\n\tid?: string;\r\n\tscrollX?: string;\r\n\tscrollY?: string;\r\n\tconfig?: object;\r\n}\r\n\r\ninterface ILayoutGrid extends ILayoutView {\r\n\tview: \"grid\";\r\n\tbind?: string;\r\n}\r\n\r\ninterface ILayoutTimeline extends ILayoutView {\r\n\tview: \"timeline\";\r\n\tbindLinks?: string;\r\n\tlayers?: any[];\r\n}\r\n\r\ninterface ILayoutResizer {\r\n\tview?: undefined;\r\n\tresizer: boolean;\r\n\twidth: number;\r\n}\r\n\r\ninterface ILayoutResourceGrid extends ILayoutView {\r\n\tview: \"resourceGrid\";\r\n\twidth: number;\r\n\tgroup: \"string\";\r\n}\r\n\r\ninterface ILayoutResourceTimeline extends ILayoutView {\r\n\tview: \"resourceTimeline\";\r\n\twidth: number;\r\n\tgroup: \"string\";\r\n}\r\n\r\ninterface ILayoutHtml {\r\n\thtml: string;\r\n\tcss: string;\r\n\twidth: number;\r\n}\r\n\r\ntype LayoutRow = ILayoutGrid\r\n\t| ILayoutTimeline\r\n\t| ILayoutResizer\r\n\t| ILayoutResourceGrid\r\n\t| ILayoutResourceTimeline\r\n\t| ILayoutHtml\r\n\t| ILayoutScrollbar\r\n\t| { cols: LayoutCol[] };\r\n\r\ntype LayoutCol = ILayoutGrid\r\n\t| ILayoutTimeline\r\n\t| ILayoutResizer\r\n\t| ILayoutResourceGrid\r\n\t| ILayoutResourceTimeline\r\n\t| ILayoutHtml\r\n\t| ILayoutScrollbar\r\n\t| { rows: LayoutRow[] };\r\n\r\ninterface ILayout {\r\n\tcss: string;\r\n\trows?: LayoutRow[];\r\n\tcols?: LayoutCol[];\r\n}\r\n\r\ntype TCsp = boolean | \"auto\";\r\n\r\ninterface IResourceConfig {\r\n\tdataprocessor_assignments?: boolean;\r\n\tdataprocessor_resources?: boolean;\r\n\teditable_resource_diagram?: boolean;\r\n\tresource_store?: {\r\n\t\ttype?: \"treeDataStore\"|\"dataStore\"|string;\r\n\t\tfetchTasks?: boolean;\r\n\t\tinitItem?: (item: any) => any;\r\n\t};\r\n\tlightbox_resources?: (resources: any[]) => any[];\r\n\r\n}\r\n\r\ninterface IGanttConfig {\r\n\tlayout: ILayout;\r\n\tlinks: {\r\n\t\tfinish_to_start: \"0\";\r\n\t\tstart_to_start: \"1\";\r\n\t\tfinish_to_finish: \"2\";\r\n\t\tstart_to_finish: \"3\";\r\n\t};\r\n\ttypes: {\r\n\t\ttask: string;\r\n\t\tproject: string;\r\n\t\tmilestone: string;\r\n\t};\r\n\tauto_types: boolean;\r\n\tduration_unit: DurationUnits;\r\n\twork_time: boolean;\r\n\tcorrect_work_time: boolean;\r\n\tskip_off_time: boolean;\r\n\tcascade_delete: boolean;\r\n\tautosize: boolean | string;\r\n\tautoscroll: boolean;\r\n\tshow_links: boolean;\r\n\tshow_task_cells: boolean;\r\n\tautosize_min_width: number;\r\n\tautoscroll_speed: number;\r\n\tdeepcopy_on_parse: boolean;\r\n\tstatic_background: boolean;\r\n\tstatic_background_cells: boolean;\r\n\tbranch_loading: boolean;\r\n\tbranch_loading_property: string;\r\n\tshow_loading: boolean;\r\n\tshow_chart: boolean;\r\n\tshow_grid: boolean;\r\n\tmin_duration: number;\r\n\tdate_format: string; // use instead xml_date\r\n\txml_date?: string; // deprecated\r\n\tstart_on_monday: boolean;\r\n\tserver_utc: boolean;\r\n\tshow_progress: boolean;\r\n\tfit_tasks: boolean;\r\n\tselect_task: boolean;\r\n\tscroll_on_click: boolean;\r\n\tsmart_rendering: boolean;\r\n\tpreserve_scroll: boolean;\r\n\treadonly: boolean;\r\n\tcontainer_resize_timeout: number;\r\n\r\n\t/*grid */\r\n\tdate_grid: string;\r\n\r\n\tdrag_links: boolean;\r\n\tdrag_progress: boolean;\r\n\tdrag_resize: boolean;\r\n\tdrag_project: boolean;\r\n\tdrag_move: boolean;\r\n\tdrag_mode: {\r\n\t\tresize: \"resize\",\r\n\t\tprogress: \"progress\",\r\n\t\tmove: \"move\",\r\n\t\tignore: \"ignore\"\r\n\t};\r\n\tround_dnd_dates: boolean;\r\n\tlink_wrapper_width: number;\r\n\troot_id: string | number;\r\n\r\n\tautofit: boolean;\r\n\tcolumns: IColumnItem[];\r\n\r\n\t/* scale*/\r\n\t/* it will be deprecated */\r\n\tdate_scale?: string;\r\n\tstep?: number;\r\n\tscale_unit?: DurationUnits;\r\n\tsubscales?: IScale[];\r\n\t/* it will be deprecated end */\r\n\r\n\tscales: IScale[];\r\n\r\n\tscale_offset_minimal: boolean;\r\n\r\n\tinherit_scale_class: boolean;\r\n\r\n\r\n\ttime_step: number;\r\n\tduration_step: number;\r\n\r\n\r\n\ttask_date: string;\r\n\ttime_picker: string;\r\n\ttask_attribute: string;\r\n\tlink_attribute: string;\r\n\tlayer_attribute: string;\r\n\tbuttons_left: string[];\r\n\t_migrate_buttons: {\r\n\t\tdhx_save_btn: \"gantt_save_btn\",\r\n\t\tdhx_cancel_btn: \"gantt_cancel_btn\",\r\n\t\tdhx_delete_btn: \"gantt_delete_btn\"\r\n\t};\r\n\r\n\tbuttons_right: string[];\r\n\r\n\r\n\tlightbox: {\r\n\t\tsections?: LightboxSection,\r\n\t\tproject_sections?: LightboxSection,\r\n\t\tmilestone_sections?: LightboxSection\r\n\t};\r\n\tdrag_lightbox: boolean;\r\n\tsort: boolean;\r\n\tdetails_on_create: boolean;\r\n\tdetails_on_dblclick: boolean;\r\n\tinitial_scroll: boolean;\r\n\ttask_scroll_offset: number;\r\n\r\n\torder_branch: boolean;\r\n\torder_branch_free: boolean;\r\n\r\n\t// task_height is deprecated, use 'bar_height` instead\r\n\ttask_height: number | \"full\";\r\n\tbar_height: number | \"full\";\r\n\tmin_column_width: number;\r\n\r\n\t// min width for grid column (when resizing)\r\n\tmin_grid_column_width: number;\r\n\t// name of the attribute with column index for resize element\r\n\tgrid_resizer_column_attribute: string;\r\n\t// name of the attribute with column index for resize element\r\n\t// grid_resizer_attribute: string; // usage of this parameter is not found\r\n\r\n\t// grid width can be increased after the column has been resized\r\n\tkeep_grid_width: boolean;\r\n\r\n\t// grid width can be adjusted\r\n\tgrid_resize: boolean;\r\n\tgrid_elastic_columns: boolean;\r\n\tshow_tasks_outside_timescale: boolean;\r\n\tshow_unscheduled: boolean;\r\n\treadonly_property: string;\r\n\teditable_property: string;\r\n\tcalendar_property: string;\r\n\tresource_calendars: object;\r\n\tdynamic_resource_calendars: boolean;\r\n\tinherit_calendar: boolean;\r\n\ttype_renderers: object;\r\n\r\n\tresize_rows: boolean;\r\n\t// name of the attribute with row index for resize element\r\n\ttask_grid_row_resizer_attribute: string;\r\n\t// min height for row (when resizing)\r\n\tmin_task_grid_row_height: number;\r\n\r\n\topen_tree_initially: boolean;\r\n\toptimize_render: boolean;\r\n\tprevent_default_scroll: boolean;\r\n\tshow_errors: boolean;\r\n\twai_aria_attributes: boolean;\r\n\tsmart_scales: boolean;\r\n\trtl: boolean;\r\n\tplaceholder_task: boolean | object;\r\n\thorizontal_scroll_key: TModifierKeys;\r\n\tdrag_timeline: {\r\n\t\tuseKey: TModifierKeys;\r\n\t\tignore: string;\r\n\t};\r\n\tdrag_multiple: boolean;\r\n\tcsp: TCsp;\r\n\r\n\tresources?: IResourceConfig;\r\n}\r\n\r\nmodule.exports = () => {\r\n\tconst result: IGanttConfig = {\r\n\t\tlayout: {\r\n\t\t\tcss: \"gantt_container\",\r\n\t\t\trows: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcols: [\r\n\t\t\t\t\t\t{view: \"grid\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\r\n\t\t\t\t\t\t{resizer: true, width: 1},\r\n\t\t\t\t\t\t{view: \"timeline\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\r\n\t\t\t\t\t\t{view: \"scrollbar\", id: \"scrollVer\"}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{view: \"scrollbar\", id: \"scrollHor\", height: 20}\r\n\t\t\t]\r\n\t\t},\r\n\t\tlinks: {\r\n\t\t\tfinish_to_start: \"0\",\r\n\t\t\tstart_to_start: \"1\",\r\n\t\t\tfinish_to_finish: \"2\",\r\n\t\t\tstart_to_finish: \"3\"\r\n\t\t},\r\n\t\ttypes: {\r\n\t\t\ttask: \"task\",\r\n\t\t\tproject: \"project\",\r\n\t\t\tmilestone: \"milestone\"\r\n\t\t},\r\n\t\tauto_types: false,\r\n\t\tduration_unit: \"day\",\r\n\t\twork_time: false,\r\n\t\tcorrect_work_time: false,\r\n\t\tskip_off_time: false,\r\n\r\n\t\tcascade_delete: true,\r\n\r\n\t\tautosize: false,\r\n\t\tautosize_min_width: 0,\r\n\t\tautoscroll: true,\r\n\t\tautoscroll_speed: 30,\r\n\t\tdeepcopy_on_parse: false,\r\n\t\tshow_links: true,\r\n\t\tshow_task_cells: true,\r\n\t\t// replace backgroung of the task area with a canvas img\r\n\t\tstatic_background: false,\r\n\t\tstatic_background_cells: true,\r\n\t\tbranch_loading: false,\r\n\t\tbranch_loading_property: \"$has_child\",\r\n\t\tshow_loading: false,\r\n\t\tshow_chart: true,\r\n\t\tshow_grid: true,\r\n\t\tmin_duration: 60 * 60 * 1000,\r\n\t\tdate_format: \"%d-%m-%Y %H:%i\", // use instead xml_date\r\n\t\txml_date: undefined, // \"%d-%m-%Y %H:%i\", // deprecated\r\n\t\tstart_on_monday: true,\r\n\t\tserver_utc: false,\r\n\t\tshow_progress: true,\r\n\t\tfit_tasks: false,\r\n\t\tselect_task: true,\r\n\t\tscroll_on_click: true,\r\n\t\tsmart_rendering: true,\r\n\t\tpreserve_scroll: true,\r\n\t\treadonly: false,\r\n\t\tcontainer_resize_timeout: 20,\r\n\r\n\t\t/*grid */\r\n\t\tdate_grid: \"%Y-%m-%d\",\r\n\r\n\t\tdrag_links: true,\r\n\t\tdrag_progress: true,\r\n\t\tdrag_resize: true,\r\n\t\tdrag_project: false,\r\n\t\tdrag_move: true,\r\n\t\tdrag_mode: {\r\n\t\t\tresize: \"resize\",\r\n\t\t\tprogress: \"progress\",\r\n\t\t\tmove: \"move\",\r\n\t\t\tignore: \"ignore\"\r\n\t\t},\r\n\t\tround_dnd_dates: true,\r\n\t\tlink_wrapper_width: 20,\r\n\t\troot_id: 0,\r\n\r\n\t\tautofit: false, // grid column automatic fit grid_width config\r\n\t\tcolumns: [\r\n\t\t\t{name: \"text\", tree: true, width: \"*\", resize: true},\r\n\t\t\t{name: \"start_date\", align: \"center\", resize: true},\r\n\t\t\t{name: \"duration\", align: \"center\"},\r\n\t\t\t{name: \"add\", width: 44}\r\n\t\t],\r\n\r\n\t\t/*scale*/\r\n\r\n\t\tscale_offset_minimal: true,\r\n\t\tinherit_scale_class: false,\r\n\r\n\t\tscales: [\r\n\t\t\t{\r\n\t\t\t\tunit: \"day\",\r\n\t\t\t\tstep: 1,\r\n\t\t\t\tdate: \"%d %M\"\r\n\t\t\t}\r\n\t\t],\r\n// \t\tdate_scale: \"%d %M\",\r\n\r\n\t\ttime_step: 60,\r\n\t\tduration_step: 1,\r\n\t\ttask_date: \"%d %F %Y\",\r\n\t\ttime_picker: \"%H:%i\",\r\n\t\ttask_attribute: \"data-task-id\",\r\n\t\tlink_attribute: \"data-link-id\",\r\n\t\tlayer_attribute: \"data-layer\",\r\n\t\tbuttons_left: [\r\n\t\t\t\"gantt_save_btn\",\r\n\t\t\t\"gantt_cancel_btn\"\r\n\t\t],\r\n\t\t_migrate_buttons: {\r\n\t\t\tdhx_save_btn: \"gantt_save_btn\",\r\n\t\t\tdhx_cancel_btn: \"gantt_cancel_btn\",\r\n\t\t\tdhx_delete_btn: \"gantt_delete_btn\"\r\n\t\t},\r\n\t\tbuttons_right: [\r\n\t\t\t\"gantt_delete_btn\"\r\n\t\t],\r\n\t\tlightbox: {\r\n\t\t\tsections: [\r\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t\t{name: \"time\", type: \"duration\", map_to: \"auto\"}\r\n\t\t\t],\r\n\t\t\tproject_sections: [\r\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\r\n\t\t\t\t{name: \"time\", type: \"duration\", readonly: true, map_to: \"auto\"}\r\n\t\t\t],\r\n\t\t\tmilestone_sections: [\r\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\r\n\t\t\t\t{name: \"time\", type: \"duration\", single_date: true, map_to: \"auto\"}\r\n\t\t\t]\r\n\t\t},\r\n\t\tdrag_lightbox: true,\r\n\t\tsort: false,\r\n\t\tdetails_on_create: true,\r\n\t\tdetails_on_dblclick: true,\r\n\t\tinitial_scroll: true,\r\n\t\ttask_scroll_offset: 100,\r\n\r\n\t\torder_branch: false,\r\n\t\torder_branch_free: false,\r\n\r\n\t\t// task height is deprecated, use 'bar_height' instead\r\n\t\ttask_height: undefined,// number px of 'full' for row height\r\n\t\tbar_height: \"full\",\r\n\t\tmin_column_width: 70,\r\n\r\n\t\t// min width for grid column (when resizing)\r\n\t\tmin_grid_column_width: 70,\r\n\t\t// name of the attribute with column index for resize element\r\n\t\tgrid_resizer_column_attribute: \"data-column-index\",\r\n\t\t// name of the attribute with column index for resize element\r\n\t\t// grid_resizer_attribute: \"grid_resizer\", // - usage of this parameter is not found in code\r\n\r\n\t\t// grid width can be increased after the column has been resized\r\n\t\tkeep_grid_width: false,\r\n\r\n\t\t// grid width can be adjusted\r\n\t\tgrid_resize: false,\r\n\t\tgrid_elastic_columns: false,\r\n\t\tshow_tasks_outside_timescale: false,\r\n\t\tshow_unscheduled: true,\r\n\r\n\t\tresize_rows: false,\r\n\t\t// name of the attribute with row index for resize element\r\n\t\ttask_grid_row_resizer_attribute: \"data-row-index\",\r\n\t\t// min height for row (when resizing)\r\n\t\tmin_task_grid_row_height: 30,\r\n\r\n\t\t//\r\n\t\treadonly_property: \"readonly\",\r\n\t\teditable_property: \"editable\",\r\n\t\tcalendar_property: \"calendar_id\",\r\n\t\tresource_calendars: {},\r\n\t\tdynamic_resource_calendars: false,\r\n\t\tinherit_calendar: false,\r\n\t\ttype_renderers: {},\r\n\r\n\t\topen_tree_initially: false,\r\n\t\toptimize_render: true,\r\n\t\tprevent_default_scroll: false,\r\n\t\tshow_errors: true,\r\n\t\twai_aria_attributes: true,\r\n\t\tsmart_scales: true,\r\n\t\trtl:false,\r\n\t\tplaceholder_task: false,\r\n\t\thorizontal_scroll_key: \"shiftKey\",\r\n\t\tdrag_timeline: {\r\n\t\t\tuseKey: undefined,\r\n\t\t\tignore: \".gantt_task_line, .gantt_task_link\"\r\n\t\t},\r\n\t\tdrag_multiple: true,\r\n\t\tcsp: \"auto\"\r\n\t};\r\n\treturn result;\r\n};\r\n","module.exports = function () {\n var services = {};\n\n function register(name, getter) {\n services[name] = getter;\n }\n\n function getService(name) {\n if (!services[name]) {\n return null;\n }\n\n return services[name]();\n }\n\n function dropService(name) {\n if (services[name]) {\n delete services[name];\n }\n }\n\n var servicesEnum = {};\n return {\n services: servicesEnum,\n setService: register,\n getService: getService,\n dropService: dropService,\n destructor: function destructor() {\n for (var i in services) {\n if (services[i]) {\n var service = services[i];\n\n if (service && service.destructor) {\n service.destructor();\n }\n }\n }\n\n services = null;\n }\n };\n};","export default class ExtensionsManager{\r\n\tprivate _extensions:{[key:string]: GanttPlugin };\r\n\r\n\tconstructor(config: {[key:string]: GanttPlugin }){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension = (name: string, ext: GanttPlugin) => {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension = (name: string): GanttPlugin => {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","module.exports = {\n KEY_CODES: {\n UP: 38,\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39,\n SPACE: 32,\n ENTER: 13,\n DELETE: 46,\n ESC: 27,\n TAB: 9\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction DHXGantt() {\n this.constants = require(\"../constants\");\n this.version = VERSION;\n this.license = LICENSE;\n this.templates = {};\n this.ext = {};\n this.keys = {\n edit_save: this.constants.KEY_CODES.ENTER,\n edit_cancel: this.constants.KEY_CODES.ESC\n };\n}\n\nmodule.exports = function (supportedExtensions) {\n // use a named constructor to make gantt instance discoverable in heap snapshots\n var gantt = new DHXGantt();\n\n var ExtensionManager = require(\"../ext/extension_manager\")[\"default\"];\n\n var extensionManager = new ExtensionManager(supportedExtensions);\n var activePlugins = {};\n\n gantt.plugins = function (config) {\n for (var i in config) {\n if (config[i] && !activePlugins[i]) {\n var plugin = extensionManager.getExtension(i);\n\n if (plugin) {\n plugin(gantt);\n activePlugins[i] = true;\n }\n }\n }\n\n return activePlugins;\n };\n\n gantt.$services = require(\"../core/common/services\")();\n gantt.config = require(\"../core/common/config\")();\n gantt.ajax = require(\"../core/common/ajax\")(gantt);\n gantt.date = require(\"../core/common/date\")(gantt);\n gantt.RemoteEvents = require(\"../core/remote/remote_events\").remoteEvents;\n\n var dnd = require(\"../core/common/dnd\")(gantt);\n\n gantt.$services.setService(\"dnd\", function () {\n return dnd;\n });\n\n var templatesLoader = require(\"../core/common/templates\")(gantt);\n\n gantt.$services.setService(\"templateLoader\", function () {\n return templatesLoader;\n });\n\n require(\"../utils/eventable\")(gantt);\n\n var StateService = require(\"../core/common/state\");\n\n var stateService = new StateService();\n stateService.registerProvider(\"global\", function () {\n var res = {\n min_date: gantt._min_date,\n max_date: gantt._max_date,\n selected_task: null\n }; // do not throw error if getState called from non-initialized gantt\n\n if (gantt.$data && gantt.$data.tasksStore) {\n res.selected_task = gantt.$data.tasksStore.getSelectedId();\n }\n\n return res;\n });\n gantt.getState = stateService.getState;\n gantt.$services.setService(\"state\", function () {\n return stateService;\n });\n\n var utils = require(\"../utils/utils\");\n\n utils.mixin(gantt, utils);\n gantt.Promise = require(\"../utils/promise\");\n gantt.env = require(\"../utils/env\");\n\n require(\"../core/datastore/datastore_hooks\")(gantt);\n\n var DataProcessor = require(\"../core/dataprocessor\");\n\n gantt.dataProcessor = DataProcessor.DEPRECATED_api;\n gantt.createDataProcessor = DataProcessor.createDataProcessor;\n\n require(\"../core/plugins\")(gantt);\n\n require(\"../core/dynamic_loading\")(gantt);\n\n require(\"../core/grid_column_api\")(gantt);\n\n require(\"../core/tasks\")(gantt);\n\n require(\"../core/load\")(gantt);\n\n require(\"../core/worktime/work_time\")(gantt);\n\n require(\"../core/data\")(gantt);\n\n require(\"../publish_helpers/void_script_second\")[\"default\"](gantt);\n\n require(\"../core/data_task_types\")(gantt);\n\n require(\"../core/cached_functions\")(gantt);\n\n require(\"../core/gantt_core\")(gantt);\n\n require(\"../core/destructor\")(gantt);\n\n require(\"../publish_helpers/void_script_third\")[\"default\"](gantt);\n\n var i18n = require(\"../locale\")[\"default\"]();\n\n gantt.i18n = {\n addLocale: i18n.addLocale,\n setLocale: function setLocale(locale) {\n if (typeof locale === \"string\") {\n var localeObject = i18n.getLocale(locale);\n\n if (!localeObject) {\n localeObject = i18n.getLocale(\"en\");\n }\n\n gantt.locale = localeObject;\n } else if (locale) {\n if (!gantt.locale) {\n gantt.locale = locale;\n } else {\n for (var i in locale) {\n if (locale[i] && _typeof(locale[i]) === \"object\") {\n if (!gantt.locale[i]) {\n gantt.locale[i] = {};\n }\n\n gantt.mixin(gantt.locale[i], locale[i], true);\n } else {\n gantt.locale[i] = locale[i];\n }\n }\n }\n }\n },\n getLocale: i18n.getLocale\n };\n gantt.i18n.setLocale(\"en\");\n return gantt;\n};","require(\"css/skins/terrace.less\");\n\nvar factory = require(\"./make_instance_common\");\n\nmodule.exports = function (supportedExtensions) {\n var gantt = factory(supportedExtensions);\n\n if (!gantt.env.isNode) {\n require(\"../core/ui_core\")(gantt);\n }\n\n return gantt;\n};","import { IUndo, IUndoCommand, IUndoCommands, IUndoPropAction, IUndoPropCommand, TActionType, TEntityType, TUndoStack, TUndoValue } from \"./types\";\r\n\r\nconst MAX_UNDO_STEPS = 100;\r\n\r\nexport class Undo implements IUndo {\r\n\r\n\tmaxSteps = MAX_UNDO_STEPS;\r\n\tundoEnabled = true;\r\n\tredoEnabled = true;\r\n\taction: IUndoPropAction = {\r\n\t\tcreate: (commands?: IUndoCommand[]): IUndoCommands => {\r\n\t\t\treturn { commands: (commands ? commands.slice() : []) };\r\n\t\t},\r\n\t\tinvert: (action: IUndoCommands): IUndoCommands => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\tconst revert = gantt.copy(action);\r\n\t\t\tconst commands = this.command;\r\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\r\n\t\t\t\tconst command = revert.commands[i] = commands.invert(revert.commands[i]);\r\n\t\t\t\tif (command.type === commands.type.update || command.type === commands.type.move) {\r\n\t\t\t\t\t[command.value, command.oldValue] = [command.oldValue, command.value];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn revert as IUndoCommands;\r\n\t\t}\r\n\t};\r\n\tcommand: IUndoPropCommand = {\r\n\t\t// entities that require different processing for undoing-redoing changes (gantt.config.undo_types)\r\n\t\tentity: null,\r\n\r\n\t\t// types of traced actions (gantt.config.undo_actions)\r\n\t\ttype: null,\r\n\r\n\t\tcreate: (value: TUndoValue, oldValue: TUndoValue, type: TActionType, entity: TEntityType): IUndoCommand => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\treturn {\r\n\t\t\t\tentity,\r\n\t\t\t\ttype,\r\n\t\t\t\tvalue: gantt.copy(value),\r\n\t\t\t\toldValue: gantt.copy(oldValue || value)\r\n\t\t\t};\r\n\t\t},\r\n\t\tinvert: (command: IUndoCommand): IUndoCommand => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\tconst revert = gantt.copy(command);\r\n\t\t\trevert.type = this.command.inverseCommands(command.type);\r\n\t\t\treturn revert;\r\n\t\t},\r\n\t\tinverseCommands: (command: TActionType): TActionType => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\tconst types = this.command.type;\r\n\t\t\tswitch (command) {\r\n\t\t\t\tcase types.update:\r\n\t\t\t\t\treturn types.update;\r\n\t\t\t\tcase types.remove:\r\n\t\t\t\t\treturn types.add;\r\n\t\t\t\tcase types.add:\r\n\t\t\t\t\treturn types.remove;\r\n\t\t\t\tcase types.move:\r\n\t\t\t\t\treturn types.move;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tgantt.assert(false, \"Invalid command \"+ command);\r\n\t\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate _undoStack = [];\r\n\tprivate _redoStack = [];\r\n\tprivate _gantt: any;\r\n\r\n\tconstructor(gantt: any){\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\tgetUndoStack() {\r\n\t\treturn this._undoStack;\r\n\t}\r\n\tsetUndoStack(stack: []) {\r\n\t\tthis._undoStack = stack;\r\n\t}\r\n\r\n\tgetRedoStack() {\r\n\t\treturn this._redoStack;\r\n\t}\r\n\tsetRedoStack(stack: []) {\r\n\t\tthis._redoStack = stack;\r\n\t}\r\n\r\n\tclearUndoStack() {\r\n\t\tthis._undoStack = [];\r\n\t}\r\n\r\n\tclearRedoStack() {\r\n\t\tthis._redoStack = [];\r\n\t}\r\n\r\n\tupdateConfigs() {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.maxSteps = gantt.config.undo_steps || MAX_UNDO_STEPS;\r\n\t\tthis.command.entity = gantt.config.undo_types;\r\n\t\tthis.command.type = gantt.config.undo_actions;\r\n\t\tthis.undoEnabled = !!gantt.config.undo;\r\n\t\tthis.redoEnabled = !!gantt.config.redo; // GS-873, Redo should work even when the `gantt.config.undo` is disabled.\r\n\t}\r\n\r\n\tundo() {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.updateConfigs();\r\n\t\tif (!this.undoEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst action = this._pop(this._undoStack);\r\n\t\tif (action) {\r\n\t\t\tthis._reorderCommands(action);\r\n\t\t}\r\n\t\tif (gantt.callEvent(\"onBeforeUndo\", [action]) !== false) {\r\n\t\t\tif (action) {\r\n\t\t\t\tthis._applyAction(this.action.invert(action));\r\n\t\t\t\tthis._push(this._redoStack, gantt.copy(action));\r\n\t\t\t\tgantt.callEvent(\"onAfterUndo\", [action]);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tgantt.callEvent(\"onAfterUndo\", [null]);\r\n\t}\r\n\r\n\tredo() {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.updateConfigs();\r\n\t\tif (!this.redoEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst action = this._pop(this._redoStack);\r\n\t\tif (action) {\r\n\t\t\tthis._reorderCommands(action);\r\n\t\t}\r\n\r\n\t\tif (gantt.callEvent(\"onBeforeRedo\", [action]) !== false) {\r\n\t\t\tif (action) {\r\n\t\t\t\tthis._applyAction(action);\r\n\t\t\t\tthis._push(this._undoStack, gantt.copy(action));\r\n\t\t\t\tgantt.callEvent(\"onAfterRedo\", [action]);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tgantt.callEvent(\"onAfterRedo\", [null]);\r\n\t}\r\n\r\n\t// storeUndo:\r\n\tlogAction(action: IUndoCommands) {\r\n\t\tthis._push(this._undoStack, action);\r\n\t\tthis._redoStack = [];\r\n\t}\r\n\r\n\tprivate _push(stack: TUndoStack, action: IUndoCommands): IUndoCommands {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif (!action.commands.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst event = stack === this._undoStack ? \"onBeforeUndoStack\" : \"onBeforeRedoStack\";\r\n\t\tif (gantt.callEvent(event, [action]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// commands can be removed from event handler\r\n\t\tif (!action.commands.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstack.push(action);\r\n\t\twhile (stack.length > this.maxSteps) {\r\n\t\t\tstack.shift();\r\n\t\t}\r\n\t\treturn action;\r\n\t}\r\n\r\n\tprivate _pop(stack: TUndoStack): IUndoCommands {\r\n\t\treturn stack.pop();\r\n\t}\r\n\r\n\tprivate _reorderCommands(action) {\r\n\t\t// firstly process tasks and only then links\r\n\t\t// in order to ensure links are added not earlier than their tasks\r\n\t\t// firstly to 'move' actions and only then updates\r\n\t\tconst weights = { any: 0, link:1, task:2 };\r\n\t\tconst actionWeights = { move: 1, any:0 };\r\n\t\taction.commands.sort(function(a, b) {\r\n\t\t\tif (a.entity === \"task\" && b.entity === \"task\") {\r\n\t\t\t\tif (a.type !== b.type) {\r\n\t\t\t\t\treturn (actionWeights[b.type] || 0) - (actionWeights[a.type] || 0);\r\n\t\t\t\t} else if (a.type === \"move\" && a.oldValue && b.oldValue && b.oldValue.parent === a.oldValue.parent) {\r\n\t\t\t\t\treturn a.oldValue.$index - b.oldValue.$index;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst weightA = weights[a.entity] || weights.any;\r\n\t\t\t\tconst weightB = weights[b.entity] || weights.any;\r\n\t\t\t\treturn weightB - weightA;\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _applyAction(action: IUndoCommands) {\r\n\t\tlet command = null;\r\n\t\tconst entities = this.command.entity;\r\n\t\tconst actions = this.command.type;\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst methods = {};\r\n\t\tmethods[entities.task] = {\r\n\t\t\tadd: \"addTask\",\r\n\t\t\tget: \"getTask\",\r\n\t\t\tupdate: \"updateTask\",\r\n\t\t\tremove: \"deleteTask\",\r\n\t\t\tmove: \"moveTask\",\r\n\t\t\tisExists: \"isTaskExists\"\r\n\t\t};\r\n\t\tmethods[entities.link] = {\r\n\t\t\tadd: \"addLink\",\r\n\t\t\tget: \"getLink\",\r\n\t\t\tupdate: \"updateLink\",\r\n\t\t\tremove: \"deleteLink\",\r\n\t\t\tisExists: \"isLinkExists\"\r\n\t\t};\r\n\r\n\t\tgantt.batchUpdate(function() {\r\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\r\n\t\t\t\tcommand = action.commands[i];\r\n\t\t\t\tconst method = methods[command.entity][command.type];\r\n\t\t\t\tconst getMethod = methods[command.entity].get;\r\n\t\t\t\tconst check = methods[command.entity].isExists;\r\n\r\n\t\t\t\tif (command.type === actions.add) {\r\n\t\t\t\t\tgantt[method](command.oldValue, command.oldValue.parent, command.oldValue.$local_index);\r\n\t\t\t\t} else if (command.type === actions.remove) {\r\n\t\t\t\t\tif (gantt[check](command.value.id)) {\r\n\t\t\t\t\t\tgantt[method](command.value.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (command.type === actions.update) {\r\n\t\t\t\t\tconst item = gantt[getMethod](command.value.id);\r\n\t\t\t\t\tfor(const prop in command.value){\r\n\t\t\t\t\t\tif(!prop.startsWith(\"$\") && !prop.startsWith(\"_\")){\r\n\t\t\t\t\t\t\titem[prop] = command.value[prop];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tgantt[method](command.value.id);\r\n\t\t\t\t} else if (command.type === actions.move) {\r\n\t\t\t\t\tgantt[method](command.value.id, command.value.$local_index, command.value.parent);\r\n\t\t\t\t\t// GS-680: We should send the changes to the server after we undo vertical reorder\r\n\t\t\t\t\tgantt.callEvent(\"onRowDragEnd\", [command.value.id]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import { IInlineEditState, IMonitor, IUndo, IUndoCommand, TActionType, TEntityType, TUndoValue } from \"./types\";\r\n\r\nconst noTrack = {\r\n\tonBeforeUndo: \"onAfterUndo\",\r\n\tonBeforeRedo: \"onAfterRedo\"\r\n};\r\n\r\nconst batchActions = [\r\n\t\"onTaskDragStart\",\r\n\t\"onAfterTaskUpdate\",\r\n\t\"onAfterTaskDelete\",\r\n\t\"onBeforeBatchUpdate\"\r\n];\r\n\r\nexport class Monitor implements IMonitor {\r\n\tprivate _batchAction = null;\r\n\tprivate _batchMode = false;\r\n\tprivate _ignore = false;\r\n\tprivate _ignoreMoveEvents = false;\r\n\tprivate _initialTasks = {};\r\n\tprivate _initialLinks = {};\r\n\tprivate _nestedTasks = {};\r\n\tprivate _nestedLinks = {};\r\n\tprivate _timeout;\r\n\tprivate _gantt: any;\r\n\tprivate _undo: IUndo;\r\n\r\n\tconstructor(undo: IUndo, gantt: any) {\r\n\t\tthis._undo = undo;\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._attachEvents();\r\n\t}\r\n\r\n\tstore(id: TaskID | LinkID, type: TEntityType, overwrite: boolean = false) {\r\n\t\tif (type === this._gantt.config.undo_types.task) {\r\n\t\t\treturn this._storeTask(id, overwrite);\r\n\t\t}\r\n\t\tif (type === this._gantt.config.undo_types.link) {\r\n\t\t\treturn this._storeLink(id, overwrite);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\tisMoveEventsIgnored() {\r\n\t\treturn this._ignoreMoveEvents;\r\n\t}\r\n\ttoggleIgnoreMoveEvents(newValue?: boolean) {\r\n\t\tthis._ignoreMoveEvents = newValue || false;\r\n\t}\r\n\tstartIgnore() {\r\n\t\tthis._ignore = true;\r\n\t}\r\n\tstopIgnore() {\r\n\t\tthis._ignore = false;\r\n\t}\r\n\tstartBatchAction() {\r\n\t\t// try catching updates made from event handlers using timeout\r\n\t\tif (!this._timeout){\r\n\t\t\tthis._timeout = setTimeout(() => {\r\n\t\t\t\tthis.stopBatchAction();\r\n\t\t\t\tthis._timeout = null;\r\n\t\t\t}, 10);\r\n\t\t}\r\n\r\n\r\n\t\tif (this._ignore || this._batchMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._batchMode = true;\r\n\t\tthis._batchAction = this._undo.action.create();\r\n\t}\r\n\tstopBatchAction() {\r\n\t\tif (this._ignore) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst undo = this._undo;\r\n\t\tif (this._batchAction) {\r\n\t\t\tundo.logAction(this._batchAction);\r\n\t\t}\r\n\t\tthis._batchMode = false;\r\n\t\tthis._batchAction = null;\r\n\t}\r\n\tonTaskAdded(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.add);\r\n\t\t}\r\n\t}\r\n\tonTaskUpdated(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.update);\r\n\t\t}\r\n\t}\r\n\tonTaskMoved(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\t(task as any).$local_index = this._gantt.getTaskIndex(task.id);\r\n\t\t\tconst oldValue = this.getInitialTask(task.id);\r\n\t\t\tif((task as any).$local_index === oldValue.$local_index &&\r\n\t\t\t\tthis._gantt.getParent(task) === this._gantt.getParent(oldValue)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\tthis._storeEntityCommand(\r\n\t\t\t\ttask,\r\n\t\t\t\tthis.getInitialTask(task.id),\r\n\t\t\t\tthis._undo.command.type.move,\r\n\t\t\t\tthis._undo.command.entity.task\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\tonTaskDeleted(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.remove);\r\n\t\t\tif (this._nestedTasks[task.id]) {\r\n\t\t\t\tconst children = this._nestedTasks[task.id];\r\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\t\t\tthis._storeTaskCommand(children[i], this._undo.command.type.remove);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this._nestedLinks[task.id]) {\r\n\t\t\t\tconst childrenLinks = this._nestedLinks[task.id];\r\n\t\t\t\tfor (let i = 0; i < childrenLinks.length; i++) {\r\n\t\t\t\t\tthis._storeLinkCommand(childrenLinks[i], this._undo.command.type.remove);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tonLinkAdded(link: ILink) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.add);\r\n\t\t}\r\n\t}\r\n\tonLinkUpdated(link: ILink) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.update);\r\n\t\t}\r\n\t}\r\n\tonLinkDeleted(link: ILink) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.remove);\r\n\t\t}\r\n\t}\r\n\tsetNestedTasks(id: TaskID, taskIds: TaskID[]) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet task = null;\r\n\t\tconst tasks = [];\r\n\t\tlet\tlinkIds = this._getLinks(gantt.getTask(id));\r\n\r\n\t\tfor (let i = 0; i < taskIds.length; i++) {\r\n\t\t\ttask = this.setInitialTask(taskIds[i]);\r\n\t\t\tlinkIds = linkIds.concat(this._getLinks(task));\r\n\t\t\ttasks.push(task);\r\n\t\t}\r\n\r\n\t\tconst uniqueLinks = {};\r\n\t\tfor (let i = 0; i < linkIds.length; i++) {\r\n\t\t\tuniqueLinks[linkIds[i]] = true;\r\n\t\t}\r\n\t\tconst links = [];\r\n\t\tfor (const i in uniqueLinks) {\r\n\t\t\tlinks.push(this.setInitialLink(i));\r\n\t\t}\r\n\t\tthis._nestedTasks[id] = tasks;\r\n\t\tthis._nestedLinks[id] = links;\r\n\t}\r\n\tsetInitialTask(id: TaskID, overwrite?: boolean) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif (overwrite || (!this._initialTasks[id] || !this._batchMode)) {\r\n\t\t\tconst task = gantt.copy(gantt.getTask(id));\r\n\t\t\ttask.$index = gantt.getGlobalTaskIndex(id);\r\n\t\t\ttask.$local_index = gantt.getTaskIndex(id);\r\n\t\t\tthis.setInitialTaskObject(id, task);\r\n\t\t}\r\n\t\treturn this._initialTasks[id];\r\n\t}\r\n\tgetInitialTask(id: TaskID) {\r\n\t\treturn this._initialTasks[id];\r\n\t}\r\n\tclearInitialTasks() {\r\n\t\tthis._initialTasks = {};\r\n\t}\r\n\tsetInitialTaskObject(id: TaskID, object: ITask) {\r\n\t\tthis._initialTasks[id] = object;\r\n\t}\r\n\tsetInitialLink(id: LinkID, overwrite?: boolean) {\r\n\t\tif (!this._initialLinks[id] || !this._batchMode) {\r\n\t\t\tthis._initialLinks[id] = this._gantt.copy(this._gantt.getLink(id));\r\n\t\t}\r\n\t\treturn this._initialLinks[id];\r\n\t}\r\n\tgetInitialLink(id: LinkID) {\r\n\t\treturn this._initialLinks[id];\r\n\t}\r\n\tclearInitialLinks() {\r\n\t\tthis._initialLinks = {};\r\n\t}\r\n\tprivate _attachEvents() {\r\n\t\tlet deleteCacheCooldown = null;\r\n\t\tconst gantt = this._gantt;\r\n\r\n\t\tconst saveInitialAll = () => {\r\n\t\t\tif (!deleteCacheCooldown) {\r\n\t\t\t\tdeleteCacheCooldown = setTimeout(() => {\r\n\t\t\t\t\tdeleteCacheCooldown = null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.clearInitialTasks();\r\n\t\t\t\tgantt.eachTask((task: ITask) => {\r\n\t\t\t\t\tthis.setInitialTask(task.id);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.clearInitialLinks();\r\n\t\t\t\tgantt.getLinks().forEach((link: ILink) => {\r\n\t\t\t\t\tthis.setInitialLink(link.id);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst getMoveObjectByTaskId = (id: TaskID) => {\r\n\t\t\treturn gantt.copy(gantt.getTask(id));\r\n\t\t};\r\n\r\n\t\tfor (const i in noTrack) {\r\n\t\t\tgantt.attachEvent(i, () => {\r\n\t\t\t\tthis.startIgnore();\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t\tgantt.attachEvent(noTrack[i], () => {\r\n\t\t\t\tthis.stopIgnore();\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < batchActions.length; i++) {\r\n\t\t\tgantt.attachEvent(batchActions[i], () => {\r\n\t\t\t\tthis.startBatchAction();\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tgantt.attachEvent(\"onParse\", () => {\r\n\t\t\tthis._undo.clearUndoStack();\r\n\t\t\tthis._undo.clearRedoStack();\r\n\t\t\tsaveInitialAll();\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", (id: TaskID, task: ITask) => {\r\n\t\t\tthis.setInitialTask(id, true);\r\n\t\t\tthis.onTaskAdded(task);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", (id: TaskID, task: ITask) => {\r\n\t\t\tthis.onTaskUpdated(task);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", (id: TaskID, task: ITask) => {\r\n\t\t\tthis.onTaskDeleted(task);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterLinkAdd\", (id: LinkID, link: ILink) => {\r\n\t\t\tthis.setInitialLink(id, true);\r\n\t\t\tthis.onLinkAdded(link);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterLinkUpdate\", (id: LinkID, link: ILink) => {\r\n\t\t\tthis.onLinkUpdated(link);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterLinkDelete\", (id: LinkID, link: ILink) => {\r\n\t\t\tthis.onLinkDeleted(link);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onRowDragEnd\", (id: TaskID, target: TaskID) => {\r\n\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\r\n\t\t\tthis.toggleIgnoreMoveEvents();\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", (id: TaskID) => {\r\n\t\t\tthis.store(id, gantt.config.undo_types.task);\r\n\t\t\tconst nested = [];\r\n\r\n\t\t\t// remember task indexes in case their being deleted in a loop, so they could be restored in the correct order\r\n\t\t\tsaveInitialAll();\r\n\r\n\t\t\tgantt.eachTask((task: ITask) => {\r\n\t\t\t\tnested.push(task.id);\r\n\t\t\t}, id);\r\n\t\t\tthis.setNestedTasks(id, nested);\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tconst datastore = gantt.getDatastore(\"task\");\r\n\r\n\t\tdatastore.attachEvent(\"onBeforeItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\r\n\t\t\tif (!this.isMoveEventsIgnored()) {\r\n\t\t\t\tsaveInitialAll();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tdatastore.attachEvent(\"onAfterItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\r\n\t\t\tif (!this.isMoveEventsIgnored()) {\r\n\t\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onRowDragStart\", (id: TaskID, target: TaskID, e: Event) => {\r\n\t\t\tthis.toggleIgnoreMoveEvents(true);\r\n\t\t\tsaveInitialAll();\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskDrag\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\r\n\r\n\t\tgantt.attachEvent(\"onLightbox\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskAutoSchedule\", (task: ITask) => {\r\n\t\t\tthis.store(task.id, gantt.config.undo_types.task);\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tif (gantt.ext.inlineEditors) {\r\n\t\t\tgantt.ext.inlineEditors.attachEvent(\"onEditStart\", (state: IInlineEditState) => {\r\n\t\t\t\tthis.store(state.id, gantt.config.undo_types.task);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _storeCommand(command: IUndoCommand) {\r\n\t\tconst undo = this._undo;\r\n\t\tundo.updateConfigs();\r\n\r\n\t\tif (!undo.undoEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this._batchMode) {\r\n\t\t\tthis._batchAction.commands.push(command);\r\n\t\t} else {\r\n\t\t\tconst action = undo.action.create([command]);\r\n\t\t\tundo.logAction(action);\r\n\t\t}\r\n\t}\r\n\tprivate _storeEntityCommand(obj: TUndoValue, old: TUndoValue, actionType: TActionType, entityType: TEntityType) {\r\n\t\tconst undo = this._undo;\r\n\t\tconst command = undo.command.create(obj, old, actionType, entityType);\r\n\t\tthis._storeCommand(command);\r\n\t}\r\n\tprivate _storeTaskCommand(obj: ITask, type: TActionType) {\r\n\t\tif(this._gantt.isTaskExists(obj.id)){\r\n\t\t\t(obj as any).$local_index = this._gantt.getTaskIndex(obj.id);\r\n\t\t}\r\n\r\n\t\tthis._storeEntityCommand(obj, this.getInitialTask(obj.id), type, this._undo.command.entity.task);\r\n\t}\r\n\tprivate _storeLinkCommand(obj: ILink, type: TActionType) {\r\n\t\tthis._storeEntityCommand(obj, this.getInitialLink(obj.id), type, this._undo.command.entity.link);\r\n\t}\r\n\tprivate _getLinks(task: ITask) {\r\n\t\treturn task.$source.concat(task.$target);\r\n\t}\r\n\tprivate _storeTask(taskId: TaskID, overwrite: boolean = false) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.setInitialTask(taskId, overwrite);\r\n\t\tgantt.eachTask((child: ITask) => {\r\n\t\t\tthis.setInitialTask(child.id);\r\n\t\t}, taskId);\r\n\t\treturn true;\r\n\t}\r\n\tprivate _storeLink(linkId: LinkID, overwrite: boolean = false) {\r\n\t\tthis.setInitialLink(linkId, overwrite);\r\n\t\treturn true;\r\n\t}\r\n}","import { Monitor } from \"./monitor\";\r\nimport { IMonitor, IUndoCommand, TEntityType, TUndoStack } from \"./types\";\r\nimport { Undo } from \"./undo\";\r\n\r\nexport default function(gantt: any){\r\n\r\nconst _undo = new Undo(gantt);\r\nconst monitor: IMonitor = new Monitor(_undo, gantt);\r\n\r\ngantt.config.undo = true;\r\ngantt.config.redo = true;\r\n\r\n/**\r\n * entities that require different processing for undoing-redoing changes\r\n * @type {{link: string, task: string}}\r\n */\r\ngantt.config.undo_types = {\r\n\tlink: \"link\",\r\n\ttask: \"task\"\r\n};\r\n\r\n/**\r\n * types of traced actions\r\n * @type {{update: string, remove: string, add: string}}\r\n */\r\ngantt.config.undo_actions = {\r\n\tupdate: \"update\",\r\n\tremove: \"remove\", // remove item from datastore\r\n\tadd: \"add\",\r\n\tmove: \"move\" // move task in grid\r\n};\r\n\r\nif (!gantt.ext) {\r\n\tgantt.ext = {};\r\n}\r\n\r\ngantt.ext.undo = {\r\n\tundo: () => _undo.undo(),\r\n\tredo: () => _undo.redo(),\r\n\tgetUndoStack: () => _undo.getUndoStack(),\r\n\tsetUndoStack: (stack:[]) => _undo.setUndoStack(stack),\r\n\tgetRedoStack: () => _undo.getRedoStack(),\r\n\tsetRedoStack: (stack:[]) => _undo.setRedoStack(stack),\r\n\tclearUndoStack: () => _undo.clearUndoStack(),\r\n\tclearRedoStack: () => _undo.clearRedoStack(),\r\n\tsaveState: (id: TaskID | LinkID, type: TEntityType) => monitor.store(id, type, true),\r\n\tgetInitialState: (id: TaskID | LinkID, type: TEntityType) => {\r\n\t\tif(type === gantt.config.undo_types.link){\r\n\t\t\treturn monitor.getInitialLink(id);\r\n\t\t}else{\r\n\t\t\treturn monitor.getInitialTask(id);\r\n\t\t}\r\n\t}\r\n};\r\n\r\ngantt.undo = gantt.ext.undo.undo;\r\ngantt.redo = gantt.ext.undo.redo;\r\ngantt.getUndoStack = gantt.ext.undo.getUndoStack;\r\ngantt.getRedoStack = gantt.ext.undo.getRedoStack;\r\ngantt.clearUndoStack = gantt.ext.undo.clearUndoStack;\r\ngantt.clearRedoStack = gantt.ext.undo.clearRedoStack;\r\n\r\nfunction updTask(task: ITask, oldId: TaskID, newId: TaskID) {\r\n\tif (!task) { return; }\r\n\r\n\tif (task.id === oldId) {\r\n\t\ttask.id = newId;\r\n\t}\r\n\r\n\tif (task.parent === oldId) {\r\n\t\ttask.parent = newId;\r\n\t}\r\n}\r\n\r\nfunction changeTaskCommandId(command: IUndoCommand, oldId: TaskID, newId: TaskID) {\r\n\tupdTask(command.value, oldId, newId);\r\n\tupdTask(command.oldValue, oldId, newId);\r\n}\r\n\r\nfunction updLink(link: ILink, oldTaskId: TaskID, newTaskId: TaskID) {\r\n\tif (!link) { return; }\r\n\tif (link.source === oldTaskId) {\r\n\t\tlink.source = newTaskId;\r\n\t}\r\n\tif (link.target === oldTaskId) {\r\n\t\tlink.target = newTaskId;\r\n\t}\r\n}\r\n\r\nfunction changeLinkCommandId(command: IUndoCommand, oldId: LinkID, newId: LinkID) {\r\n\tupdLink(command.value, oldId, newId);\r\n\tupdLink(command.oldValue, oldId, newId);\r\n}\r\n\r\nfunction updateTasksIds(log: TUndoStack, oldId: TaskID, newId: TaskID) {\r\n\tconst undo = _undo;\r\n\r\n\tfor (let i = 0; i < log.length; i++) {\r\n\t\tconst entry = log[i];\r\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\r\n\t\t\tif (entry.commands[j].entity === undo.command.entity.task) {\r\n\t\t\t\tchangeTaskCommandId(entry.commands[j], oldId, newId);\r\n\t\t\t} else if (entry.commands[j].entity === undo.command.entity.link) {\r\n\t\t\t\tchangeLinkCommandId(entry.commands[j], oldId, newId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateLinksIds(log: TUndoStack, oldId: LinkID, newId: LinkID) {\r\n\tconst undo = _undo;\r\n\r\n\tfor (let i = 0; i < log.length; i++) {\r\n\t\tconst entry = log[i];\r\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\r\n\t\t\tconst command = entry.commands[j];\r\n\t\t\tif (command.entity === undo.command.entity.link) {\r\n\t\t\t\tif (command.value && command.value.id === oldId) {\r\n\t\t\t\t\tcommand.value.id = newId;\r\n\t\t\t\t}\r\n\t\t\t\tif (command.oldValue && command.oldValue.id === oldId) {\r\n\t\t\t\t\tcommand.oldValue.id = newId;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\ngantt.attachEvent(\"onTaskIdChange\", (oldId: TaskID, newId: TaskID) => {\r\n\tconst undo = _undo;\r\n\tupdateTasksIds(undo.getUndoStack(), oldId, newId);\r\n\tupdateTasksIds(undo.getRedoStack(), oldId, newId);\r\n});\r\n\r\ngantt.attachEvent(\"onLinkIdChange\", (oldId: LinkID, newId: LinkID) => {\r\n\tconst undo = _undo;\r\n\tupdateLinksIds(undo.getUndoStack(), oldId, newId);\r\n\tupdateLinksIds(undo.getRedoStack(), oldId, newId);\r\n});\r\n\r\ngantt.attachEvent(\"onGanttReady\", () => {\r\n\t_undo.updateConfigs();\r\n});\r\n\r\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\r\n\r\ninterface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement;\r\n\tprivate _gantt: any;\r\n\r\n\tconstructor(gantt: any){\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"gantt_tooltip\";\r\n\t\t\tgantt._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tgantt._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tgantt._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst gantt = this._gantt;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = gantt.config.tooltip_offset_x;\r\n\t\tconst offsetY = gantt.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of gantt\r\n\t\tif(container === gantt.$task_data){\r\n\t\t\tviewport = gantt.$task;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(gantt.$task);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as domEventsScope from \"../../core/ui/utils/dom_event_scope\";\r\nimport * as domHelpers from \"../../core/ui/utils/dom_helpers\";\r\nimport * as helpers from \"../../utils/helpers\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _gantt: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis.tooltip = new Tooltip(gantt);\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._domEvents = domEventsScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst gantt = this._gantt;\r\n\t\tif(!config.global){\r\n\t\t\troot = gantt.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst gantt = this._gantt;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\r\n\t\tthis.delayShow = helpers.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(gantt.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, gantt.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = helpers.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, gantt.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import {TooltipManager} from \"./tooltipManager\";\r\n\r\nexport default function(gantt: any){\r\n\r\ngantt.config.tooltip_timeout = 30;\r\ngantt.config.tooltip_offset_y = 20;\r\ngantt.config.tooltip_offset_x = 10;\r\ngantt.config.tooltip_hide_timeout = 30;\r\n\r\n\r\n\r\nconst tooltipManager = new TooltipManager(gantt);\r\n\r\ngantt.ext.tooltips = tooltipManager;\r\n\r\ngantt.attachEvent(\"onGanttReady\", function(){\r\n\r\n\ttooltipManager.tooltipFor({\r\n\t\tselector: \"[\"+gantt.config.task_attribute+\"]:not(.gantt_task_row)\",\r\n\t\thtml: (event: MouseEvent) => {\r\n\t\t\tif (gantt.config.touch && !gantt.config.touch_tooltip) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst targetTaskId = gantt.locate(event);\r\n\t\t\tif(gantt.isTaskExists(targetTaskId)){\r\n\t\t\t\tconst task = gantt.getTask(targetTaskId);\r\n\t\t\t\treturn gantt.templates.tooltip_text(task.start_date, task.end_date, task);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tglobal: false\r\n\t});\r\n});\r\n\r\ngantt.attachEvent(\"onDestroy\", function() {\r\n\ttooltipManager.destructor();\r\n});\r\n\r\ngantt.attachEvent(\"onLightbox\", function() {\r\n\ttooltipManager.hideTooltip();\r\n});\r\nconst isLinkCreate = () => {\r\n\tconst state = gantt.getState();\r\n\treturn !!state.link_source_id;\r\n};\r\ngantt.attachEvent(\"onBeforeTooltip\", function() {\r\n\tif (isLinkCreate()){\r\n\t\treturn false;\r\n\t}\r\n});\r\n\r\ngantt.attachEvent(\"onGanttScroll\", function(){\r\n\ttooltipManager.hideTooltip();\r\n});\r\n\r\n}","\r\ninterface IQuickInfoContainer{\r\n\tparent: HTMLElement;\r\n\txViewport: HTMLElement;\r\n\tyViewport: HTMLElement;\r\n}\r\n\r\nexport class QuickInfo {\r\n\tprivate _quickInfoTask: TaskID;\r\n\tprivate _quickInfoBoxId: number | string;\r\n\tprivate _quickInfoBox: HTMLElement;\r\n\tprivate _quickInfoReadonly: boolean | null;\r\n\tprivate _container: HTMLElement;\r\n\tprivate _gantt: any;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\r\n\t// show at coordinates:\r\n\t// show(x: number, y: number)\r\n\t// show for a task:\r\n\t// show(id: TaskID)\r\n\tshow : {\r\n\t\t(x: number, y: number) : void;\r\n\t\t(id: TaskID) : void;\r\n\t} = (id: TaskID | number, y? : number) : void => {\r\n\t\tif (y === undefined) {\r\n\t\t\tthis._showForTask(id);\r\n\t\t} else {\r\n\t\t\tthis._showAtCoordinates(id as number, y);\r\n\t\t}\r\n\t}\r\n\r\n\thide = (forced?: boolean) : any => {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst qi = this._quickInfoBox;\r\n\t\tthis._quickInfoBoxId = 0;\r\n\t\tconst taskId = this._quickInfoTask;\r\n\t\tthis._quickInfoTask = null;\r\n\r\n\t\tif (qi && qi.parentNode){\r\n\r\n\t\t\tif (gantt.config.quick_info_detached) {\r\n\t\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\r\n\t\t\t\treturn qi.parentNode.removeChild(qi);\r\n\t\t\t}\r\n\r\n\t\t\tqi.className += \" gantt_qi_hidden\";\r\n\t\t\tif (qi.style.right === \"auto\"){\r\n\t\t\t\tqi.style.left = \"-350px\";\r\n\t\t\t} else {\r\n\t\t\t\tqi.style.right = \"-350px\";\r\n\t\t\t}\r\n\r\n\t\t\tif (forced) {\r\n\t\t\t\tqi.style.left = qi.style.right = \"\";\r\n\t\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t\t}\r\n\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNode = (): HTMLElement => {\r\n\t\tif(this._quickInfoBox) {\r\n\t\t\treturn this._quickInfoBox;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tsetContainer = (container: string|HTMLElement): void => {\r\n\t\tif(container){\r\n\t\t\tthis._container = typeof container === \"string\" ? document.getElementById(container) : container;\r\n\t\t}\r\n\t}\r\n\r\n\tsetContent = (content?: IQuickInfoContent) => {\r\n\t\tconst gantt = this._gantt;\r\n\r\n\t\tconst defaultContent = {\r\n\t\t\ttaskId: null,\r\n\t\t\theader: {\r\n\t\t\t\ttitle: \"\",\r\n\t\t\t\tdate: \"\"\r\n\t\t\t},\r\n\t\t\tcontent: \"\",\r\n\t\t\tbuttons: gantt.config.quickinfo_buttons\r\n\t\t};\r\n\r\n\t\tif(!content){\r\n\t\t\tcontent = defaultContent;\r\n\t\t}\r\n\r\n\t\tif(!content.taskId){\r\n\t\t\tcontent.taskId = defaultContent.taskId;\r\n\t\t}\r\n\r\n\t\tif(!content.header){\r\n\t\t\tcontent.header = defaultContent.header;\r\n\t\t}\r\n\r\n\t\tif(!content.header.title){\r\n\t\t\tcontent.header.title = defaultContent.header.title;\r\n\t\t}\r\n\t\tif(!content.header.date){\r\n\t\t\tcontent.header.date = defaultContent.header.date;\r\n\t\t}\r\n\t\tif(!content.content){\r\n\t\t\tcontent.content = defaultContent.content;\r\n\t\t}\r\n\t\tif(!content.buttons){\r\n\t\t\tcontent.buttons = defaultContent.buttons;\r\n\t\t}\r\n\r\n\r\n\t\tlet qi = this.getNode();\r\n\t\tif(!qi){\r\n\t\t\tqi = this._createQuickInfoElement();\r\n\t\t}\r\n\r\n\t\tif(content.taskId){\r\n\t\t\tthis._quickInfoBoxId = content.taskId;\r\n\t\t}\r\n\r\n\t\tconst titleBox = qi.querySelector(\".gantt_cal_qi_title\") as HTMLElement;\r\n\t\tconst titleContent = titleBox.querySelector(\".gantt_cal_qi_tcontent\");\r\n\t\tconst titleDate = titleBox.querySelector(\".gantt_cal_qi_tdate\");\r\n\t\tconst main = qi.querySelector(\".gantt_cal_qi_content\");\r\n\t\tconst controls = qi.querySelector(\".gantt_cal_qi_controls\") as HTMLElement;\r\n\r\n\t\tgantt._waiAria.quickInfoHeader(qi, [content.header.title, content.header.date].join(\" \"));\r\n\r\n\t\ttitleContent.innerHTML = content.header.title;\r\n\t\ttitleDate.innerHTML = content.header.date;\r\n\r\n\t\tif(!content.header.title && !content.header.date){\r\n\t\t\ttitleBox.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\ttitleBox.style.display = \"\";\r\n\t\t}\r\n\t\tmain.innerHTML = content.content;\r\n\r\n\t\tconst buttons = content.buttons;\r\n\t\tif(!buttons.length){\r\n\t\t\tcontrols.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tcontrols.style.display = \"\";\r\n\t\t}\r\n\t\tlet html = \"\";\r\n\t\tfor (let i = 0; i < buttons.length; i++){\r\n\r\n\t\t\tconst ariaAttr = gantt._waiAria.quickInfoButtonAttrString(gantt.locale.labels[buttons[i]]);\r\n\r\n\t\t\thtml += \"<div class=\\\"gantt_qi_big_icon \"+buttons[i]+\"\\\" title=\\\"\"\r\n\t\t\t\t+gantt.locale.labels[buttons[i]]+\"\\\" \" + ariaAttr +\"><div class='gantt_menu_icon \" + buttons[i]\r\n\t\t\t\t+ \"'></div><div>\"+gantt.locale.labels[buttons[i]]+\"</div></div>\";\r\n\t\t}\r\n\t\tcontrols.innerHTML = html;\r\n\r\n\t\tgantt.eventRemove(qi, \"click\", this._qiButtonClickHandler);\r\n\t\tgantt.eventRemove(qi, \"keypress\", this._qiKeyPressHandler);\r\n\r\n\t\tgantt.event(qi, \"click\", this._qiButtonClickHandler);\r\n\t\tgantt.event(qi, \"keypress\", this._qiKeyPressHandler);\r\n\t}\r\n\r\n\tprivate _qiButtonClickHandler = (ev) => {\r\n\t\tev = ev || event;\r\n\t\tthis._qi_button_click(ev.target || ev.srcElement);\r\n\t}\r\n\r\n\tprivate _qiKeyPressHandler = (e) => {\r\n\t\te = e || event;\r\n\t\t// @ts-ignore\r\n\t\tconst code = e.which||event.keyCode;\r\n\t\tif (code === 13 || code === 32){\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._qi_button_click(e.target || e.srcElement);\r\n\t\t\t},1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _showAtCoordinates(x: number, y: number) : void {\r\n\t\tthis.hide(true);\r\n\t\tthis._quickInfoBoxId = 0;\r\n\t\tthis._quickInfoTask = null;\r\n\t\tif(!this._quickInfoBox){\r\n\t\t\tthis._createQuickInfoElement();\r\n\t\t\tthis.setContent();\r\n\t\t}\r\n\r\n\t\tthis._appendAtCoordinates(x, y);\r\n\t\tthis._gantt.callEvent(\"onQuickInfo\", [null]);\r\n\t}\r\n\r\n\tprivate _showForTask(id: TaskID) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif ((\r\n\t\t\tid === this._quickInfoBoxId &&\r\n\t\t\tgantt.utils.dom.isChildOf(this._quickInfoBox, document.body)\r\n\t\t) || !gantt.config.show_quick_info) {\r\n\t\t\t// not show if the quick info is already displayed for this task, or if it shouldn't be displayed\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.hide(true);\r\n\t\tconst offset = 6; // offset TASK <> QI-BOX in 'px'\r\n\t\tconst container = this._getContainer();\r\n\t\tconst pos = this._get_event_counter_part(id, offset, container.xViewport, container.yViewport);\r\n\r\n\t\tif (pos){\r\n\t\t\tthis._quickInfoBox = this._init_quick_info(id);\r\n\t\t\tthis._quickInfoTask = id;\r\n\t\t\tthis._quickInfoBox.className = this._prepare_quick_info_classname(id);\r\n\r\n\t\t\tthis._fill_quick_data(id);\r\n\t\t\tthis._show_quick_info(pos, offset);\r\n\t\t\tgantt.callEvent(\"onQuickInfo\", [id]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _get_event_counter_part(id: TaskID, offset: number, xViewport: HTMLElement, yViewport: HTMLElement) : any {\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet domEv = gantt.getTaskNode(id);\r\n\t\tif (!domEv) {\r\n\t\t\tdomEv = gantt.getTaskRowNode(id);\r\n\t\t\tif (!domEv) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet left = 0;\r\n\t\tconst top = offset + domEv.offsetTop + domEv.offsetHeight;\r\n\r\n\t\tlet node = domEv;\r\n\r\n\t\tif (gantt.utils.dom.isChildOf(node, xViewport)) {\r\n\t\t\twhile (node && node !== xViewport){\r\n\t\t\t\tleft += node.offsetLeft;\r\n\t\t\t\tnode = node.offsetParent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst scroll = gantt.getScrollState();\r\n\r\n\t\tif(node){\r\n\t\t\tconst dx = (left + domEv.offsetWidth/2) - scroll.x > (xViewport.offsetWidth/2) ? 1 : 0;\r\n\t\t\tconst dy = (top + domEv.offsetHeight/2) - scroll.y > (yViewport.offsetHeight/2) ? 1 : 0;\r\n\r\n\t\t\treturn { left, top, dx, dy, width:domEv.offsetWidth, height:domEv.offsetHeight };\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _createQuickInfoElement() : HTMLElement {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst qi = document.createElement(\"div\");\r\n\t\tqi.className += \"gantt_cal_quick_info\";\r\n\t\tgantt._waiAria.quickInfoAttr(qi);\r\n\r\n\t\t// title\r\n\t\tconst ariaAttr = gantt._waiAria.quickInfoHeaderAttrString();\r\n\t\tlet html = \"<div class=\\\"gantt_cal_qi_title\\\" \"+ariaAttr+\">\" +\r\n\t\t\t\"<div class=\\\"gantt_cal_qi_tcontent\\\"></div><div class=\\\"gantt_cal_qi_tdate\\\"></div>\" +\r\n\t\t\t\"</div>\" +\r\n\t\t\t\"<div class=\\\"gantt_cal_qi_content\\\"></div>\";\r\n\r\n\t\t// buttons\r\n\t\thtml += \"<div class=\\\"gantt_cal_qi_controls\\\">\";\r\n\t\thtml += \"</div>\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\r\n\r\n\t\tif (gantt.config.quick_info_detached) {\r\n\t\t\tconst container = this._getContainer();\r\n\t\t\tgantt.event(container.parent, \"scroll\", () => { this.hide(); });\r\n\t\t}\r\n\r\n\t\tthis._quickInfoBox = qi;\r\n\t\treturn qi;\r\n\t}\r\n\r\n\tprivate _init_quick_info(id: TaskID) : HTMLElement {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst task = gantt.getTask(id);\r\n\t\tif(typeof this._quickInfoReadonly === \"boolean\"){\r\n\t\t\tif(gantt.isReadonly(task) !== this._quickInfoReadonly){\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t\tthis._quickInfoBox = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._quickInfoReadonly = gantt.isReadonly(task);\r\n\r\n\t\tif (!this._quickInfoBox){\r\n\t\t\tthis._quickInfoBox = this._createQuickInfoElement();\r\n\t\t}\r\n\r\n\t\treturn this._quickInfoBox;\r\n\t}\r\n\r\n\tprivate _prepare_quick_info_classname(id: TaskID) : string {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst task = gantt.getTask(id);\r\n\r\n\t\tlet css = \"gantt_cal_quick_info\";\r\n\t\tconst template = gantt.templates.quick_info_class(task.start_date, task.end_date, task);\r\n\r\n\t\tif(template){\r\n\t\t\tcss += \" \" + template;\r\n\t\t}\r\n\t\treturn css;\r\n\t}\r\n\r\n\tprivate _fill_quick_data(id: TaskID) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst ev = gantt.getTask(id);\r\n\r\n\t\tthis._quickInfoBoxId = id;\r\n\r\n\t\tlet allowedButtons = [];\r\n\t\tif (this._quickInfoReadonly){\r\n\t\t\tconst buttons = gantt.config.quickinfo_buttons;\r\n\t\t\tconst isEditor = {icon_delete: true, icon_edit: true};\r\n\t\t\tfor (let i = 0; i < buttons.length; i++){\r\n\t\t\t\tif(this._quickInfoReadonly && isEditor[buttons[i]]){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tallowedButtons.push(buttons[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tallowedButtons = gantt.config.quickinfo_buttons;\r\n\t\t}\r\n\r\n\t\tthis.setContent({\r\n\t\t\theader: {\r\n\t\t\t\ttitle: gantt.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\t\t\tdate: gantt.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t\t\t},\r\n\t\t\tcontent: gantt.templates.quick_info_content(ev.start_date, ev.end_date, ev),\r\n\t\t\tbuttons: allowedButtons\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _appendAtCoordinates(x: number, y: number): void {\r\n\t\tconst qi = this._quickInfoBox;\r\n\t\tconst container = this._getContainer();\r\n\t\tif (!qi.parentNode ||\r\n\t\t\tqi.parentNode.nodeName.toLowerCase() === \"#document-fragment\"){ // IE8\r\n\t\t\tcontainer.parent.appendChild(qi);\r\n\t\t}\r\n\r\n\t\tqi.style.left = x + \"px\";\r\n\t\tqi.style.top = y + \"px\";\r\n\t}\r\n\r\n\tprivate _show_quick_info(pos: any, offset: number) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst qi = this._quickInfoBox;\r\n\t\tif (gantt.config.quick_info_detached) {\r\n\t\t\tconst container = this._getContainer();\r\n\t\t\tif (!qi.parentNode ||\r\n\t\t\t\tqi.parentNode.nodeName.toLowerCase() === \"#document-fragment\"){ // IE8\r\n\t\t\t\tcontainer.parent.appendChild(qi);\r\n\t\t\t}\r\n\t\t\tconst width = qi.offsetWidth;\r\n\t\t\tconst popupHeight = qi.offsetHeight;\r\n\r\n\t\t\tconst scrolls = gantt.getScrollState();\r\n\t\t\tconst xViewport = container.xViewport;\r\n\t\t\tconst yViewport = container.yViewport;\r\n\t\t\tconst screenWidth = xViewport.offsetWidth + scrolls.x - width;\r\n\r\n\t\t\tconst relativePopupTop = pos.top - scrolls.y;\r\n\t\t\tconst relativePopupBottom = relativePopupTop + popupHeight;\r\n\r\n\t\t\tlet top = pos.top;\r\n\t\t\tif(relativePopupBottom > yViewport.offsetHeight / 2){\r\n\t\t\t\ttop = pos.top - (popupHeight + pos.height + 2*offset);\r\n\t\t\t\tif(top < scrolls.y && relativePopupBottom <= yViewport.offsetHeight){\r\n\t\t\t\t\ttop = pos.top;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (top < scrolls.y) {\r\n\t\t\t\ttop = scrolls.y;\r\n\t\t\t}\r\n\r\n\t\t\tconst x = Math.min(Math.max(scrolls.x, pos.left - pos.dx*(width - pos.width)), screenWidth);\r\n\t\t\tconst y = top;\r\n\r\n\t\t\tthis._appendAtCoordinates(x, y);\r\n\t\t} else {\r\n\t\t\tqi.style.top = 20 + \"px\";\r\n\t\t\tif (pos.dx === 1){\r\n\t\t\t\tqi.style.right = \"auto\";\r\n\t\t\t\tqi.style.left = \"-300px\";\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tqi.style.left = \"10px\";\r\n\t\t\t\t},1);\r\n\t\t\t} else {\r\n\t\t\t\tqi.style.left = \"auto\";\r\n\t\t\t\tqi.style.right = \"-300px\";\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tqi.style.right = \"10px\";\r\n\t\t\t\t},1);\r\n\t\t\t}\r\n\t\t\tqi.className += \" gantt_qi_\"+(pos.dx === 1 ? \"left\" : \"right\");\r\n\t\t\tgantt.$root.appendChild(qi);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _qi_button_click(node: any) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst box = this._quickInfoBox;\r\n\t\tif (!node || node === box){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst mask = node.className;\r\n\t\tif (mask.indexOf(\"_icon\") !== -1){\r\n\t\t\tconst id = this._quickInfoBoxId;\r\n\t\t\tgantt.$click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else {\r\n\t\t\tthis._qi_button_click(node.parentNode);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _getContainer(): IQuickInfoContainer{\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet container = this._container ? this._container : gantt.$task_data;\r\n\t\tif (container && container.offsetHeight && container.offsetWidth) {\r\n\t\t\treturn {\r\n\t\t\t\tparent: container,\r\n\t\t\t\txViewport: gantt.$task,\r\n\t\t\t\tyViewport: gantt.$task_data\r\n\t\t\t};\r\n\t\t}\r\n\t\tcontainer = this._container ? this._container : gantt.$grid_data;\r\n\t\tif (container && container.offsetHeight && container.offsetWidth) {\r\n\t\t\treturn {\r\n\t\t\t\tparent: container,\r\n\t\t\t\txViewport: gantt.$grid,\r\n\t\t\t\tyViewport: gantt.$grid_data\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tparent: this._container ? this._container : gantt.$layout,\r\n\t\t\txViewport: gantt.$layout,\r\n\t\t\tyViewport: gantt.$layout\r\n\t\t};\r\n\t}\r\n}\r\n","import { QuickInfo } from \"./quickInfo\";\r\n\r\nexport default function(gantt: any){\r\n\r\nif (!gantt.ext) {\r\n\tgantt.ext = {};\r\n}\r\ngantt.ext.quickInfo = new QuickInfo(gantt);\r\n\r\ngantt.config.quickinfo_buttons = [\"icon_delete\",\"icon_edit\"];\r\ngantt.config.quick_info_detached = true;\r\ngantt.config.show_quick_info = true;\r\n\r\ngantt.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };\r\ngantt.templates.quick_info_content = function(start, end, ev){ return ev.details || ev.text; };\r\ngantt.templates.quick_info_date = function(start, end, ev){\r\n\treturn gantt.templates.task_time(start, end, ev);\r\n};\r\ngantt.templates.quick_info_class = function(start, end, task){ return \"\"; };\r\n\r\ngantt.attachEvent(\"onTaskClick\", function(id,e){\r\n\t// GS-1460 Don't show Quick Info when clicking on the \"+\" button\r\n\tif (!gantt.utils.dom.closest(e.target, \".gantt_add\")){\r\n\t\tsetTimeout(function() {\r\n\t\t\tgantt.ext.quickInfo.show(id);\r\n\t\t}, 0);\r\n\t}\r\n\r\n\treturn true;\r\n});\r\n\r\nconst events = [\"onViewChange\", \"onLightbox\", \"onBeforeTaskDelete\", \"onBeforeDrag\"];\r\nconst hidingFunction = function(){\r\n\tgantt.ext.quickInfo.hide();\r\n\treturn true;\r\n};\r\nfor (let i=0; i<events.length; i++){\r\n\tgantt.attachEvent(events[i], hidingFunction);\r\n}\r\n// GS-957: We don't want to hide QuickInfo when we click on it.\r\ngantt.attachEvent(\"onEmptyClick\", function(e){\r\n\tlet hideQuickInfo = true;\r\n\tconst parent = document.querySelector(\".gantt_cal_quick_info\");\r\n\tif (parent){\r\n\t\tconst quickInfoClick = gantt.utils.dom.isChildOf(e.target, parent);\r\n\t\tif (quickInfoClick){\r\n\t\t\thideQuickInfo = false;\r\n\t\t}\r\n\t}\r\n\tif (hideQuickInfo){\r\n\t\thidingFunction();\r\n\t}\r\n});\r\nfunction clearQuickInfo() {\r\n\tgantt.ext.quickInfo.hide();\r\n\tgantt.ext.quickInfo._quickInfoBox = null;\r\n\treturn true;\r\n}\r\ngantt.attachEvent(\"onGanttReady\", clearQuickInfo);\r\ngantt.attachEvent(\"onDestroy\", clearQuickInfo);\r\n\r\ngantt.event(window, \"keydown\", function(e){\r\n\tif (e.keyCode === 27){\r\n\t\tgantt.ext.quickInfo.hide();\r\n\t}\r\n});\r\n\r\n}","var _require = require(\"../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nmodule.exports = function (gantt) {\n gantt.config.multiselect = true;\n gantt.config.multiselect_one_level = false;\n gantt._multiselect = {\n _selected: {},\n _one_level: false,\n _active: true,\n _first_selected_when_shift: null,\n getDefaultSelected: function getDefaultSelected() {\n var selected = this.getSelected();\n return selected.length ? selected[selected.length - 1] : null;\n },\n setFirstSelected: function setFirstSelected(id) {\n this._first_selected_when_shift = id;\n },\n getFirstSelected: function getFirstSelected() {\n return this._first_selected_when_shift;\n },\n isActive: function isActive() {\n this.updateState();\n return this._active;\n },\n updateState: function updateState() {\n this._one_level = gantt.config.multiselect_one_level;\n var active = this._active;\n this._active = gantt.config.select_task;\n\n if (this._active != active) {\n this.reset();\n }\n },\n reset: function reset() {\n this._selected = {};\n },\n setLastSelected: function setLastSelected(id) {\n gantt.$data.tasksStore.silent(function () {\n var store = gantt.$data.tasksStore;\n if (id) store.select(id + \"\");else store.unselect(null);\n });\n },\n getLastSelected: function getLastSelected() {\n var last = gantt.$data.tasksStore.getSelectedId();\n if (last && gantt.isTaskExists(last)) return last;\n return null;\n },\n select: function select(id, e) {\n if (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, true, e]) && gantt.callEvent(\"onBeforeTaskSelected\", [id])) {\n this._selected[id] = true;\n this.setLastSelected(id);\n this.afterSelect(id);\n gantt.callEvent(\"onTaskMultiSelect\", [id, true, e]);\n gantt.callEvent(\"onTaskSelected\", [id]);\n return true;\n }\n\n return false;\n },\n toggle: function toggle(id, e) {\n if (this._selected[id]) {\n this.unselect(id, e);\n } else {\n this.select(id, e);\n }\n },\n unselect: function unselect(id, e) {\n if (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, false, e])) {\n this._selected[id] = false;\n if (this.getLastSelected() == id) this.setLastSelected(this.getDefaultSelected());\n this.afterSelect(id);\n gantt.callEvent(\"onTaskMultiSelect\", [id, false, e]);\n gantt.callEvent(\"onTaskUnselected\", [id]);\n }\n },\n isSelected: function isSelected(id) {\n return !!(gantt.isTaskExists(id) && this._selected[id]);\n },\n getSelected: function getSelected() {\n var res = [];\n\n for (var i in this._selected) {\n if (this._selected[i] && gantt.isTaskExists(i)) {\n res.push(i);\n } else {\n this._selected[i] = false;\n }\n }\n\n res.sort(function (a, b) {\n return gantt.getGlobalTaskIndex(a) > gantt.getGlobalTaskIndex(b) ? 1 : -1;\n });\n return res;\n },\n forSelected: function forSelected(callback) {\n var selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n callback(selected[i]);\n }\n },\n isSameLevel: function isSameLevel(id) {\n if (!this._one_level) return true;\n var last = this.getLastSelected();\n if (!last) return true;\n if (!(gantt.isTaskExists(last) && gantt.isTaskExists(id))) return true;\n return !!(gantt.calculateTaskLevel(gantt.getTask(last)) == gantt.calculateTaskLevel(gantt.getTask(id)));\n },\n afterSelect: function afterSelect(id) {\n if (gantt.isTaskExists(id)) {\n // FIXME: quick workaround to prevent re-filtering inside refresh on multiselect\n gantt._quickRefresh(function () {\n gantt.refreshTask(id);\n });\n }\n },\n doSelection: function doSelection(e) {\n if (!this.isActive()) return false; // deny selection when click on 'expand' or 'collapse' icons\n\n if (gantt._is_icon_open_click(e)) return false;\n var target_ev = gantt.locate(e);\n if (!target_ev) return false;\n if (!gantt.callEvent(\"onBeforeMultiSelect\", [e])) return false;\n var selected = this.getSelected();\n var defaultLast = this.getFirstSelected();\n var isLast = false;\n var last = this.getLastSelected();\n var multiSelect = gantt.config.multiselect;\n\n var singleSelection = function () {\n // GS-719: If the multiselect extension is added we still need a way\n // to open the inline editors after clicking on the cells in the grid\n var controller = gantt.ext.inlineEditors;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (gantt.config.inline_editors_multiselect_open && cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n }\n\n this.setFirstSelected(target_ev);\n\n if (!this.isSelected(target_ev)) {\n this.select(target_ev, e);\n }\n\n selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n if (selected[i] !== target_ev) {\n this.unselect(selected[i], e);\n }\n }\n }.bind(this);\n\n var blockSelection = function () {\n if (!last) last = target_ev;else if (target_ev) {\n var first_indx = gantt.getGlobalTaskIndex(this.getFirstSelected());\n var target_indx = gantt.getGlobalTaskIndex(target_ev);\n var last_indx = gantt.getGlobalTaskIndex(last); // clear prev selection\n\n var tmp = last;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n this.unselect(tmp, e);\n tmp = first_indx > last_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n\n tmp = target_ev;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n if (this.select(tmp, e) && !isLast) {\n isLast = true;\n defaultLast = tmp;\n }\n\n tmp = first_indx > target_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n }\n }.bind(this);\n\n if (multiSelect && (e.ctrlKey || e.metaKey)) {\n if (!this.isSelected(target_ev)) this.setFirstSelected(target_ev);\n\n if (target_ev) {\n this.toggle(target_ev, e);\n }\n } else if (multiSelect && e.shiftKey) {\n if (!gantt.isTaskExists(this.getFirstSelected()) || this.getFirstSelected() === null) {\n this.setFirstSelected(target_ev);\n }\n\n if (selected.length) {\n // select a group of tasks\n blockSelection();\n } else {\n // select a task when no task is selected and Shift is pressed\n singleSelection();\n }\n } else {\n // no key press or no multiple selection on the mouse click\n singleSelection();\n }\n\n if (this.isSelected(target_ev)) {\n this.setLastSelected(target_ev);\n } else if (defaultLast) {\n if (target_ev == last) this.setLastSelected(e.shiftKey ? defaultLast : this.getDefaultSelected());\n } else {\n this.setLastSelected(null);\n }\n\n if (!this.getSelected().length) this.setLastSelected(null);\n if (!this.getLastSelected() || !this.isSelected(this.getFirstSelected())) this.setFirstSelected(this.getLastSelected());\n return true;\n }\n };\n\n (function () {\n var old_selectTask = gantt.selectTask;\n\n gantt.selectTask = function (id) {\n id = replaceValidZeroId(id, this.config.root_id);\n if (!id) return false;\n var multiselect = gantt._multiselect;\n var res = id;\n\n if (multiselect.isActive()) {\n if (multiselect.select(id, null)) {\n multiselect.setLastSelected(id);\n }\n\n multiselect.setFirstSelected(multiselect.getLastSelected());\n } else {\n res = old_selectTask.call(this, id);\n }\n\n return res;\n };\n\n var old_unselectTask = gantt.unselectTask;\n\n gantt.unselectTask = function (id) {\n var multiselect = gantt._multiselect;\n var isActive = multiselect.isActive();\n id = id || multiselect.getLastSelected();\n\n if (id && isActive) {\n multiselect.unselect(id, null);\n if (id == multiselect.getLastSelected()) multiselect.setLastSelected(null);\n gantt.refreshTask(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n\n var res = id;\n if (!isActive) res = old_unselectTask.call(this, id);\n return res;\n };\n\n gantt.toggleTaskSelection = function (id) {\n var multiselect = gantt._multiselect;\n\n if (id && multiselect.isActive()) {\n multiselect.toggle(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n };\n\n gantt.getSelectedTasks = function () {\n var multiselect = gantt._multiselect;\n multiselect.isActive();\n return multiselect.getSelected();\n };\n\n gantt.eachSelectedTask = function (callback) {\n return this._multiselect.forSelected(callback);\n };\n\n gantt.isSelectedTask = function (id) {\n return this._multiselect.isSelected(id);\n };\n\n gantt.getLastSelectedTask = function () {\n return this._multiselect.getLastSelected();\n };\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var old_isSelected = gantt.$data.tasksStore.isSelected;\n\n gantt.$data.tasksStore.isSelected = function (id) {\n if (gantt._multiselect.isActive()) {\n return gantt._multiselect.isSelected(id);\n }\n\n return old_isSelected.call(this, id);\n };\n });\n })();\n\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (gantt.isSelectedTask(id)) {\n multiselect.unselect(id, null);\n multiselect.select(new_id, null);\n }\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (multiselect._selected[id]) {\n multiselect.unselect(id, null);\n multiselect._selected[id] = false;\n multiselect.setLastSelected(multiselect.getDefaultSelected());\n }\n\n multiselect.forSelected(function (task_id) {\n if (!gantt.isTaskExists(task_id)) multiselect.unselect(task_id, null);\n });\n });\n gantt.attachEvent(\"onBeforeTaskMultiSelect\", function (id, state, e) {\n var multiselect = gantt._multiselect;\n\n if (state && multiselect.isActive()) {\n if (multiselect._one_level) {\n return multiselect.isSameLevel(id);\n }\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._multiselect.doSelection(e)) gantt.callEvent(\"onMultiSelect\", [e]);\n return true;\n });\n};","module.exports = function (gantt) {\n if (!gantt._markers) {\n gantt._markers = gantt.createDatastore({\n name: \"marker\",\n initItem: function initItem(marker) {\n marker.id = marker.id || gantt.uid();\n return marker;\n }\n });\n }\n\n gantt.config.show_markers = true;\n\n function render_marker(marker) {\n if (!gantt.config.show_markers) return false;\n if (!marker.start_date) return false;\n var state = gantt.getState();\n if (+marker.start_date > +state.max_date) return;\n if ((!marker.end_date || +marker.end_date < +state.min_date) && +marker.start_date < +state.min_date) return;\n var div = document.createElement(\"div\");\n div.setAttribute(\"data-marker-id\", marker.id);\n var css = \"gantt_marker\";\n if (gantt.templates.marker_class) css += \" \" + gantt.templates.marker_class(marker);\n\n if (marker.css) {\n css += \" \" + marker.css;\n }\n\n if (marker.title) {\n div.title = marker.title;\n }\n\n div.className = css;\n var start = gantt.posFromDate(marker.start_date);\n div.style.left = start + \"px\";\n var markerHeight = Math.max(gantt.getRowTop(gantt.getVisibleTaskCount()), 0) + \"px\";\n\n if (gantt.config.timeline_placeholder) {\n markerHeight = gantt.$container.scrollHeight + \"px\";\n }\n\n div.style.height = markerHeight;\n\n if (marker.end_date) {\n var end = gantt.posFromDate(marker.end_date);\n div.style.width = Math.max(end - start, 0) + \"px\";\n }\n\n if (marker.text) {\n div.innerHTML = \"<div class='gantt_marker_content' >\" + marker.text + \"</div>\";\n }\n\n return div;\n }\n\n function initMarkerArea() {\n if (!gantt.$task_data) return;\n var markerArea = document.createElement(\"div\");\n markerArea.className = \"gantt_marker_area\";\n gantt.$task_data.appendChild(markerArea);\n gantt.$marker_area = markerArea;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n if (!gantt.$marker_area) initMarkerArea();\n });\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.$marker_area) {\n initMarkerArea();\n gantt.renderMarkers();\n }\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n // GS-1304 - markers should attach when layout is initialized, both on gantt.init and gantt.resetLayout\n // wait for \"onBeforeGanttRender\", so all layout elements will be in DOM\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n initMarkerArea();\n var layers = gantt.$services.getService(\"layers\");\n var markerRenderer = layers.createDataRender({\n name: \"marker\",\n defaultContainer: function defaultContainer() {\n return gantt.$marker_area;\n }\n });\n markerRenderer.addLayer(render_marker);\n }, {\n once: true\n });\n });\n\n gantt.getMarker = function (id) {\n if (!this._markers) return null;\n return this._markers.getItem(id);\n };\n\n gantt.addMarker = function (marker) {\n return this._markers.addItem(marker);\n };\n\n gantt.deleteMarker = function (id) {\n if (!this._markers.exists(id)) return false;\n\n this._markers.removeItem(id);\n\n return true;\n };\n\n gantt.updateMarker = function (id) {\n this._markers.refresh(id);\n };\n\n gantt._getMarkers = function () {\n return this._markers.getItems();\n };\n\n gantt.renderMarkers = function () {\n this._markers.refresh();\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.dispatcher = {\n isActive: false,\n activeNode: null,\n globalNode: new gantt.$keyboardNavigation.GanttNode(),\n enable: function enable() {\n this.isActive = true;\n this.setActiveNode(this.getActiveNode());\n },\n disable: function disable() {\n this.isActive = false;\n },\n isEnabled: function isEnabled() {\n return !!this.isActive;\n },\n getDefaultNode: function getDefaultNode() {\n var node;\n\n if (gantt.config.keyboard_navigation_cells) {\n node = new gantt.$keyboardNavigation.TaskCell();\n } else {\n node = new gantt.$keyboardNavigation.TaskRow();\n }\n\n if (!node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n setDefaultNode: function setDefaultNode() {\n this.setActiveNode(this.getDefaultNode());\n },\n getActiveNode: function getActiveNode() {\n var node = this.activeNode;\n\n if (node && !node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n fromDomElement: function fromDomElement(e) {\n var inputs = [gantt.$keyboardNavigation.TaskRow, gantt.$keyboardNavigation.TaskCell, gantt.$keyboardNavigation.HeaderCell];\n\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].prototype.fromDomElement) {\n var node = inputs[i].prototype.fromDomElement(e);\n if (node) return node;\n }\n }\n\n return null;\n },\n focusGlobalNode: function focusGlobalNode() {\n this.blurNode(this.globalNode);\n this.focusNode(this.globalNode);\n },\n setActiveNode: function setActiveNode(el) {\n //console.trace()\n var focusChanged = true;\n\n if (this.activeNode) {\n if (this.activeNode.compareTo(el)) {\n focusChanged = false;\n }\n }\n\n if (this.isEnabled()) {\n if (focusChanged) this.blurNode(this.activeNode);\n this.activeNode = el;\n this.focusNode(this.activeNode, !focusChanged);\n }\n },\n focusNode: function focusNode(el, keptFocus) {\n if (el && el.focus) {\n el.focus(keptFocus);\n }\n },\n blurNode: function blurNode(el) {\n if (el && el.blur) {\n el.blur();\n }\n },\n keyDownHandler: function keyDownHandler(e) {\n if (gantt.$keyboardNavigation.isModal()) return;\n if (!this.isEnabled()) return;\n\n if (e.defaultPrevented) {\n return;\n }\n\n var ganttNode = this.globalNode;\n var command = gantt.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\n var activeElement = this.getActiveNode();\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onKeyDown\", [command, e]) === false) {\n return;\n }\n\n if (!activeElement) {\n this.setDefaultNode();\n } else if (activeElement.findHandler(command)) {\n activeElement.doAction(command, e);\n } else if (ganttNode.findHandler(command)) {\n ganttNode.doAction(command, e);\n }\n },\n _timeout: null,\n awaitsFocus: function awaitsFocus() {\n return this._timeout !== null;\n },\n delay: function delay(callback, _delay) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(gantt.bind(function () {\n this._timeout = null;\n callback();\n }, this), _delay || 1);\n },\n clearDelay: function clearDelay() {\n clearTimeout(this._timeout);\n }\n };\n};","module.exports = function (gantt) {\n (function () {\n var modalsStack = [];\n\n function isModal() {\n return !!modalsStack.length;\n }\n\n function afterPopup(box) {\n setTimeout(function () {\n if (!isModal()) {\n if (!gantt.$destroyed) {\n gantt.focus();\n }\n }\n }, 1);\n }\n\n function startModal(box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n gantt.event(box, \"keydown\", trapFocus);\n modalsStack.push(box); //gantt.$keyboardNavigation.dispatcher.disable();\n }\n\n function endModal() {\n var box = modalsStack.pop();\n\n if (box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n }\n\n afterPopup(box);\n }\n\n function isTopModal(box) {\n return box == modalsStack[modalsStack.length - 1];\n }\n\n function trapFocus(event) {\n var target = event.currentTarget;\n if (!isTopModal(target)) return;\n gantt.$keyboardNavigation.trapFocus(target, event);\n }\n\n function traceLightbox() {\n startModal(gantt.getLightbox());\n }\n\n gantt.attachEvent(\"onLightbox\", traceLightbox);\n gantt.attachEvent(\"onAfterLightbox\", endModal);\n gantt.attachEvent(\"onLightboxChange\", function () {\n endModal();\n traceLightbox();\n });\n gantt.attachEvent(\"onAfterQuickInfo\", function () {\n afterPopup();\n });\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n saveFocus();\n startModal(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function () {\n endModal();\n restoreFocus();\n });\n var focusElement = null;\n\n function saveFocus() {\n focusElement = gantt.utils.dom.getActiveElement();\n }\n\n function restoreFocus() {\n setTimeout(function () {\n if (focusElement) {\n focusElement.focus();\n focusElement = null;\n }\n }, 1);\n }\n\n gantt.$keyboardNavigation.isModal = isModal;\n })();\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n var _require = require(\"../../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\n gantt.$keyboardNavigation.TaskCell = function (taskId, index) {\n taskId = replaceValidZeroId(taskId, gantt.config.root_id);\n\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n this.columnIndex = index || 0; // provided task may not exist, in this case node will be detectes as invalid\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n this.globalIndex = gantt.getGlobalTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskCell.prototype = gantt._compose(gantt.$keyboardNavigation.TaskRow, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.$keyboardNavigation.TaskRow.prototype.isValid.call(this) && !!gantt.getGridColumns()[this.columnIndex];\n },\n fallback: function fallback() {\n var node = gantt.$keyboardNavigation.TaskRow.prototype.fallback.call(this);\n var result = node;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow) {\n var visibleColumns = gantt.getGridColumns();\n var index = this.columnIndex;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n result = new gantt.$keyboardNavigation.TaskCell(node.taskId, index);\n }\n }\n\n return result;\n },\n fromDomElement: function fromDomElement(el) {\n if (!gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n var index = 0;\n var cellElement = domHelpers.locateAttribute(el, \"data-column-index\");\n\n if (cellElement) {\n index = cellElement.getAttribute(\"data-column-index\") * 1;\n }\n\n return new gantt.$keyboardNavigation.TaskCell(taskId, index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n var row = gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n if (!row) return null;\n return row.querySelector(\"[data-column-index='\" + this.columnIndex + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n keys: {\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell(this.columnIndex);\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskCell(prevTask, this.columnIndex);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(nextTask, this.columnIndex));\n }\n },\n \"left\": function left() {\n if (this.columnIndex > 0) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.columnIndex < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex + 1));\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, 0));\n },\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id, this.columnIndex));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(0).id, this.columnIndex));\n }\n }\n }\n });\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.TaskRow = function (taskId) {\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n this.globalIndex = gantt.getGlobalTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskRow.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.isTaskExists(this.taskId) && gantt.getTaskIndex(this.taskId) > -1;\n },\n fallback: function fallback() {\n if (!gantt.getVisibleTaskCount()) {\n var header = new gantt.$keyboardNavigation.HeaderCell();\n if (!header.isValid()) return null;else return header;\n } else {\n var nextIndex = -1; // GS-1393. When Gantt tries to restore the focus, it should rely on the global index\n\n if (gantt.getTaskByIndex(this.globalIndex - 1)) {\n nextIndex = this.globalIndex - 1;\n } else if (gantt.getTaskByIndex(this.globalIndex + 1)) {\n nextIndex = this.globalIndex + 1;\n } else {\n var globalIndex = this.globalIndex;\n\n while (globalIndex >= 0) {\n if (gantt.getTaskByIndex(globalIndex)) {\n nextIndex = globalIndex;\n break;\n }\n\n globalIndex--;\n }\n }\n\n if (nextIndex > -1) {\n return new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(nextIndex).id);\n }\n }\n },\n fromDomElement: function fromDomElement(el) {\n if (gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n return new gantt.$keyboardNavigation.TaskRow(taskId);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n return gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n focus: function focus(keptFocus) {\n if (!keptFocus) {\n var pos = gantt.getTaskPosition(gantt.getTask(this.taskId));\n var height = gantt.getTaskHeight(this.taskId);\n var scroll = gantt.getScrollState();\n var viewWidth;\n\n if (gantt.$task) {\n viewWidth = gantt.$task.offsetWidth;\n } else {\n viewWidth = scroll.inner_width;\n }\n\n var viewHeight;\n\n if (gantt.$grid_data || gantt.$task_data) {\n viewHeight = (gantt.$grid_data || gantt.$task_data).offsetHeight;\n } else {\n viewHeight = scroll.inner_height;\n }\n\n if (pos.top < scroll.y || pos.top + height > scroll.y + viewHeight) {\n gantt.scrollTo(null, pos.top - height * 5);\n } else if (gantt.config.scroll_on_click && gantt.config.show_chart) {\n // horizontal scroll activated\n if (pos.left > scroll.x + viewWidth) {\n // scroll forward to the start of the task\n gantt.scrollTo(pos.left - gantt.config.task_scroll_offset);\n } else if (pos.left + pos.width < scroll.x) {\n // scroll back to the end of the task\n gantt.scrollTo(pos.left + pos.width - gantt.config.task_scroll_offset);\n }\n }\n }\n\n gantt.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this, [keptFocus]); // GS-152 if there are scrollbars with custom names, change their scroll position\n\n scrollGrid();\n\n function scrollGrid() {\n var grid = gantt.$ui.getView(\"grid\");\n var scrollPositionX = parseInt(grid.$grid.scrollLeft);\n var scrollPositionY = parseInt(grid.$grid_data.scrollTop);\n var attachedScrollbarHorizontal = grid.$config.scrollX;\n\n if (attachedScrollbarHorizontal && grid.$config.scrollable) {\n var scrollbarHorizontal = gantt.$ui.getView(attachedScrollbarHorizontal);\n\n if (scrollbarHorizontal) {\n scrollbarHorizontal.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n\n var attachedScrollbarVertical = grid.$config.scrollY;\n\n if (attachedScrollbarVertical) {\n var scrollbarVertical = gantt.$ui.getView(attachedScrollbarVertical);\n\n if (scrollbarVertical) {\n scrollbarVertical.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n }\n },\n keys: {\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(0).id));\n }\n },\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell();\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskRow(prevTask);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(nextTask));\n }\n },\n \"shift+down\": function shiftDown() {\n if (gantt.hasChild(this.taskId) && !gantt.getTask(this.taskId).$open) {\n gantt.open(this.taskId);\n }\n },\n \"shift+up\": function shiftUp() {\n if (gantt.hasChild(this.taskId) && gantt.getTask(this.taskId).$open) {\n gantt.close(this.taskId);\n }\n },\n \"shift+right\": function shiftRight() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var prevId = gantt.getPrevSibling(this.taskId);\n\n if (gantt.isTaskExists(prevId) && !gantt.isChildOf(this.taskId, prevId)) {\n var parent = gantt.getTask(prevId);\n parent.$open = true;\n var result = gantt.moveTask(this.taskId, -1, prevId);\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n \"shift+left\": function shiftLeft() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var parent = gantt.getParent(this.taskId);\n\n if (gantt.isTaskExists(parent)) {\n var result = gantt.moveTask(this.taskId, gantt.getTaskIndex(parent) + 1, gantt.getParent(parent));\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n // select\n \"space\": function space(e) {\n if (!gantt.isSelectedTask(this.taskId)) {\n gantt.selectTask(this.taskId);\n } else {\n gantt.unselectTask(this.taskId);\n }\n },\n // collapse\n \"ctrl+left\": function ctrlLeft(e) {\n gantt.close(this.taskId);\n },\n // expand\n \"ctrl+right\": function ctrlRight(e) {\n gantt.open(this.taskId);\n },\n // delete task\n \"delete\": function _delete(e) {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.$click.buttons[\"delete\"](this.taskId);\n },\n // open lightbox\n \"enter\": function enter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.showLightbox(this.taskId);\n },\n // add subtask\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.TaskRow.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.HeaderCell = function (index) {\n this.index = index || 0;\n };\n\n gantt.$keyboardNavigation.HeaderCell.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) return false;\n }\n\n return !!gantt.getGridColumns()[this.index] || !gantt.getVisibleTaskCount();\n },\n fallback: function fallback() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) {\n return new gantt.$keyboardNavigation.TaskRow();\n }\n\n return null;\n }\n\n var visibleColumns = gantt.getGridColumns();\n var index = this.index;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n fromDomElement: function fromDomElement(el) {\n var cellElement = domHelpers.locateClassName(el, \"gantt_grid_head_cell\");\n\n if (cellElement) {\n var index = 0;\n\n while (cellElement && cellElement.previousSibling) {\n cellElement = cellElement.previousSibling;\n index += 1;\n }\n\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n var cells = gantt.$grid_scale.childNodes;\n return cells[this.index];\n },\n keys: {\n \"left\": function left() {\n if (this.index > 0) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.index < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index + 1));\n }\n },\n \"down\": function down() {\n var taskRow;\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (gantt.isTaskExists(rootLevel[0])) {\n taskRow = rootLevel[0];\n }\n\n if (taskRow) {\n if (gantt.config.keyboard_navigation_cells) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(taskRow, this.index));\n } else {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(taskRow));\n }\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(0));\n },\n // press header button\n \"enter, space\": function enterSpace() {\n var node = domHelpers.getActiveElement();\n node.click();\n },\n // add new task\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.HeaderCell.prototype.bindAll(gantt.$keyboardNavigation.HeaderCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.KeyNavNode = function () {};\n\n gantt.$keyboardNavigation.KeyNavNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n isValid: function isValid() {\n return true;\n },\n fallback: function fallback() {\n return null;\n },\n moveTo: function moveTo(element) {\n gantt.$keyboardNavigation.dispatcher.setActiveNode(element);\n },\n compareTo: function compareTo(b) {\n // good enough comparison of two random objects\n if (!b) return false;\n\n for (var i in this) {\n if (!!this[i] != !!b[i]) return false;\n var canStringifyThis = !!(this[i] && this[i].toString);\n var canStringifyThat = !!(b[i] && b[i].toString);\n if (canStringifyThat != canStringifyThis) return false;\n\n if (!(canStringifyThat && canStringifyThis)) {\n if (b[i] != this[i]) return false;\n } else {\n if (b[i].toString() != this[i].toString()) return false;\n }\n }\n\n return true;\n },\n getNode: function getNode() {},\n focus: function focus() {\n var node = this.getNode();\n if (!node) return;\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeFocus\", [node]) === false) {\n return;\n }\n\n if (node) {\n node.setAttribute(\"tabindex\", \"-1\");\n\n if (!node.$eventAttached) {\n node.$eventAttached = true;\n gantt.event(node, \"focus\", function (e) {\n e.preventDefault();\n return false;\n }, false);\n } //node.className += \" gantt_focused\";\n\n\n if (gantt.utils.dom.isChildOf(document.activeElement, node)) {\n node = document.activeElement;\n }\n\n if (node.focus) node.focus();\n eventFacade.callEvent(\"onFocus\", [this.getNode()]);\n }\n },\n blur: function blur() {\n var node = this.getNode();\n\n if (node) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n eventFacade.callEvent(\"onBlur\", [node]);\n node.setAttribute(\"tabindex\", \"-1\"); //node.className = (node.className || \"\").replace(/ ?gantt_focused/g, \"\");\n }\n }\n });\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.GanttNode = function () {};\n\n gantt.$keyboardNavigation.GanttNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n focus: function focus() {\n gantt.focus();\n },\n blur: function blur() {},\n isEnabled: function isEnabled() {\n return gantt.$container.hasAttribute(\"tabindex\");\n },\n scrollHorizontal: function scrollHorizontal(dir) {\n var date = gantt.dateFromPos(gantt.getScrollState().x);\n var scale = gantt.getScale();\n var step = dir < 0 ? -scale.step : scale.step;\n date = gantt.date.add(date, step, scale.unit);\n gantt.scrollTo(gantt.posFromDate(date));\n },\n scrollVertical: function scrollVertical(dir) {\n var top = gantt.getScrollState().y;\n var step = gantt.config.row_height;\n gantt.scrollTo(null, top + (dir < 0 ? -1 : 1) * step);\n },\n keys: {\n \"alt+left\": function altLeft(e) {\n this.scrollHorizontal(-1);\n },\n \"alt+right\": function altRight(e) {\n this.scrollHorizontal(1);\n },\n \"alt+up\": function altUp(e) {\n this.scrollVertical(-1);\n },\n \"alt+down\": function altDown(e) {\n this.scrollVertical(1);\n },\n // undo\n \"ctrl+z\": function ctrlZ() {\n if (gantt.undo) gantt.undo();\n },\n // redo\n \"ctrl+r\": function ctrlR() {\n if (gantt.redo) gantt.redo();\n }\n }\n });\n gantt.$keyboardNavigation.GanttNode.prototype.bindAll(gantt.$keyboardNavigation.GanttNode.prototype.keys);\n};","module.exports = function (gantt) {\n (function () {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.getFocusableNodes = domHelpers.getFocusableNodes;\n\n gantt.$keyboardNavigation.trapFocus = function trapFocus(root, e) {\n if (e.keyCode != 9) return false;\n var focusable = gantt.$keyboardNavigation.getFocusableNodes(root);\n var currentFocus = domHelpers.getActiveElement();\n var currentIndex = -1;\n\n for (var i = 0; i < focusable.length; i++) {\n if (focusable[i] == currentFocus) {\n currentIndex = i;\n break;\n }\n }\n\n if (e.shiftKey) {\n // back tab\n if (currentIndex <= 0) {\n // go to the last element if we focused on the first\n var lastItem = focusable[focusable.length - 1];\n\n if (lastItem) {\n lastItem.focus();\n e.preventDefault();\n return true;\n }\n }\n } else {\n // forward tab\n if (currentIndex >= focusable.length - 1) {\n // forward tab from last element should go back to the first element\n var firstItem = focusable[0];\n\n if (firstItem) {\n firstItem.focus();\n e.preventDefault();\n return true;\n }\n }\n }\n\n return false;\n };\n })();\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.EventHandler = {\n _handlers: null,\n findHandler: function findHandler(command) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var hash = shortcuts.getHash(command);\n return this._handlers[hash];\n },\n doAction: function doAction(command, e) {\n var handler = this.findHandler(command);\n\n if (handler) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeAction\", [command, e]) === false) {\n return;\n }\n\n handler.call(this, e);\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n },\n bind: function bind(shortcut, handler) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n this._handlers[shortcuts.getHash(commands[i])] = handler;\n }\n },\n unbind: function unbind(shortcut) {\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n if (this._handlers[shortcuts.getHash(commands[i])]) {\n delete this._handlers[shortcuts.getHash(commands[i])];\n }\n }\n },\n bindAll: function bindAll(map) {\n for (var i in map) {\n this.bind(i, map[i]);\n }\n },\n initKeys: function initKeys() {\n if (!this._handlers) this._handlers = {};\n\n if (this.keys) {\n this.bindAll(this.keys);\n }\n }\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.shortcuts = {\n createCommand: function createCommand() {\n return {\n modifiers: {\n \"shift\": false,\n \"alt\": false,\n \"ctrl\": false,\n \"meta\": false\n },\n keyCode: null\n };\n },\n parse: function parse(shortcut) {\n var commands = [];\n var expr = this.getExpressions(this.trim(shortcut));\n\n for (var i = 0; i < expr.length; i++) {\n var words = this.getWords(expr[i]);\n var command = this.createCommand();\n\n for (var j = 0; j < words.length; j++) {\n if (this.commandKeys[words[j]]) {\n command.modifiers[words[j]] = true;\n } else if (this.specialKeys[words[j]]) {\n command.keyCode = this.specialKeys[words[j]];\n } else {\n command.keyCode = words[j].charCodeAt(0);\n }\n }\n\n commands.push(command);\n }\n\n return commands;\n },\n getCommandFromEvent: function getCommandFromEvent(domEvent) {\n var command = this.createCommand();\n command.modifiers.shift = !!domEvent.shiftKey;\n command.modifiers.alt = !!domEvent.altKey;\n command.modifiers.ctrl = !!domEvent.ctrlKey;\n command.modifiers.meta = !!domEvent.metaKey;\n command.keyCode = domEvent.which || domEvent.keyCode;\n\n if (command.keyCode >= 96 && command.keyCode <= 105) {\n // numpad keys 96-105 -> 48-57\n command.keyCode -= 48; //convert numpad number code to regular number code\n }\n\n var printableKey = String.fromCharCode(command.keyCode);\n\n if (printableKey) {\n command.keyCode = printableKey.toLowerCase().charCodeAt(0);\n }\n\n return command;\n },\n getHashFromEvent: function getHashFromEvent(domEvent) {\n return this.getHash(this.getCommandFromEvent(domEvent));\n },\n getHash: function getHash(command) {\n var parts = [];\n\n for (var i in command.modifiers) {\n if (command.modifiers[i]) {\n parts.push(i);\n }\n }\n\n parts.push(command.keyCode);\n return parts.join(this.junctionChar);\n },\n getExpressions: function getExpressions(shortcut) {\n return shortcut.split(this.junctionChar);\n },\n getWords: function getWords(term) {\n return term.split(this.combinationChar);\n },\n trim: function trim(shortcut) {\n return shortcut.replace(/\\s/g, \"\");\n },\n junctionChar: \",\",\n combinationChar: \"+\",\n commandKeys: {\n \"shift\": 16,\n \"alt\": 18,\n \"ctrl\": 17,\n \"meta\": true\n },\n specialKeys: {\n \"backspace\": 8,\n \"tab\": 9,\n \"enter\": 13,\n \"esc\": 27,\n \"space\": 32,\n \"up\": 38,\n \"down\": 40,\n \"left\": 37,\n \"right\": 39,\n \"home\": 36,\n \"end\": 35,\n \"pageup\": 33,\n \"pagedown\": 34,\n \"delete\": 46,\n \"insert\": 45,\n \"plus\": 107,\n \"f1\": 112,\n \"f2\": 113,\n \"f3\": 114,\n \"f4\": 115,\n \"f5\": 116,\n \"f6\": 117,\n \"f7\": 118,\n \"f8\": 119,\n \"f9\": 120,\n \"f10\": 121,\n \"f11\": 122,\n \"f12\": 123\n }\n };\n};","module.exports = function (gantt) {\n var eventable = require(\"../utils/eventable\");\n\n function setupKeyNav(gantt) {\n gantt.config.keyboard_navigation = true;\n gantt.config.keyboard_navigation_cells = false;\n gantt.$keyboardNavigation = {};\n\n gantt._compose = function () {\n var parts = Array.prototype.slice.call(arguments, 0);\n var res = {};\n\n for (var i = 0; i < parts.length; i++) {\n var obj = parts[i];\n\n if (typeof obj == \"function\") {\n obj = new obj();\n }\n\n for (var p in obj) {\n res[p] = obj[p];\n }\n }\n\n return res;\n };\n\n require(\"./keyboard_navigation/common/keyboard_shortcuts\")(gantt);\n\n require(\"./keyboard_navigation/common/eventhandler\")(gantt);\n\n require(\"./keyboard_navigation/common/trap_modal_focus\")(gantt);\n\n require(\"./keyboard_navigation/elements/gantt_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/nav_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/header_cell\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_row\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_cell\")(gantt);\n\n require(\"./keyboard_navigation/modals\")(gantt);\n\n require(\"./keyboard_navigation/core\")(gantt);\n\n var domHelpers = require(\"../core/ui/utils/dom_helpers\");\n\n (function () {\n var dispatcher = gantt.$keyboardNavigation.dispatcher;\n\n dispatcher.isTaskFocused = function (id) {\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow || node instanceof gantt.$keyboardNavigation.TaskCell) {\n if (node.taskId == id) {\n return true;\n }\n }\n\n return false;\n };\n\n var keyDownHandler = function keyDownHandler(e) {\n if (!gantt.config.keyboard_navigation) return; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return;\n\n if (isNoKeyboardNavigationElement(e) || isLightboxElement(e)) {\n return;\n }\n\n return dispatcher.keyDownHandler(e);\n };\n\n var focusHandler = function focusHandler(e) {\n if (dispatcher.$preventDefault) {\n e.preventDefault();\n gantt.$container.blur();\n return false; // do nothing if key-nav focus is already planned\n } else if (!dispatcher.awaitsFocus()) {\n // otherwise - re-focus key-nav element on gantt focus\n dispatcher.focusGlobalNode();\n }\n };\n\n var reFocusActiveNode = function reFocusActiveNode() {\n if (!dispatcher.isEnabled()) return;\n var outsideGantt = !domHelpers.isChildOf(document.activeElement, gantt.$container) && document.activeElement.localName != \"body\";\n var activeNode = dispatcher.getActiveNode();\n if (!activeNode || outsideGantt) return;\n var domElement = activeNode.getNode();\n var top, left;\n\n if (domElement && domElement.parentNode) {\n top = domElement.parentNode.scrollTop;\n left = domElement.parentNode.scrollLeft;\n }\n\n activeNode.focus(true);\n\n if (domElement && domElement.parentNode) {\n domElement.parentNode.scrollTop = top;\n domElement.parentNode.scrollLeft = left;\n }\n };\n\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.config.keyboard_navigation) return;\n reFocusActiveNode();\n });\n gantt.attachEvent(\"onGanttRender\", function () {\n gantt.eventRemove(gantt.$root, \"keydown\", keyDownHandler);\n gantt.eventRemove(gantt.$container, \"focus\", focusHandler);\n gantt.eventRemove(gantt.$container, \"mousedown\", mousedownHandler);\n\n if (gantt.config.keyboard_navigation) {\n gantt.event(gantt.$root, \"keydown\", keyDownHandler);\n gantt.event(gantt.$container, \"focus\", focusHandler);\n gantt.event(gantt.$container, \"mousedown\", mousedownHandler);\n gantt.$container.setAttribute(\"tabindex\", \"0\");\n } else {\n gantt.$container.removeAttribute(\"tabindex\");\n }\n });\n\n function getTaskNodeConstructor() {\n if (gantt.config.keyboard_navigation_cells) {\n return gantt.$keyboardNavigation.TaskCell;\n } else {\n return gantt.$keyboardNavigation.TaskRow;\n }\n }\n\n function isInlineEditorCell(e) {\n return !!domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\");\n } // GS-1445. Cancel keyboard navigation within custom elements\n\n\n function isNoKeyboardNavigationElement(e) {\n return !!domHelpers.closest(e.target, \".no_keyboard_navigation\");\n }\n\n function isLightboxElement(e) {\n return !!domHelpers.closest(e.target, \".gantt_cal_light\");\n }\n\n function mousedownHandler(e) {\n if (!gantt.config.keyboard_navigation) return true; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return true;\n\n if (isNoKeyboardNavigationElement(e)) {\n return;\n }\n\n var focusNode;\n var locateTask = dispatcher.fromDomElement(e);\n\n if (locateTask) {\n //var node = getTaskNodeConstructor();\n if (dispatcher.activeNode instanceof gantt.$keyboardNavigation.TaskCell && domHelpers.isChildOf(e.target, gantt.$task)) {\n locateTask = new gantt.$keyboardNavigation.TaskCell(locateTask.taskId, dispatcher.activeNode.columnIndex);\n }\n\n focusNode = locateTask;\n }\n\n if (focusNode) {\n if (!dispatcher.isEnabled()) {\n dispatcher.activeNode = focusNode;\n } else {\n dispatcher.delay(function () {\n dispatcher.setActiveNode(focusNode);\n });\n }\n } else {\n // empty click should drop focus from gantt, insert of reselecting default node\n dispatcher.$preventDefault = true;\n setTimeout(function () {\n dispatcher.$preventDefault = false;\n }, 300);\n }\n }\n\n var onReady = gantt.attachEvent(\"onGanttReady\", function () {\n // restore focus on repainted tasks\n gantt.detachEvent(onReady);\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function (id) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId == id) {\n reFocusActiveNode();\n }\n }\n });\n\n if (gantt._smart_render) {\n var updateRender = gantt._smart_render._redrawTasks;\n\n gantt._smart_render._redrawTasks = function (renderers, items) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId !== undefined) {\n var focusedItemVisible = false;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id == currentNode.taskId && items[i].start_date) {\n focusedItemVisible = true;\n break;\n }\n }\n\n if (!focusedItemVisible) {\n items.push(gantt.getTask(currentNode.taskId));\n }\n }\n }\n\n var res = updateRender.apply(this, arguments);\n return res;\n };\n }\n });\n var createdTaskId = null;\n var keepFocusOnNewTask = false;\n gantt.attachEvent(\"onTaskCreated\", function (task) {\n createdTaskId = task.id;\n return true;\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (!gantt.config.keyboard_navigation) return true;\n\n if (dispatcher.isEnabled()) {\n // GS-1394. After adding a new task, the focus shouldn't change to the placeholder task\n if (id == createdTaskId) {\n keepFocusOnNewTask = true;\n setTimeout(function () {\n keepFocusOnNewTask = false;\n createdTaskId = null;\n });\n }\n\n if (keepFocusOnNewTask && item.type == gantt.config.types.placeholder) {\n return;\n }\n\n var columnIndex = 0;\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskCell) {\n columnIndex = node.columnIndex;\n }\n\n var nodeConstructor = getTaskNodeConstructor();\n\n if (item.type == gantt.config.types.placeholder && gantt.config.placeholder_task.focusOnCreate === false) {// do not focus on the placeholder task\n } else {\n dispatcher.setActiveNode(new nodeConstructor(id, columnIndex));\n }\n }\n });\n gantt.attachEvent(\"onTaskIdChange\", function (oldId, newId) {\n if (!gantt.config.keyboard_navigation) return true;\n var node = dispatcher.activeNode;\n\n if (dispatcher.isTaskFocused(oldId)) {\n node.taskId = newId;\n }\n\n return true;\n });\n var interval = setInterval(function () {\n if (!gantt.config.keyboard_navigation) return;\n\n if (!dispatcher.isEnabled()) {\n dispatcher.enable();\n }\n\n return;\n }, 500);\n gantt.attachEvent(\"onDestroy\", function () {\n clearInterval(interval);\n });\n\n function getScopeName(obj) {\n if (obj instanceof gantt.$keyboardNavigation.GanttNode) {\n return \"gantt\";\n } else if (obj instanceof gantt.$keyboardNavigation.HeaderCell) {\n return \"headerCell\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskRow) {\n return \"taskRow\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskCell) {\n return \"taskCell\";\n }\n\n return null;\n }\n\n function getScope(mode) {\n var scopes = {\n \"gantt\": gantt.$keyboardNavigation.GanttNode,\n \"headerCell\": gantt.$keyboardNavigation.HeaderCell,\n \"taskRow\": gantt.$keyboardNavigation.TaskRow,\n \"taskCell\": gantt.$keyboardNavigation.TaskCell\n };\n return scopes[mode] || scopes.gantt;\n }\n\n function findVisibleColumnIndex(columnName) {\n var columns = gantt.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n var keyNavFacade = {};\n eventable(keyNavFacade);\n gantt.mixin(keyNavFacade, {\n addShortcut: function addShortcut(shortcut, handler, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.bind(shortcut, handler);\n }\n },\n getShortcutHandler: function getShortcutHandler(shortcut, scope) {\n var commands = gantt.$keyboardNavigation.shortcuts.parse(shortcut);\n\n if (commands.length) {\n return keyNavFacade.getCommandHandler(commands[0], scope);\n }\n },\n getCommandHandler: function getCommandHandler(command, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n if (command) {\n return scopeObject.prototype.findHandler(command);\n }\n }\n },\n removeShortcut: function removeShortcut(shortcut, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.unbind(shortcut);\n }\n },\n focus: function focus(config) {\n var type = config ? config.type : null;\n var constructor = getScope(type);\n var node;\n\n switch (type) {\n case \"taskCell\":\n node = new constructor(config.id, findVisibleColumnIndex(config.column));\n break;\n\n case \"taskRow\":\n node = new constructor(config.id);\n break;\n\n case \"headerCell\":\n node = new constructor(findVisibleColumnIndex(config.column));\n break;\n\n default:\n break;\n }\n\n dispatcher.delay(function () {\n if (node) {\n dispatcher.setActiveNode(node);\n } else {\n dispatcher.enable();\n\n if (!dispatcher.getActiveNode()) {\n dispatcher.setDefaultNode();\n } else {\n if (!dispatcher.awaitsFocus()) {\n dispatcher.enable();\n }\n }\n }\n });\n },\n getActiveNode: function getActiveNode() {\n if (dispatcher.isEnabled()) {\n var node = dispatcher.getActiveNode();\n var scope = getScopeName(node);\n var columns = gantt.getGridColumns();\n\n switch (scope) {\n case \"taskCell\":\n return {\n type: \"taskCell\",\n id: node.taskId,\n column: columns[node.columnIndex].name\n };\n\n case \"taskRow\":\n return {\n type: \"taskRow\",\n id: node.taskId\n };\n\n case \"headerCell\":\n return {\n type: \"headerCell\",\n column: columns[node.index].name\n };\n }\n }\n\n return null;\n }\n });\n gantt.$keyboardNavigation.facade = keyNavFacade;\n gantt.ext.keyboardNavigation = keyNavFacade;\n\n gantt.focus = function () {\n keyNavFacade.focus();\n };\n\n gantt.addShortcut = keyNavFacade.addShortcut;\n gantt.getShortcutHandler = keyNavFacade.getShortcutHandler;\n gantt.removeShortcut = keyNavFacade.removeShortcut;\n })();\n }\n\n setupKeyNav(gantt);\n};","export default function(gantt: any){\r\n\r\ninterface IBody extends HTMLElement {\r\n\tmsRequestFullscreen?: () => void;\r\n\tmozRequestFullScreen?: () => void;\r\n\twebkitRequestFullscreen?: (ALLOW_KEYBOARD_INPUT: any) => void;\r\n}\r\n\r\n\r\ninterface IConsole extends Console {\r\n\twarning?: (str: string) => void;\r\n}\r\n\r\ninterface IDocument extends Document {\r\n\tfullscreenElement: Element;\r\n\tmozFullScreenElement?: Element;\r\n\twebkitFullscreenElement?: Element;\r\n\tmsFullscreenElement?: Element;\r\n\twebkitFullscreenEnabled?: boolean;\r\n\tmozFullScreenEnabled?: boolean;\r\n\tmsFullscreenEnabled?: boolean;\r\n\tmsExitFullscreen?: () => void;\r\n\tmozCancelFullScreen?: () => void;\r\n\twebkitExitFullscreen?: () => void;\r\n}\r\n\r\ninterface IElement extends Element {\r\n\tALLOW_KEYBOARD_INPUT?: boolean;\r\n}\r\n\r\ninterface IElementSizes extends ISizes {\r\n\tmodified: boolean;\r\n}\r\n\r\ninterface ISizes {\r\n\twidth: null | string;\r\n\theight: null | string;\r\n\ttop: null | string;\r\n\tleft: null | string;\r\n\tposition: null | string;\r\n\tzIndex: null | number;\r\n}\r\n\r\nfunction isExpanded() {\r\n\tconst element = ((document as IDocument).fullscreenElement ||\r\n\t\t(document as IDocument).mozFullScreenElement ||\r\n\t\t(document as IDocument).webkitFullscreenElement ||\r\n\t\t(document as IDocument).msFullscreenElement);\r\n\treturn !!(element && element === document.body);\r\n}\r\n\r\nfunction isFullscreenAvailable() {\r\n\ttry {\r\n\t\treturn (document as IDocument).fullscreenEnabled ||\r\n\t\t\t(document as IDocument).webkitFullscreenEnabled ||\r\n\t\t\t(document as IDocument).mozFullScreenEnabled ||\r\n\t\t\t(document as IDocument).msFullscreenEnabled;\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Fullscreen is not available:\", e); // tslint:disable-line:no-console\r\n\t}\r\n}\r\n\r\nconst state = gantt.$services.getService(\"state\");\r\nstate.registerProvider(\"fullscreen\", () => {\r\n\tif (isFullscreenAvailable()){\r\n\t\treturn { fullscreen: isExpanded() };\r\n\t} else {\r\n\t\treturn undefined;\r\n\t}\r\n});\r\n\r\nlet backupBodyPadding = {\r\n\toverflow: null,\r\n\tpadding: null,\r\n\tpaddingTop: null,\r\n\tpaddingRight: null,\r\n\tpaddingBottom: null,\r\n\tpaddingLeft: null\r\n};\r\n\r\nconst backupElementSizes: IElementSizes = {\r\n\twidth: null,\r\n\theight: null,\r\n\ttop: null,\r\n\tleft: null,\r\n\tposition: null,\r\n\tzIndex: null,\r\n\tmodified: false\r\n};\r\n\r\nlet backupPositioning = null;\r\nfunction resetParentPositioning(root){\r\n\tlet parent = root.parentNode;\r\n\tconst positions = [];\r\n\twhile(parent && parent.style){\r\n\t\tpositions.push({\r\n\t\t\telement: parent,\r\n\t\t\toriginalPositioning: parent.style.position\r\n\t\t});\r\n\t\tparent.style.position = \"static\";\r\n\t\tparent = parent.parentNode;\r\n\t}\r\n\treturn positions;\r\n}\r\n\r\nfunction restoreParentPositioning(positions: any[]){\r\n\tpositions.forEach(record => {\r\n\t\trecord.element.style.position = record.originalPositioning;\r\n\t});\r\n}\r\n\r\n// expand gantt root element to fullscreen automatically\r\nfunction setFullScreenSizes() {\r\n\tconst root = gantt.ext.fullscreen.getFullscreenElement();\r\n\tconst body = document.body;\r\n\tupdateSizes(root.style, backupElementSizes);\r\n\tbackupBodyPadding = {\r\n\t\toverflow: body.style.overflow,\r\n\t\tpadding: body.style.padding ? body.style.padding : null,\r\n\t\tpaddingTop: body.style.paddingTop ? body.style.paddingTop : null,\r\n\t\tpaddingRight: body.style.paddingRight ? body.style.paddingRight : null,\r\n\t\tpaddingBottom: body.style.paddingBottom ? body.style.paddingBottom : null,\r\n\t\tpaddingLeft: body.style.paddingLeft ? body.style.paddingLeft : null\r\n\t};\r\n\r\n\tif (body.style.padding) {\r\n\t\tbody.style.padding = \"0\";\r\n\t}\r\n\tif (body.style.paddingTop) {\r\n\t\tbody.style.paddingTop = \"0\";\r\n\t}\r\n\tif (body.style.paddingRight) {\r\n\t\tbody.style.paddingRight = \"0\";\r\n\t}\r\n\tif (body.style.paddingBottom) {\r\n\t\tbody.style.paddingBottom = \"0\";\r\n\t}\r\n\tif (body.style.paddingLeft) {\r\n\t\tbody.style.paddingLeft = \"0\";\r\n\t}\r\n\r\n\tbody.style.overflow = \"hidden\";\r\n\r\n\troot.style.width = \"100vw\";\r\n\troot.style.height = \"100vh\";\r\n\troot.style.top = \"0px\";\r\n\troot.style.left = \"0px\";\r\n\troot.style.position = \"absolute\";\r\n\troot.style.zIndex = 1;\r\n\tbackupElementSizes.modified = true;\r\n\tbackupPositioning = resetParentPositioning(root);\r\n}\r\n\r\nfunction restoreSizes() {\r\n\tconst root = gantt.ext.fullscreen.getFullscreenElement();\r\n\tconst body = document.body;\r\n\tif (backupElementSizes.modified) {\r\n\t\tif (backupBodyPadding.padding) {\r\n\t\t\tbody.style.padding = backupBodyPadding.padding;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingTop) {\r\n\t\t\tbody.style.paddingTop = backupBodyPadding.paddingTop;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingRight) {\r\n\t\t\tbody.style.paddingRight = backupBodyPadding.paddingRight;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingBottom) {\r\n\t\t\tbody.style.paddingBottom = backupBodyPadding.paddingBottom;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingLeft) {\r\n\t\t\tbody.style.paddingLeft = backupBodyPadding.paddingLeft;\r\n\t\t}\r\n\r\n\t\tbody.style.overflow = backupBodyPadding.overflow;\r\n\t\tbackupBodyPadding = {\r\n\t\t\toverflow: null,\r\n\t\t\tpadding: null,\r\n\t\t\tpaddingTop: null,\r\n\t\t\tpaddingRight: null,\r\n\t\t\tpaddingBottom: null,\r\n\t\t\tpaddingLeft: null\r\n\t\t};\r\n\t\tupdateSizes(backupElementSizes, root.style);\r\n\t\tbackupElementSizes.modified = false;\r\n\t}\r\n\trestoreParentPositioning(backupPositioning);\r\n\tbackupPositioning = null;\r\n}\r\n\r\nfunction updateSizes(source: ISizes, target: ISizes) {\r\n\ttarget.width = source.width;\r\n\ttarget.height = source.height;\r\n\ttarget.top = source.top;\r\n\ttarget.left = source.left;\r\n\ttarget.position = source.position;\r\n\ttarget.zIndex = source.zIndex;\r\n}\r\n\r\nfunction addDOMEvents() {\r\n\tgantt.event(document, \"webkitfullscreenchange\", onFullScreenChange);\r\n\tgantt.event(document, \"mozfullscreenchange\", onFullScreenChange);\r\n\tgantt.event(document, \"MSFullscreenChange\", onFullScreenChange);\r\n\t// For IE on Win 10\r\n\tgantt.event(document, \"fullscreenChange\", onFullScreenChange);\r\n\tgantt.event(document, \"fullscreenchange\", onFullScreenChange);\r\n}\r\n\r\nlet expandGantt = false;\r\nfunction onFullScreenChange() {\r\n\tif (!gantt.$container) {\r\n\t\t// do nothing if gantt is not yet initialized\r\n\t\treturn;\r\n\t}\r\n\tlet event: \"onExpand\" | \"onCollapse\";\r\n\tconst isBodyExpanded = isExpanded();\r\n\r\n\tif (isBodyExpanded) {\r\n\t\tif (expandGantt) {\r\n\t\t\tevent = \"onExpand\";\r\n\t\t\tsetFullScreenSizes();\r\n\t\t}\r\n\t} else if (expandGantt) {\r\n\t\texpandGantt = false;\r\n\t\tevent = \"onCollapse\";\r\n\t\trestoreSizes();\r\n\t}\r\n\tsetTimeout(() => {\r\n\t\tgantt.render();\r\n\t});\r\n\tsetTimeout(() => {\r\n\t\tgantt.callEvent(event, [gantt.ext.fullscreen.getFullscreenElement()]);\r\n\t});\r\n}\r\n\r\nfunction cantFullscreen() {\r\n\tif (!gantt.$container) { // check is gantt initialized or not\r\n\t\treturn true;\r\n\t}\r\n\tif (!gantt.ext.fullscreen.getFullscreenElement()) {\r\n\t\treturn true;\r\n\t}\r\n\tif (!isFullscreenAvailable()) {\r\n\t\t// tslint:disable-next-line: no-console\r\n\t\tconst method = (console as IConsole).warning || console.log;\r\n\t\tmethod(\"The `fullscreen` feature not being allowed, or full-screen mode not being supported\");\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}\r\n\r\ngantt.ext.fullscreen = {\r\n\texpand(): void {\r\n\t\tif (cantFullscreen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isExpanded()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!gantt.callEvent(\"onBeforeExpand\", [this.getFullscreenElement()])) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\texpandGantt = true;\r\n\r\n\t\t// we switch body to fullscreen and then expand fullscreen element to viewport\r\n\t\t// we do it to correct display common elements: lightboxes, tooltip etc.\r\n\t\tconst element = document.body as IBody;\r\n\t\tconst requestArguments = element.webkitRequestFullscreen ?\r\n\t\t\t[(Element as unknown as IElement).ALLOW_KEYBOARD_INPUT] : [];\r\n\r\n\t\tconst requestFullscreen = element.msRequestFullscreen ||\r\n\t\t\telement.mozRequestFullScreen ||\r\n\t\t\telement.webkitRequestFullscreen ||\r\n\t\t\telement.requestFullscreen;\r\n\r\n\t\tif (requestFullscreen) {\r\n\t\t\trequestFullscreen.apply(element, requestArguments);\r\n\t\t}\r\n\t},\r\n\tcollapse(): void {\r\n\t\tif (cantFullscreen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!isExpanded()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!gantt.callEvent(\"onBeforeCollapse\", [this.getFullscreenElement()])) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst requestExitFullscreen = (document as IDocument).msExitFullscreen ||\r\n\t\t\t(document as IDocument).mozCancelFullScreen ||\r\n\t\t\t(document as IDocument).webkitExitFullscreen ||\r\n\t\t\t(document as IDocument).exitFullscreen;\r\n\r\n\t\tif (requestExitFullscreen) {\r\n\t\t\trequestExitFullscreen.apply(document);\r\n\t\t}\r\n\t},\r\n\ttoggle(): void {\r\n\t\tif (cantFullscreen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!isExpanded()) {\r\n\t\t\tthis.expand();\r\n\t\t} else {\r\n\t\t\tthis.collapse();\r\n\t\t}\r\n\r\n\t},\r\n\tgetFullscreenElement(): HTMLElement {\r\n\t\treturn gantt.$root;\r\n\t},\r\n};\r\n\r\ngantt.expand = function() {\r\n\tgantt.ext.fullscreen.expand();\r\n};\r\n\r\ngantt.collapse = function(){\r\n\tgantt.ext.fullscreen.collapse();\r\n};\r\n\r\ngantt.attachEvent(\"onGanttReady\", addDOMEvents);\r\n\r\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar stringifyPrimitive = function stringifyPrimitive(v) {\n switch (_typeof(v)) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function (obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n\n if (obj === null) {\n obj = undefined;\n }\n\n if (_typeof(obj) === 'object') {\n return map(objectKeys(obj), function (k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\n if (isArray(obj[k])) {\n return map(obj[k], function (v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map(xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n\n return res;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'; // If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function (qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n var maxKeys = 1000;\n\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length; // maxKeys <= 0 means that we should not limit keys count\n\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr,\n vstr,\n k,\n v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = {\n isString: function isString(arg) {\n return typeof arg === 'string';\n },\n isObject: function isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n },\n isNull: function isNull(arg) {\n return arg === null;\n },\n isNullOrUndefined: function isNullOrUndefined(arg) {\n return arg == null;\n }\n};","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! https://mths.be/punycode v1.4.1 by @mathias */\n;\n\n(function (root) {\n /** Detect free variables */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n var freeModule = (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;;\n /* no condition */\n k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (typeof define == 'function' && _typeof(define.amd) == 'object' && define.amd) {\n define('punycode', function () {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = punycode;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n // in Rhino or a web browser\n root.punycode = punycode;\n }\n})(this);","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n};","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","var Buffer = require('buffer').Buffer;\n\nmodule.exports = function (buf) {\n // If the buffer is backed by a Uint8Array, a faster version will work\n if (buf instanceof Uint8Array) {\n // If the buffer isn't a subarray, return the underlying ArrayBuffer\n if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n } else if (typeof buf.buffer.slice === 'function') {\n // Otherwise we need to get a proper copy\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n }\n\n if (Buffer.isBuffer(buf)) {\n // This is the slow version that will work with any Buffer\n // implementation (even in old browsers)\n var arrayCopy = new Uint8Array(buf.length);\n var len = buf.length;\n\n for (var i = 0; i < len; i++) {\n arrayCopy[i] = buf[i];\n }\n\n return arrayCopy.buffer;\n } else {\n throw new Error('Argument must be a Buffer');\n }\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n/*<replacement>*/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","/**\n * Module exports.\n */\nmodule.exports = deprecate;\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);","'use strict';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\n}","var capability = require('./capability');\n\nvar inherits = require('inherits');\n\nvar response = require('./response');\n\nvar stream = require('readable-stream');\n\nvar toArrayBuffer = require('to-arraybuffer');\n\nvar IncomingMessage = response.IncomingMessage;\nvar rStates = response.readyStates;\n\nfunction decideMode(preferBinary, useFetch) {\n if (capability.fetch && useFetch) {\n return 'fetch';\n } else if (capability.mozchunkedarraybuffer) {\n return 'moz-chunked-arraybuffer';\n } else if (capability.msstream) {\n return 'ms-stream';\n } else if (capability.arraybuffer && preferBinary) {\n return 'arraybuffer';\n } else if (capability.vbArray && preferBinary) {\n return 'text:vbarray';\n } else {\n return 'text';\n }\n}\n\nvar ClientRequest = module.exports = function (opts) {\n var self = this;\n stream.Writable.call(self);\n self._opts = opts;\n self._body = [];\n self._headers = {};\n if (opts.auth) self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'));\n Object.keys(opts.headers).forEach(function (name) {\n self.setHeader(name, opts.headers[name]);\n });\n var preferBinary;\n var useFetch = true;\n\n if (opts.mode === 'disable-fetch' || 'requestTimeout' in opts && !capability.abortController) {\n // If the use of XHR should be preferred. Not typically needed.\n useFetch = false;\n preferBinary = true;\n } else if (opts.mode === 'prefer-streaming') {\n // If streaming is a high priority but binary compatibility and\n // the accuracy of the 'content-type' header aren't\n preferBinary = false;\n } else if (opts.mode === 'allow-wrong-content-type') {\n // If streaming is more important than preserving the 'content-type' header\n preferBinary = !capability.overrideMimeType;\n } else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n // Use binary if text streaming may corrupt data or the content-type header, or for speed\n preferBinary = true;\n } else {\n throw new Error('Invalid value for opts.mode');\n }\n\n self._mode = decideMode(preferBinary, useFetch);\n self._fetchTimer = null;\n self.on('finish', function () {\n self._onFinish();\n });\n};\n\ninherits(ClientRequest, stream.Writable);\n\nClientRequest.prototype.setHeader = function (name, value) {\n var self = this;\n var lowerName = name.toLowerCase(); // This check is not necessary, but it prevents warnings from browsers about setting unsafe\n // headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n // http-browserify did it, so I will too.\n\n if (unsafeHeaders.indexOf(lowerName) !== -1) return;\n self._headers[lowerName] = {\n name: name,\n value: value\n };\n};\n\nClientRequest.prototype.getHeader = function (name) {\n var header = this._headers[name.toLowerCase()];\n\n if (header) return header.value;\n return null;\n};\n\nClientRequest.prototype.removeHeader = function (name) {\n var self = this;\n delete self._headers[name.toLowerCase()];\n};\n\nClientRequest.prototype._onFinish = function () {\n var self = this;\n if (self._destroyed) return;\n var opts = self._opts;\n var headersObj = self._headers;\n var body = null;\n\n if (opts.method !== 'GET' && opts.method !== 'HEAD') {\n if (capability.arraybuffer) {\n body = toArrayBuffer(Buffer.concat(self._body));\n } else if (capability.blobConstructor) {\n body = new global.Blob(self._body.map(function (buffer) {\n return toArrayBuffer(buffer);\n }), {\n type: (headersObj['content-type'] || {}).value || ''\n });\n } else {\n // get utf8 string\n body = Buffer.concat(self._body).toString();\n }\n } // create flattened list of headers\n\n\n var headersList = [];\n Object.keys(headersObj).forEach(function (keyName) {\n var name = headersObj[keyName].name;\n var value = headersObj[keyName].value;\n\n if (Array.isArray(value)) {\n value.forEach(function (v) {\n headersList.push([name, v]);\n });\n } else {\n headersList.push([name, value]);\n }\n });\n\n if (self._mode === 'fetch') {\n var signal = null;\n var fetchTimer = null;\n\n if (capability.abortController) {\n var controller = new AbortController();\n signal = controller.signal;\n self._fetchAbortController = controller;\n\n if ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n self._fetchTimer = global.setTimeout(function () {\n self.emit('requestTimeout');\n if (self._fetchAbortController) self._fetchAbortController.abort();\n }, opts.requestTimeout);\n }\n }\n\n global.fetch(self._opts.url, {\n method: self._opts.method,\n headers: headersList,\n body: body || undefined,\n mode: 'cors',\n credentials: opts.withCredentials ? 'include' : 'same-origin',\n signal: signal\n }).then(function (response) {\n self._fetchResponse = response;\n\n self._connect();\n }, function (reason) {\n global.clearTimeout(self._fetchTimer);\n if (!self._destroyed) self.emit('error', reason);\n });\n } else {\n var xhr = self._xhr = new global.XMLHttpRequest();\n\n try {\n xhr.open(self._opts.method, self._opts.url, true);\n } catch (err) {\n process.nextTick(function () {\n self.emit('error', err);\n });\n return;\n } // Can't set responseType on really old browsers\n\n\n if ('responseType' in xhr) xhr.responseType = self._mode.split(':')[0];\n if ('withCredentials' in xhr) xhr.withCredentials = !!opts.withCredentials;\n if (self._mode === 'text' && 'overrideMimeType' in xhr) xhr.overrideMimeType('text/plain; charset=x-user-defined');\n\n if ('requestTimeout' in opts) {\n xhr.timeout = opts.requestTimeout;\n\n xhr.ontimeout = function () {\n self.emit('requestTimeout');\n };\n }\n\n headersList.forEach(function (header) {\n xhr.setRequestHeader(header[0], header[1]);\n });\n self._response = null;\n\n xhr.onreadystatechange = function () {\n switch (xhr.readyState) {\n case rStates.LOADING:\n case rStates.DONE:\n self._onXHRProgress();\n\n break;\n }\n }; // Necessary for streaming in Firefox, since xhr.response is ONLY defined\n // in onprogress, not in onreadystatechange with xhr.readyState = 3\n\n\n if (self._mode === 'moz-chunked-arraybuffer') {\n xhr.onprogress = function () {\n self._onXHRProgress();\n };\n }\n\n xhr.onerror = function () {\n if (self._destroyed) return;\n self.emit('error', new Error('XHR error'));\n };\n\n try {\n xhr.send(body);\n } catch (err) {\n process.nextTick(function () {\n self.emit('error', err);\n });\n return;\n }\n }\n};\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\n\n\nfunction statusValid(xhr) {\n try {\n var status = xhr.status;\n return status !== null && status !== 0;\n } catch (e) {\n return false;\n }\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n var self = this;\n if (!statusValid(self._xhr) || self._destroyed) return;\n if (!self._response) self._connect();\n\n self._response._onXHRProgress();\n};\n\nClientRequest.prototype._connect = function () {\n var self = this;\n if (self._destroyed) return;\n self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer);\n\n self._response.on('error', function (err) {\n self.emit('error', err);\n });\n\n self.emit('response', self._response);\n};\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n var self = this;\n\n self._body.push(chunk);\n\n cb();\n};\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n var self = this;\n self._destroyed = true;\n global.clearTimeout(self._fetchTimer);\n if (self._response) self._response._destroyed = true;\n if (self._xhr) self._xhr.abort();else if (self._fetchAbortController) self._fetchAbortController.abort();\n};\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n var self = this;\n\n if (typeof data === 'function') {\n cb = data;\n data = undefined;\n }\n\n stream.Writable.prototype.end.call(self, data, encoding, cb);\n};\n\nClientRequest.prototype.flushHeaders = function () {};\n\nClientRequest.prototype.setTimeout = function () {};\n\nClientRequest.prototype.setNoDelay = function () {};\n\nClientRequest.prototype.setSocketKeepAlive = function () {}; // Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\n\n\nvar unsafeHeaders = ['accept-charset', 'accept-encoding', 'access-control-request-headers', 'access-control-request-method', 'connection', 'content-length', 'cookie', 'cookie2', 'date', 'dnt', 'expect', 'host', 'keep-alive', 'origin', 'referer', 'te', 'trailer', 'transfer-encoding', 'upgrade', 'via'];","var http = require('http');\n\nvar url = require('url');\n\nvar https = module.exports;\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key];\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params);\n return http.request.call(this, params, cb);\n};\n\nhttps.get = function (params, cb) {\n params = validateParams(params);\n return http.get.call(this, params, cb);\n};\n\nfunction validateParams(params) {\n if (typeof params === 'string') {\n params = url.parse(params);\n }\n\n if (!params.protocol) {\n params.protocol = 'https:';\n }\n\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"');\n }\n\n return params;\n}","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n\n for (var i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","export default function(gantt: any) {\r\n\r\n\tgantt.ext = gantt.ext || {};\r\n\r\n\tgantt.ext.export_api = gantt.ext.export_api || {\r\n\r\n\t\t_apiUrl: \"https://export.dhtmlx.com/gantt\",\r\n\r\n\t\tgetNodeJSTransport(url: string): { module: {request: any}, defaultPort: number } {\r\n\t\t\tconst protocol = url.split(\"://\")[0];\r\n\t\t\tlet module;\r\n\t\t\tlet defaultPort;\r\n\t\t\tswitch (protocol) {\r\n\t\t\t\tcase \"https\":\r\n\t\t\t\t\tmodule = require(\"https\");\r\n\t\t\t\t\tdefaultPort = 443;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"http\":\r\n\t\t\t\t\tmodule = require(\"http\");\r\n\t\t\t\t\tdefaultPort = 80;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error(`Unsupported protocol: ${protocol}, url: ${url}`);\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmodule,\r\n\t\t\t\tdefaultPort\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t_prepareConfigPDF(config, type){\r\n\t\t\tif (config && config.raw) {\r\n\t\t\t\tlet previousDateRage = null;\r\n\t\t\t\tif (config.start && config.end){\r\n\t\t\t\t\tpreviousDateRage = {\r\n\t\t\t\t\t\tstart_date: gantt.config.start_date,\r\n\t\t\t\t\t\tend_date: gantt.config.end_date,\r\n\t\t\t\t\t};\r\n\t\t\t\t\tgantt.config.start_date = gantt.date.str_to_date(gantt.config.date_format)(config.start);\r\n\t\t\t\t\tgantt.config.end_date = gantt.date.str_to_date(gantt.config.date_format)(config.end);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig = gantt.mixin(config, {\r\n\t\t\t\t\tname: \"gantt.\" + type, data: gantt.ext.export_api._serializeHtml()\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (previousDateRage){\r\n\t\t\t\t\tgantt.config.start_date = previousDateRage.start_date;\r\n\t\t\t\t\tgantt.config.end_date = previousDateRage.end_date;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconfig = gantt.mixin((config || {}), {\r\n\t\t\t\t\tname: \"gantt.\" + type,\r\n\t\t\t\t\tdata: gantt.ext.export_api._serializeAll(),\r\n\t\t\t\t\tconfig: gantt.config\r\n\t\t\t\t});\r\n\t\t\t\tgantt.ext.export_api._fixColumns(config.config.columns);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.version = gantt.version;\r\n\t\t\tgantt.ext.export_api._sendToExport(config, type);\r\n\t\t},\r\n\r\n\t\texportToPDF(config) {\r\n\t\t\tgantt.ext.export_api._prepareConfigPDF(config, \"pdf\");\r\n\t\t},\r\n\r\n\t\texportToPNG(config) {\r\n\t\t\tgantt.ext.export_api._prepareConfigPDF(config, \"png\");\r\n\t\t},\r\n\r\n\r\n\t\texportToICal(config) {\r\n\t\t\tconfig = gantt.mixin((config || {}), {\r\n\t\t\t\tname: \"gantt.ical\",\r\n\t\t\t\tdata: gantt.ext.export_api._serializePlain().data,\r\n\t\t\t\tversion: gantt.version\r\n\t\t\t});\r\n\t\t\tgantt.ext.export_api._sendToExport(config, \"ical\");\r\n\t\t},\r\n\r\n\t\texportToExcel(config) {\r\n\t\t\tconfig = config || {};\r\n\r\n\t\t\tlet tasks;\r\n\t\t\tlet dates;\r\n\t\t\tlet state;\r\n\t\t\tlet scroll;\r\n\t\t\t// GS-2124, we need to get all task nodes to correctly obtain the colors\r\n\t\t\tconst smartRendering = gantt.config.smart_rendering;\r\n\t\t\tif (config.visual === \"base-colors\"){\r\n\t\t\t\tgantt.config.smart_rendering = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (config.start || config.end) {\r\n\t\t\t\tstate = gantt.getState();\r\n\t\t\t\tdates = [gantt.config.start_date, gantt.config.end_date];\r\n\t\t\t\tscroll = gantt.getScrollState();\r\n\t\t\t\tconst convert = gantt.date.str_to_date(gantt.config.date_format);\r\n\t\t\t\ttasks = gantt.eachTask;\r\n\r\n\t\t\t\tif (config.start){\r\n\t\t\t\t\tgantt.config.start_date = convert(config.start);\r\n\t\t\t\t}\r\n\t\t\t\tif (config.end){\r\n\t\t\t\t\tgantt.config.end_date = convert(config.end);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgantt.render();\r\n\t\t\t\tgantt.config.smart_rendering = smartRendering;\r\n\r\n\t\t\t\tgantt.eachTask = gantt.ext.export_api._eachTaskTimed(gantt.config.start_date, gantt.config.end_date);\r\n\t\t\t} else if (config.visual === \"base-colors\"){\r\n\t\t\t\tgantt.render();\r\n\t\t\t\tgantt.config.smart_rendering = smartRendering;\r\n\t\t\t}\r\n\r\n\t\t\tgantt._no_progress_colors = config.visual === \"base-colors\";\r\n\r\n\t\t\tlet data = null;\r\n\t\t\tif (!gantt.env.isNode) {\r\n\t\t\t\tdata = gantt.ext.export_api._serializeTable(config).data;\r\n\t\t\t}\r\n\r\n\t\t\tconfig = gantt.mixin(config, {\r\n\t\t\t\tname: \"gantt.xlsx\",\r\n\t\t\t\ttitle: \"Tasks\",\r\n\t\t\t\tdata,\r\n\t\t\t\tcolumns: gantt.ext.export_api._serializeColumns({ rawDates: true }),\r\n\t\t\t\tversion: gantt.version\r\n\t\t\t});\r\n\r\n\t\t\tif (config.visual){\r\n\t\t\t\tconfig.scales = gantt.ext.export_api._serializeScales(config);\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._sendToExport(config, \"excel\");\r\n\r\n\t\t\tif (config.start || config.end) {\r\n\t\t\t\tgantt.config.start_date = state.min_date;\r\n\t\t\t\tgantt.config.end_date = state.max_date;\r\n\t\t\t\tgantt.eachTask = tasks;\r\n\r\n\t\t\t\tgantt.render();\r\n\t\t\t\tgantt.scrollTo(scroll.x, scroll.y);\r\n\r\n\t\t\t\tgantt.config.start_date = dates[0];\r\n\t\t\t\tgantt.config.end_date = dates[1];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\texportToJSON(config) {\r\n\t\t\tconfig = gantt.mixin((config || {}), {\r\n\t\t\t\tname: \"gantt.json\",\r\n\t\t\t\tdata: gantt.ext.export_api._serializeAll(),\r\n\t\t\t\tconfig: gantt.config,\r\n\t\t\t\tcolumns: gantt.ext.export_api._serializeColumns(),\r\n\t\t\t\tworktime: gantt.ext.export_api._getWorktimeSettings(),\r\n\t\t\t\tversion: gantt.version\r\n\t\t\t});\r\n\t\t\tgantt.ext.export_api._sendToExport(config, \"json\");\r\n\t\t},\r\n\r\n\r\n\t\timportFromExcel(config) {\r\n\t\t\ttry {\r\n\t\t\t\tconst formData = config.data;\r\n\t\t\t\tif (formData instanceof FormData) {\r\n\r\n\t\t\t\t} else if (formData instanceof File) {\r\n\t\t\t\t\tconst data = new FormData();\r\n\t\t\t\t\tdata.append(\"file\", formData);\r\n\t\t\t\t\tconfig.data = data;\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {}\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tgantt.ext.export_api._nodejsImportExcel(config);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.ext.export_api._sendImportAjaxExcel(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\timportFromMSProject(config) {\r\n\t\t\tconst formData = config.data;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tif (formData instanceof FormData) {\r\n\r\n\t\t\t\t} else if (formData instanceof File) {\r\n\t\t\t\t\tconst data = new FormData();\r\n\t\t\t\t\tdata.append(\"file\", formData);\r\n\t\t\t\t\tconfig.data = data;\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {}\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tgantt.ext.export_api._nodejsImportMSP(config);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.ext.export_api._sendImportAjaxMSP(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\timportFromPrimaveraP6(config) {\r\n\t\t\tconfig.type = \"primaveraP6-parse\";\r\n\t\t\treturn gantt.importFromMSProject(config);\r\n\t\t},\r\n\t\texportToMSProject(config) {\r\n\t\t\tconfig = config || {};\r\n\t\t\tconfig.skip_circular_links = config.skip_circular_links === undefined ? true : !!config.skip_circular_links;\r\n\r\n\t\t\tconst oldXmlFormat = gantt.templates.xml_format;\r\n\t\t\tconst oldFormatDate = gantt.templates.format_date;\r\n\t\t\tconst oldXmlDate = gantt.config.xml_date;\r\n\t\t\tconst oldDateFormat = gantt.config.date_format;\r\n\r\n\t\t\tconst exportServiceDateFormat = \"%d-%m-%Y %H:%i:%s\";\r\n\r\n\t\t\tgantt.config.xml_date = exportServiceDateFormat;\r\n\t\t\tgantt.config.date_format = exportServiceDateFormat;\r\n\t\t\tgantt.templates.xml_format = gantt.date.date_to_str(exportServiceDateFormat);\r\n\t\t\tgantt.templates.format_date = gantt.date.date_to_str(exportServiceDateFormat);\r\n\t\t\tconst data = gantt.ext.export_api._serializeAll();\r\n\r\n\t\t\tgantt.ext.export_api._customProjectProperties(data, config);\r\n\r\n\t\t\tgantt.ext.export_api._customTaskProperties(data, config);\r\n\r\n\t\t\tif (config.skip_circular_links) {\r\n\t\t\t\tgantt.ext.export_api._clearRecLinks(data);\r\n\t\t\t}\r\n\r\n\t\t\tconfig = gantt.ext.export_api._exportConfig(data, config);\r\n\r\n\t\t\tgantt.ext.export_api._sendToExport(config, config.type || \"msproject\");\r\n\t\t\tgantt.config.xml_date = oldXmlDate;\r\n\t\t\tgantt.config.date_format = oldDateFormat;\r\n\t\t\tgantt.templates.xml_format = oldXmlFormat;\r\n\t\t\tgantt.templates.format_date = oldFormatDate;\r\n\r\n\t\t\tgantt.config.$custom_data = null;\r\n\t\t\tgantt.config.custom = null;\r\n\t\t},\r\n\r\n\t\texportToPrimaveraP6(config) {\r\n\t\t\tconfig = config || {};\r\n\t\t\tconfig.type = \"primaveraP6\";\r\n\t\t\treturn gantt.exportToMSProject(config);\r\n\t\t},\r\n\r\n\t\t_nodejsImportExcel(config) {\r\n\t\t\t// tslint:disable-next-line no-implicit-dependencies\r\n\t\t\tconst formDataInstance = require(\"form-data\");\r\n\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst network = gantt.ext.export_api.getNodeJSTransport(url);\r\n\t\t\tconst parts1 = url.split(\"://\")[1];\r\n\t\t\tconst parts2 = parts1.split(\"/\")[0].split(\":\");\r\n\t\t\tconst parts3 = parts1.split(\"/\");\r\n\r\n\t\t\tconst hostname = parts2[0];\r\n\t\t\tconst port = parts2[1] || network.defaultPort;\r\n\t\t\tconst path = \"/\" + parts3.slice(1).join(\"/\");\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\thostname,\r\n\t\t\t\tport,\r\n\t\t\t\tpath,\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst formData = new formDataInstance();\r\n\t\t\tformData.append(\"file\", config.data);\r\n\t\t\tformData.append(\"type\", \"excel-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify({\r\n\t\t\t\tsheet: config.sheet || 0\r\n\t\t\t}));\r\n\r\n\t\t\toptions.headers[\"Content-Type\"] = formData.getHeaders()[\"content-type\"];\r\n\r\n\t\t\tconst req = network.module.request(options, function(res) {\r\n\t\t\t\tlet resData = \"\";\r\n\t\t\t\tres.on(\"data\", function(d) {\r\n\t\t\t\t\tresData += d;\r\n\t\t\t\t});\r\n\t\t\t\tres.on(\"end\", function(d) {\r\n\t\t\t\t\tconfig.callback(resData.toString());\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treq.on(\"error\", function(error) {\r\n\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t\t\tformData.pipe(req);\r\n\t\t},\r\n\t\t_nodejsImportMSP(config) {\r\n\r\n\t\t\t// tslint:disable-next-line no-implicit-dependencies\r\n\t\t\tconst formDataInstance = require(\"form-data\");\r\n\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst network = gantt.ext.export_api.getNodeJSTransport(url);\r\n\t\t\tconst parts1 = url.split(\"://\")[1];\r\n\t\t\tconst parts2 = parts1.split(\"/\")[0].split(\":\");\r\n\t\t\tconst parts3 = parts1.split(\"/\");\r\n\r\n\t\t\tconst hostname = parts2[0];\r\n\t\t\tconst port = parts2[1] || network.defaultPort;\r\n\t\t\tconst path = \"/\" + parts3.slice(1).join(\"/\");\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\thostname,\r\n\t\t\t\tport,\r\n\t\t\t\tpath,\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst settings = {\r\n\t\t\t\tdurationUnit: config.durationUnit || undefined,\r\n\t\t\t\tprojectProperties: config.projectProperties || undefined,\r\n\t\t\t\ttaskProperties: config.taskProperties || undefined,\r\n\t\t\t};\r\n\r\n\t\t\tconst formData = new formDataInstance();\r\n\t\t\tformData.append(\"file\", config.data);\r\n\t\t\tformData.append(\"type\", config.type || \"msproject-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify(settings), options);\r\n\r\n\t\t\toptions.headers[\"Content-Type\"] = formData.getHeaders()[\"content-type\"];\r\n\r\n\t\t\tconst req = network.module.request(options, function(res) {\r\n\t\t\t\tlet resData = \"\";\r\n\t\t\t\tres.on(\"data\", function(d) {\r\n\t\t\t\t\tresData += d;\r\n\t\t\t\t});\r\n\t\t\t\tres.on(\"end\", function(d) {\r\n\t\t\t\t\tconfig.callback(resData.toString());\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treq.on(\"error\", function(error) {\r\n\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t\t\tformData.pipe(req);\r\n\t\t},\r\n\r\n\r\n\r\n\t\t_fixColumns(columns) {\r\n\t\t\tfor (let i = 0; i < columns.length; i++) {\r\n\t\t\t\tcolumns[i].label = columns[i].label || gantt.locale.labels[\"column_\" + columns[i].name];\r\n\t\t\t\tif (typeof columns[i].width === \"string\") {\r\n\t\t\t\t\tcolumns[i].width = columns[i].width * 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_xdr(url, pack, cb) {\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tgantt.ext.export_api._nodejsPostRequest(url, pack, cb);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.ajax.post(url, pack, cb);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_nodejsPostRequest(url, pack, cb){\r\n\t\t\tconst network = gantt.ext.export_api.getNodeJSTransport(url);\r\n\r\n\t\t\tconst parts1 = url.split(\"://\")[1];\r\n\t\t\tconst parts2 = parts1.split(\"/\")[0].split(\":\");\r\n\t\t\tconst parts3 = parts1.split(\"/\");\r\n\r\n\t\t\tconst hostname = parts2[0];\r\n\t\t\tconst port = parts2[1] || network.defaultPort;\r\n\t\t\tconst path = \"/\" + parts3.slice(1).join(\"/\");\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\thostname,\r\n\t\t\t\tport,\r\n\t\t\t\tpath,\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\t\"Content-Length\": JSON.stringify(pack).length\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst req = network.module.request(options, function(res) {\r\n\t\t\t\tconst resData = [];\r\n\t\t\t\tres.on(\"data\", function(d) {\r\n\t\t\t\t\tresData.push(d);\r\n\t\t\t\t});\r\n\t\t\t\tres.on(\"end\", function(d) {\r\n\t\t\t\t\tcb(Buffer.concat(resData));\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treq.on(\"error\", function(error) {\r\n\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\r\n\t\t\treq.write(JSON.stringify(pack));\r\n\t\t\treq.end();\r\n\t\t},\r\n\r\n\t\t_markColumns(base) {\r\n\t\t\tconst columns = base.config.columns;\r\n\t\t\tif (columns){\r\n\t\t\t\tfor (let i = 0; i < columns.length; i++) {\r\n\t\t\t\t\tif (columns[i].template){\r\n\t\t\t\t\t\tcolumns[i].$template = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_sendImportAjaxExcel(config) {\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst store = config.store || 0;\r\n\t\t\tconst formData = config.data;\r\n\t\t\tconst callback = config.callback;\r\n\r\n\t\t\tformData.append(\"type\", \"excel-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify({\r\n\t\t\t\tsheet: config.sheet || 0\r\n\t\t\t}));\r\n\r\n\t\t\tif (store){\r\n\t\t\t\tformData.append(\"store\", store);\r\n\t\t\t}\r\n\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\t\t\txhr.onreadystatechange = function(e) {\r\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 0) {// network error\r\n\t\t\t\t\tif (callback) {\r\n\t\t\t\t\t\tcallback(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.onload = function() {\r\n\t\t\t\tconst fail = xhr.status > 400;\r\n\t\t\t\tlet info = null;\r\n\r\n\t\t\t\tif (!fail) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinfo = JSON.parse(xhr.responseText);\r\n\t\t\t\t\t} catch (e) { }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback(info);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.open(\"POST\", url, true);\r\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\t\txhr.send(formData);\r\n\t\t},\r\n\r\n\r\n\t\t_ajaxToExport(data, type, callback) {\r\n\t\t\tdelete data.callback;\r\n\r\n\t\t\tconst url = data.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst pack = \"type=\" + type + \"&store=1&data=\" + encodeURIComponent(JSON.stringify(data));\r\n\r\n\t\t\tconst cb = function(loader) {\r\n\t\t\t\tconst xdoc = loader.xmlDoc || loader;\r\n\t\t\t\tconst fail = xdoc.status > 400;\r\n\t\t\t\tlet info = null;\r\n\r\n\t\t\t\tif (!fail) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinfo = JSON.parse(xdoc.responseText);\r\n\t\t\t\t\t} catch (e) { }\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t};\r\n\r\n\t\t\tgantt.ext.export_api._xdr(url, pack, cb);\r\n\t\t},\r\n\t\t_serializableGanttConfig(config) {\r\n\t\t\tconst result = gantt.mixin({}, config);\r\n\r\n\t\t\tif (result.columns) {\r\n\t\t\t\tresult.columns = result.columns.map(function(col) {\r\n\t\t\t\t\tconst copy = gantt.mixin({}, col);\r\n\t\t\t\t\tdelete copy.editor;\r\n\t\t\t\t\treturn copy;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdelete result.editor_types;\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t_sendToExport(data, type) {\r\n\t\t\tconst convert = gantt.date.date_to_str(gantt.config.date_format || gantt.config.xml_date);\r\n\t\t\tif (data.config) {\r\n\t\t\t\tdata.config = gantt.copy(gantt.ext.export_api._serializableGanttConfig(data.config));\r\n\t\t\t\tgantt.ext.export_api._markColumns(data, type);\r\n\r\n\t\t\t\tif (data.config.start_date && data.config.end_date) {\r\n\t\t\t\t\tif (data.config.start_date instanceof Date) {\r\n\t\t\t\t\t\tdata.config.start_date = convert(data.config.start_date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (data.config.end_date instanceof Date) {\r\n\t\t\t\t\t\tdata.config.end_date = convert(data.config.end_date);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tconst url = data.server || gantt.ext.export_api._apiUrl;\r\n\t\t\t\tconst pack = {\r\n\t\t\t\t\ttype,\r\n\t\t\t\t\tstore: 0,\r\n\t\t\t\t\tdata: JSON.stringify(data)\r\n\t\t\t\t};\r\n\t\t\t\tconst callbackFunction = data.callback || function(response) {\r\n\t\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\t\tconsole.log(response);\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn gantt.ext.export_api._xdr(url, pack, callbackFunction);\r\n\t\t\t}\r\n\r\n\t\t\tif (data.callback) {\r\n\t\t\t\treturn gantt.ext.export_api._ajaxToExport(data, type, data.callback);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tconst form = gantt.ext.export_api._createHiddenForm();\r\n\t\t\tform.firstChild.action = data.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\t\tform.firstChild.childNodes[1].value = type;\r\n\t\t\tform.firstChild.submit();\r\n\t\t},\r\n\r\n\t\t_createHiddenForm() {\r\n\t\t\tif (!gantt.ext.export_api._hidden_export_form) {\r\n\t\t\t\tconst t = gantt.ext.export_api._hidden_export_form = document.createElement(\"div\");\r\n\t\t\t\tt.style.display = \"none\";\r\n\t\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><textarea name='data' style='width:0px; height:0px;' readonly='true'></textarea><input type='hidden' name='type' value=''></form>\";\r\n\t\t\t\tdocument.body.appendChild(t);\r\n\t\t\t}\r\n\t\t\treturn gantt.ext.export_api._hidden_export_form;\r\n\t\t},\r\n\r\n\r\n\t\t_copyObjectBase(obj) {\r\n\t\t\tconst copy = {\r\n\t\t\t\tstart_date: undefined,\r\n\t\t\t\tend_date: undefined\r\n\t\t\t};\r\n\t\t\tfor (const key in obj) {\r\n\t\t\t\tif (key.charAt(0) === \"$\"){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tcopy[key] = obj[key];\r\n\t\t\t}\r\n\t\t\tconst formatDate = gantt.templates.xml_format || gantt.templates.format_date;\r\n\r\n\t\t\tcopy.start_date = formatDate(copy.start_date);\r\n\t\t\tif (copy.end_date){\r\n\t\t\t\tcopy.end_date = formatDate(copy.end_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\r\n\t\t_color_box: null,\r\n\t\t_color_hash: {},\r\n\r\n\t\t_getStyles(css) {\r\n\t\t\tif (!gantt.ext.export_api._color_box) {\r\n\t\t\t\tgantt.ext.export_api._color_box = document.createElement(\"DIV\");\r\n\t\t\t\tgantt.ext.export_api._color_box.style.cssText = \"position:absolute; display:none;\";\r\n\t\t\t\tdocument.body.appendChild(gantt.ext.export_api._color_box);\r\n\t\t\t}\r\n\t\t\tif (gantt.ext.export_api._color_hash[css]){\r\n\t\t\t\treturn gantt.ext.export_api._color_hash[css];\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._color_box.className = css;\r\n\t\t\tconst color = gantt.ext.export_api._getColor(gantt.ext.export_api._color_box, \"color\");\r\n\t\t\tconst backgroundColor = gantt.ext.export_api._getColor(gantt.ext.export_api._color_box, \"backgroundColor\");\r\n\t\t\treturn (gantt.ext.export_api._color_hash[css] = color + \";\" + backgroundColor);\r\n\t\t},\r\n\r\n\r\n\t\t_getMinutesWorktimeSettings(parsedRanges) {\r\n\t\t\tconst minutes = [];\r\n\t\t\tparsedRanges.forEach(function(range) {\r\n\t\t\t\tminutes.push(range.startMinute);\r\n\t\t\t\tminutes.push(range.endMinute);\r\n\t\t\t});\r\n\t\t\treturn minutes;\r\n\t\t},\r\n\r\n\t\t_getWorktimeSettings() {\r\n\r\n\t\t\tconst defaultWorkTimes = {\r\n\t\t\t\thours: [0, 24],\r\n\t\t\t\tminutes: null,\r\n\t\t\t\tdates: { 0: true, 1: true, 2: true, 3: true, 4: true, 5: true, 6: true }\r\n\t\t\t};\r\n\r\n\t\t\tlet time;\r\n\t\t\tif (!gantt.config.work_time) {\r\n\t\t\t\ttime = defaultWorkTimes;\r\n\t\t\t} else {\r\n\t\t\t\tconst wTime = gantt._working_time_helper;\r\n\t\t\t\tif (wTime && wTime.get_calendar) {\r\n\t\t\t\t\ttime = wTime.get_calendar();\r\n\t\t\t\t} else if (wTime) {\r\n\t\t\t\t\ttime = {\r\n\t\t\t\t\t\thours: wTime.hours,\r\n\t\t\t\t\t\tminutes: null,\r\n\t\t\t\t\t\tdates: wTime.dates\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (gantt.config.worktimes && gantt.config.worktimes.global) {\r\n\t\t\t\t\tconst settings = gantt.config.worktimes.global;\r\n\r\n\t\t\t\t\tif (settings.parsed) {\r\n\t\t\t\t\t\tconst minutes = gantt.ext.export_api._getMinutesWorktimeSettings(settings.parsed.hours);\r\n\t\t\t\t\t\ttime = {\r\n\t\t\t\t\t\t\thours: null,\r\n\t\t\t\t\t\t\tminutes,\r\n\t\t\t\t\t\t\tdates: {}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tfor (const i in settings.parsed.dates) {\r\n\t\t\t\t\t\t\tif (Array.isArray(settings.parsed.dates[i])) {\r\n\t\t\t\t\t\t\t\ttime.dates[i] = gantt.ext.export_api._getMinutesWorktimeSettings(settings.parsed.dates[i]);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttime.dates[i] = settings.parsed.dates[i];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttime = {\r\n\t\t\t\t\t\t\thours: settings.hours,\r\n\t\t\t\t\t\t\tminutes: null,\r\n\t\t\t\t\t\t\tdates: settings.dates\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttime = defaultWorkTimes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn time;\r\n\t\t},\r\n\r\n\r\n\t\t_eachTaskTimed(start, end) {\r\n\t\t\treturn function(code, parent, master) {\r\n\t\t\t\tparent = parent || gantt.config.root_id;\r\n\t\t\t\tmaster = master || gantt;\r\n\r\n\t\t\t\tconst branch = gantt.getChildren(parent);\r\n\t\t\t\tif (branch){\r\n\t\t\t\t\tfor (let i = 0; i < branch.length; i++) {\r\n\t\t\t\t\t\tconst item = gantt._pull[branch[i]];\r\n\t\t\t\t\t\tif ((!start || item.end_date > start) && (!end || item.start_date < end)){\r\n\t\t\t\t\t\t\tcode.call(master, item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (gantt.hasChild(item.id)){\r\n\t\t\t\t\t\t\tgantt.eachTask(code, item.id, master);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\r\n\t\t// patch broken json serialization in gantt 2.1\r\n\t\t_originalCopyObject: gantt.json._copyObject,\r\n\r\n\r\n\t\t_copyObjectPlain(obj) {\r\n\t\t\tconst text = gantt.templates.task_text(obj.start_date, obj.end_date, obj);\r\n\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectBase(obj);\r\n\t\t\tcopy.text = text || copy.text;\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_getColor(node, style) {\r\n\t\t\tconst value = node.currentStyle ? node.currentStyle[style] : getComputedStyle(node, null)[style];\r\n\t\t\tconst rgb = value.replace(/\\s/g, \"\").match(/^rgba?\\((\\d+),(\\d+),(\\d+)/i);\r\n\t\t\treturn ((rgb && rgb.length === 4) ?\r\n\t\t\t\t(\"0\" + parseInt(rgb[1], 10).toString(16)).slice(-2) +\r\n\t\t\t\t(\"0\" + parseInt(rgb[2], 10).toString(16)).slice(-2) +\r\n\t\t\t\t(\"0\" + parseInt(rgb[3], 10).toString(16)).slice(-2) : value).replace(\"#\", \"\");\r\n\t\t},\r\n\r\n\r\n\t\t// excel serialization\r\n\t\t_copyObjectTable(obj) {\r\n\t\t\t// Excel interprets UTC time as local time in every timezone, send local time instead of actual UTC time.\r\n\t\t\t// https://github.com/SheetJS/js-xlsx/issues/126#issuecomment-60531614\r\n\t\t\tconst toISOstring = gantt.date.date_to_str(\"%Y-%m-%dT%H:%i:%s.000Z\");\r\n\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectColumns(obj, gantt.ext.export_api._copyObjectPlain(obj));\r\n\t\t\tif (copy.start_date){\r\n\t\t\t\tcopy.start_date = toISOstring(obj.start_date);\r\n\t\t\t}\r\n\t\t\tif (copy.end_date){\r\n\t\t\t\tcopy.end_date = toISOstring(obj.end_date);\r\n\t\t\t}\r\n\r\n\t\t\t// private gantt._day_index_by_date was replaced by public gantt.columnIndexByDate in gantt 5.0\r\n\t\t\tconst getDayIndex = gantt._day_index_by_date ? gantt._day_index_by_date : gantt.columnIndexByDate;\r\n\r\n\t\t\tcopy.$start = getDayIndex.call(gantt, obj.start_date);\r\n\t\t\tcopy.$end = getDayIndex.call(gantt, obj.end_date);\r\n\r\n\t\t\t// GS-2100. Correct bar position considering hidden cells\r\n\t\t\tlet hiddenCells = 0;\r\n\t\t\tconst scaleCellsWidth = gantt.getScale().width;\r\n\t\t\tif (scaleCellsWidth.indexOf(0) > -1) {\r\n\t\t\t\tlet i = 0;\r\n\t\t\t\tfor (i; i < copy.$start; i++) {\r\n\t\t\t\t\tif (!scaleCellsWidth[i]) {\r\n\t\t\t\t\t\thiddenCells++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcopy.$start -= hiddenCells;\r\n\r\n\t\t\t\tfor (i; i < copy.$end; i++) {\r\n\t\t\t\t\tif (!scaleCellsWidth[i]) {\r\n\t\t\t\t\t\thiddenCells++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcopy.$end -= hiddenCells;\r\n\t\t\t}\r\n\r\n\t\t\tcopy.$level = obj.$level;\r\n\t\t\tcopy.$type = obj.$rendered_type;\r\n\r\n\t\t\tconst tmps = gantt.templates;\r\n\t\t\tcopy.$text = tmps.task_text(obj.start, obj.end_date, obj);\r\n\t\t\tcopy.$left = tmps.leftside_text ? tmps.leftside_text(obj.start, obj.end_date, obj) : \"\";\r\n\t\t\tcopy.$right = tmps.rightside_text ? tmps.rightside_text(obj.start, obj.end_date, obj) : \"\";\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_copyObjectColors(obj) {\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectTable(obj);\r\n\r\n\t\t\tconst node = gantt.getTaskNode(obj.id);\r\n\t\t\tif (node && node.firstChild) {\r\n\t\t\t\tlet color = gantt.ext.export_api._getColor((gantt._no_progress_colors ? node : node.firstChild), \"backgroundColor\");\r\n\t\t\t\tif (color === \"363636\"){\r\n\t\t\t\t\tcolor = gantt.ext.export_api._getColor(node, \"backgroundColor\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcopy.$color = color;\r\n\t\t\t} else if (obj.color){\r\n\t\t\t\tcopy.$color = obj.color;\r\n\t\t\t}\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_copyObjectColumns(obj, copy) {\r\n\t\t\tfor (let i = 0; i < gantt.config.columns.length; i++) {\r\n\t\t\t\tconst ct = gantt.config.columns[i].template;\r\n\t\t\t\tif (ct) {\r\n\t\t\t\t\tlet val = ct(obj);\r\n\t\t\t\t\tif (val instanceof Date){\r\n\t\t\t\t\t\tval = gantt.templates.date_grid(val, obj);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcopy[\"_\" + i] = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_copyObjectAll(obj) {\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectBase(obj);\r\n\r\n\t\t\tconst templates = [\r\n\t\t\t\t\"leftside_text\",\r\n\t\t\t\t\"rightside_text\",\r\n\t\t\t\t\"task_text\",\r\n\t\t\t\t\"progress_text\",\r\n\t\t\t\t\"task_class\"\r\n\t\t\t];\r\n\r\n\t\t\t// serialize all text templates\r\n\t\t\tfor (let i = 0; i < templates.length; i++) {\r\n\t\t\t\tconst template = gantt.templates[templates[i]];\r\n\t\t\t\tif (template){\r\n\t\t\t\t\tcopy[\"$\" + i] = template(obj.start_date, obj.end_date, obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._copyObjectColumns(obj, copy);\r\n\t\t\tcopy.open = obj.$open;\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\r\n\t\t_serializeHtml() {\r\n\t\t\tconst smartScales = gantt.config.smart_scales;\r\n\t\t\tconst smartRendering = gantt.config.smart_rendering;\r\n\t\t\tif (smartScales || smartRendering) {\r\n\t\t\t\tgantt.config.smart_rendering = false;\r\n\t\t\t\tgantt.config.smart_scales = false;\r\n\t\t\t\tgantt.render();\r\n\t\t\t}\r\n\r\n\t\t\tconst html = gantt.$container.parentNode.innerHTML;\r\n\r\n\t\t\tif (smartScales || smartRendering) {\r\n\t\t\t\tgantt.config.smart_scales = smartScales;\r\n\t\t\t\tgantt.config.smart_rendering = smartRendering;\r\n\t\t\t\tgantt.render();\r\n\t\t\t}\r\n\r\n\t\t\treturn html;\r\n\t\t},\r\n\r\n\t\t_serializeAll() {\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._copyObjectAll;\r\n\t\t\tconst data = gantt.ext.export_api._exportSerialize();\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._originalCopyObject;\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t_serializePlain() {\r\n\t\t\tconst oldXmlFormat = gantt.templates.xml_format;\r\n\t\t\tconst oldFormatDate = gantt.templates.format_date;\r\n\t\t\tgantt.templates.xml_format = gantt.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\t\t\tgantt.templates.format_date = gantt.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._copyObjectPlain;\r\n\r\n\t\t\tconst data = gantt.ext.export_api._exportSerialize();\r\n\r\n\t\t\tgantt.templates.xml_format = oldXmlFormat;\r\n\t\t\tgantt.templates.format_date = oldFormatDate;\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._originalCopyObject;\r\n\r\n\t\t\tdelete data.links;\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t_getRaw() {\r\n\t\t\t// support Gantt < 5.0\r\n\t\t\tif (gantt._scale_helpers) {\r\n\t\t\t\tconst scales = gantt._get_scales();\r\n\t\t\t\tconst\tminWidth = gantt.config.min_column_width;\r\n\t\t\t\tconst\tautosizeMinWidth = gantt._get_resize_options().x ? Math.max(gantt.config.autosize_min_width, 0) : gantt.config.$task.offsetWidth;\r\n\t\t\t\tconst\theight = gantt.config.config.scale_height - 1;\r\n\t\t\t\treturn gantt._scale_helpers.prepareConfigs(scales, minWidth, autosizeMinWidth, height);\r\n\t\t\t} else { // Gantt >= 5.0\r\n\t\t\t\tconst timeline = gantt.$ui.getView(\"timeline\");\r\n\t\t\t\tif (timeline) {\r\n\t\t\t\t\tlet availWidth = timeline.$config.width;\r\n\t\t\t\t\tif (gantt.config.autosize === \"x\" || gantt.config.autosize === \"xy\") {\r\n\t\t\t\t\t\tavailWidth = Math.max(gantt.config.autosize_min_width, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst state = gantt.getState();\r\n\t\t\t\t\tconst\tscales = timeline._getScales();\r\n\t\t\t\t\tconst\tminWidth = gantt.config.min_column_width;\r\n\t\t\t\t\tconst\theight = gantt.config.scale_height - 1;\r\n\t\t\t\t\tconst\trtl = gantt.config.rtl;\r\n\t\t\t\t\treturn timeline.$scaleHelper.prepareConfigs(scales, minWidth, availWidth, height, state.min_date, state.max_date, rtl);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_serializeTable(config) {\r\n\t\t\tgantt.json._copyObject = config.visual ? gantt.ext.export_api._copyObjectColors : gantt.ext.export_api._copyObjectTable;\r\n\t\t\tconst data = gantt.ext.export_api._exportSerialize();\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._originalCopyObject;\r\n\r\n\t\t\tdelete data.links;\r\n\r\n\t\t\tif (config.cellColors) {\r\n\t\t\t\tconst css = gantt.templates.timeline_cell_class || gantt.templates.task_cell_class;\r\n\t\t\t\tif (css) {\r\n\t\t\t\t\tconst raw = gantt.ext.export_api._getRaw();\r\n\t\t\t\t\tlet steps = raw[0].trace_x;\r\n\t\t\t\t\tfor (let i = 1; i < raw.length; i++){\r\n\t\t\t\t\t\tif (raw[i].trace_x.length > steps.length){\r\n\t\t\t\t\t\t\tsteps = raw[i].trace_x;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (let i = 0; i < data.data.length; i++) {\r\n\t\t\t\t\t\tdata.data[i].styles = [];\r\n\t\t\t\t\t\tconst task = gantt.getTask(data.data[i].id);\r\n\t\t\t\t\t\tfor (let j = 0; j < steps.length; j++) {\r\n\t\t\t\t\t\t\tconst date = steps[j];\r\n\t\t\t\t\t\t\tconst cellCss = css(task, date);\r\n\t\t\t\t\t\t\tif (cellCss){\r\n\t\t\t\t\t\t\t\tdata.data[i].styles.push({ index: j, styles: gantt.ext.export_api._getStyles(cellCss) });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t_serializeScales(config) {\r\n\t\t\tconst scales = [];\r\n\t\t\tconst raw = gantt.ext.export_api._getRaw();\r\n\r\n\t\t\tlet min = Infinity;\r\n\t\t\tlet max = 0;\r\n\t\t\tfor (let i = 0; i < raw.length; i++) {\r\n\t\t\t\tmin = Math.min(min, raw[i].col_width);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < raw.length; i++) {\r\n\t\t\t\tlet start = 0;\r\n\t\t\t\tlet end = 0;\r\n\t\t\t\tconst row = [];\r\n\r\n\t\t\t\tscales.push(row);\r\n\t\t\t\tconst step = raw[i];\r\n\t\t\t\tmax = Math.max(max, step.trace_x.length);\r\n\t\t\t\tconst template = step.format || step.template || (step.date ? gantt.date.date_to_str(step.date) : gantt.config.date_scale);\r\n\r\n\t\t\t\tfor (let j = 0; j < step.trace_x.length; j++) {\r\n\t\t\t\t\tconst date = step.trace_x[j];\r\n\t\t\t\t\tend = start + Math.round(step.width[j] / min);\r\n\r\n\t\t\t\t\tconst scaleCell = { text: template(date), start, end, styles: \"\" };\r\n\r\n\t\t\t\t\tif (config.cellColors) {\r\n\t\t\t\t\t\tconst css = step.css || gantt.templates.scaleCell_class;\r\n\t\t\t\t\t\tif (css) {\r\n\t\t\t\t\t\t\tconst scaleCss = css(date);\r\n\t\t\t\t\t\t\tif (scaleCss){\r\n\t\t\t\t\t\t\t\tscaleCell.styles = gantt.ext.export_api._getStyles(scaleCss);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.push(scaleCell);\r\n\t\t\t\t\tstart = end;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn { width: max, height: scales.length, data: scales };\r\n\t\t},\r\n\r\n\t\t_serializeColumns(config) {\r\n\t\t\tgantt.exportMode = true;\r\n\r\n\t\t\tconst columns = [];\r\n\t\t\tconst cols = gantt.config.columns;\r\n\r\n\t\t\tlet ccount = 0;\r\n\t\t\tfor (let i = 0; i < cols.length; i++) {\r\n\t\t\t\tif (cols[i].name === \"add\" || cols[i].name === \"buttons\") {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumns[ccount] = {\r\n\t\t\t\t\tid: ((cols[i].template) ? (\"_\" + i) : cols[i].name),\r\n\t\t\t\t\theader: cols[i].label || gantt.locale.labels[\"column_\" + cols[i].name],\r\n\t\t\t\t\twidth: (cols[i].width ? Math.floor(cols[i].width / 4) : \"\")\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (cols[i].name === \"duration\"){\r\n\t\t\t\t\tcolumns[ccount].type = \"number\";\r\n\t\t\t\t}\r\n\t\t\t\tif (cols[i].name === \"start_date\" || cols[i].name === \"end_date\") {\r\n\t\t\t\t\tcolumns[ccount].type = \"date\";\r\n\t\t\t\t\tif (config && config.rawDates){\r\n\t\t\t\t\t\tcolumns[ccount].id = cols[i].name;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tccount++;\r\n\t\t\t}\r\n\r\n\t\t\tgantt.exportMode = false;\r\n\t\t\treturn columns;\r\n\t\t},\r\n\r\n\t\t_exportSerialize() {\r\n\t\t\tgantt.exportMode = true;\r\n\r\n\t\t\tconst xmlFormat = gantt.templates.xml_format;\r\n\t\t\tconst formatDate = gantt.templates.format_date;\r\n\r\n\t\t\t// use configuration date format for serialization so date could be parsed on the export\r\n\t\t\t// required when custom format date function is defined\r\n\t\t\tgantt.templates.xml_format =\r\n\t\t\t\tgantt.templates.format_date =\r\n\t\t\t\tgantt.date.date_to_str(gantt.config.date_format || gantt.config.xml_date);\r\n\r\n\t\t\tconst data = gantt.serialize();\r\n\r\n\t\t\tgantt.templates.xml_format = xmlFormat;\r\n\t\t\tgantt.templates.format_date = formatDate;\r\n\t\t\tgantt.exportMode = false;\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\r\n\t\t_setLevel(data) {\r\n\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\t\tif (data[i].parent == 0) {\r\n\t\t\t\t\tdata[i]._lvl = 1;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let j = i + 1; j < data.length; j++) {\r\n\t\t\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\t\t\tif (data[i].id == data[j].parent) {\r\n\t\t\t\t\t\tdata[j]._lvl = data[i]._lvl + 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_clearLevel(data) {\r\n\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\tdelete data[i]._lvl;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_clearRecLinks(data) {\r\n\t\t\tgantt.ext.export_api._setLevel(data.data);\r\n\t\t\tconst tasks = {};\r\n\t\t\tfor (let i = 0; i < data.data.length; i++) {\r\n\t\t\t\ttasks[data.data[i].id] = data.data[i];\r\n\t\t\t}\r\n\r\n\t\t\tconst links = {};\r\n\r\n\t\t\tfor (let i = 0; i < data.links.length; i++) {\r\n\t\t\t\tconst link = data.links[i];\r\n\t\t\t\tif (gantt.isTaskExists(link.source) && gantt.isTaskExists(link.target) &&\r\n\t\t\t\t\ttasks[link.source] && tasks[link.target]) {\r\n\t\t\t\t\tlinks[link.id] = link;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (const j in links) {\r\n\t\t\t\tgantt.ext.export_api._makeLinksSameLevel(links[j], tasks);\r\n\t\t\t}\r\n\r\n\t\t\tconst skippedLinks = {};\r\n\t\t\tfor (const j in tasks) {\r\n\t\t\t\tgantt.ext.export_api._clearCircDependencies(tasks[j], links, tasks, {}, skippedLinks, null);\r\n\t\t\t}\r\n\r\n\t\t\tif (Object.keys(links)) {\r\n\t\t\t\tgantt.ext.export_api._clearLinksSameLevel(links, tasks);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < data.links.length; i++) {\r\n\t\t\t\tif (!links[data.links[i].id]) {\r\n\t\t\t\t\tdata.links.splice(i, 1);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._clearLevel(data.data);\r\n\t\t},\r\n\r\n\t\t_clearCircDependencies(task, links, tasks, usedTasks, skippedLinks, prevLink) {\r\n\t\t\tconst sources = task.$_source;\r\n\t\t\tif (!sources) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (usedTasks[task.id]) {\r\n\t\t\t\tgantt.ext.export_api._onCircDependencyFind(prevLink, links, usedTasks, skippedLinks);\r\n\t\t\t}\r\n\r\n\t\t\tusedTasks[task.id] = true;\r\n\r\n\t\t\tconst targets = {};\r\n\r\n\t\t\tfor (let i = 0; i < sources.length; i++) {\r\n\t\t\t\tif (skippedLinks[sources[i]]) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tconst curLink = links[sources[i]];\r\n\t\t\t\tconst targetTask = tasks[curLink._target];\r\n\t\t\t\tif (targets[targetTask.id]) { // two link from one task to another\r\n\t\t\t\t\tgantt.ext.export_api._onCircDependencyFind(curLink, links, usedTasks, skippedLinks);\r\n\t\t\t\t}\r\n\t\t\t\ttargets[targetTask.id] = true;\r\n\t\t\t\tgantt.ext.export_api._clearCircDependencies(targetTask, links, tasks, usedTasks, skippedLinks, curLink);\r\n\t\t\t}\r\n\t\t\tusedTasks[task.id] = false;\r\n\t\t},\r\n\r\n\t\t_onCircDependencyFind(link, links, usedTasks, skippedLinks) {\r\n\t\t\tif (link) {\r\n\t\t\t\tif (gantt.callEvent(\"onExportCircularDependency\", [link.id, link])) {\r\n\t\t\t\t\tdelete links[link.id];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete usedTasks[link._source];\r\n\t\t\t\tdelete usedTasks[link._target];\r\n\t\t\t\tskippedLinks[link.id] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_makeLinksSameLevel(link, tasks) {\r\n\t\t\tlet task;\r\n\t\t\tlet targetLvl;\r\n\t\t\tconst linkT = {\r\n\t\t\t\ttarget: tasks[link.target],\r\n\t\t\t\tsource: tasks[link.source]\r\n\t\t\t};\r\n\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\tif (linkT.target._lvl != linkT.source._lvl) {\r\n\t\t\t\tif (linkT.target._lvl < linkT.source._lvl) {\r\n\t\t\t\t\ttask = \"source\";\r\n\t\t\t\t\ttargetLvl = linkT.target._lvl;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttask = \"target\";\r\n\t\t\t\t\ttargetLvl = linkT.source._lvl;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tconst parent = tasks[linkT[task].parent];\r\n\t\t\t\t\tif (!parent) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlinkT[task] = parent;\r\n\t\t\t\t} while (linkT[task]._lvl < targetLvl);\r\n\r\n\t\t\t\tlet sourceParent = tasks[linkT.source.parent];\r\n\t\t\t\tlet\ttargetParent = tasks[linkT.target.parent];\r\n\t\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\t\twhile (sourceParent && targetParent && sourceParent.id != targetParent.id) {\r\n\t\t\t\t\tlinkT.source = sourceParent;\r\n\t\t\t\t\tlinkT.target = targetParent;\r\n\t\t\t\t\tsourceParent = tasks[linkT.source.parent];\r\n\t\t\t\t\ttargetParent = tasks[linkT.target.parent];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlink._target = linkT.target.id;\r\n\t\t\tlink._source = linkT.source.id;\r\n\r\n\t\t\tif (!linkT.target.$_target){\r\n\t\t\t\tlinkT.target.$_target = [];\r\n\t\t\t}\r\n\t\t\tlinkT.target.$_target.push(link.id);\r\n\r\n\t\t\tif (!linkT.source.$_source){\r\n\t\t\t\tlinkT.source.$_source = [];\r\n\t\t\t}\r\n\t\t\tlinkT.source.$_source.push(link.id);\r\n\t\t},\r\n\r\n\t\t_clearLinksSameLevel(links, tasks) {\r\n\t\t\tfor (const link in links) {\r\n\t\t\t\tdelete links[link]._target;\r\n\t\t\t\tdelete links[link]._source;\r\n\t\t\t}\r\n\r\n\t\t\tfor (const task in tasks) {\r\n\t\t\t\tdelete tasks[task].$_source;\r\n\t\t\t\tdelete tasks[task].$_target;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_customProjectProperties(data, config) {\r\n\t\t\tif (config && config.project) {\r\n\t\t\t\tfor (const i in config.project) {\r\n\t\t\t\t\tif (!gantt.config.$custom_data){\r\n\t\t\t\t\t\tgantt.config.$custom_data = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgantt.config.$custom_data[i] = typeof config.project[i] === \"function\" ? config.project[i](gantt.config) : config.project[i];\r\n\t\t\t\t}\r\n\t\t\t\tdelete config.project;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_customTaskProperties(data, config) {\r\n\t\t\tif (config && config.tasks) {\r\n\t\t\t\tdata.data.forEach(function(el) {\r\n\t\t\t\t\tfor (const i in config.tasks) {\r\n\t\t\t\t\t\tif (!el.$custom_data){\r\n\t\t\t\t\t\t\tel.$custom_data = {};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tel.$custom_data[i] = typeof config.tasks[i] === \"function\" ? config.tasks[i](el, gantt.config) : config.tasks[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tdelete config.tasks;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_exportConfig(data, config) {\r\n\t\t\tconst projectName = config.name || \"gantt.xml\";\r\n\t\t\tdelete config.name;\r\n\r\n\t\t\tgantt.config.custom = config;\r\n\r\n\t\t\tconst time = gantt.ext.export_api._getWorktimeSettings();\r\n\r\n\t\t\tconst projectDates = gantt.getSubtaskDates();\r\n\t\t\tif (projectDates.start_date && projectDates.end_date) {\r\n\t\t\t\tconst formatDate = gantt.templates.format_date || gantt.templates.xml_format;\r\n\t\t\t\tgantt.config.start_end = {\r\n\t\t\t\t\tstart_date: formatDate(projectDates.start_date),\r\n\t\t\t\t\tend_date: formatDate(projectDates.end_date)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tconst manual = config.auto_scheduling === undefined ? false : !!config.auto_scheduling;\r\n\r\n\t\t\tconst res = {\r\n\t\t\t\tcallback: config.callback || null,\r\n\t\t\t\tconfig: gantt.config,\r\n\t\t\t\tdata,\r\n\t\t\t\tmanual,\r\n\t\t\t\tname: projectName,\r\n\t\t\t\tworktime: time\r\n\t\t\t};\r\n\t\t\tfor (const i in config) {\r\n\t\t\t\tres[i] = config[i];\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\r\n\t\t_sendImportAjaxMSP(config) {\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst store = config.store || 0;\r\n\t\t\tconst formData = config.data;\r\n\t\t\tconst callback = config.callback;\r\n\r\n\t\t\tconst settings = {\r\n\t\t\t\tdurationUnit: config.durationUnit || undefined,\r\n\t\t\t\tprojectProperties: config.projectProperties || undefined,\r\n\t\t\t\ttaskProperties: config.taskProperties || undefined,\r\n\t\t\t};\r\n\r\n\t\t\tformData.append(\"type\", config.type || \"msproject-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify(settings));\r\n\r\n\t\t\tif (store){\r\n\t\t\t\tformData.append(\"store\", store);\r\n\t\t\t}\r\n\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\t\t\txhr.onreadystatechange = function(e) {\r\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 0) {// network error\r\n\t\t\t\t\tif (callback) {\r\n\t\t\t\t\t\tcallback(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.onload = function(){\r\n\t\t\t\tconst fail = xhr.status > 400;\r\n\t\t\t\tlet info = null;\r\n\r\n\t\t\t\tif (!fail) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinfo = JSON.parse(xhr.responseText);\r\n\t\t\t\t\t} catch (e) { }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback(info);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.open(\"POST\", url, true);\r\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\t\txhr.send(formData);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\r\n\tgantt.exportToPDF = gantt.ext.export_api.exportToPDF;\r\n\tgantt.exportToPNG = gantt.ext.export_api.exportToPNG;\r\n\tgantt.exportToICal = gantt.ext.export_api.exportToICal;\r\n\tgantt.exportToExcel = gantt.ext.export_api.exportToExcel;\r\n\tgantt.exportToJSON = gantt.ext.export_api.exportToJSON;\r\n\tgantt.importFromExcel = gantt.ext.export_api.importFromExcel;\r\n\tgantt.importFromMSProject = gantt.ext.export_api.importFromMSProject;\r\n\tgantt.exportToMSProject = gantt.ext.export_api.exportToMSProject;\r\n\tgantt.importFromPrimaveraP6 = gantt.ext.export_api.importFromPrimaveraP6;\r\n\tgantt.exportToPrimaveraP6 = gantt.ext.export_api.exportToPrimaveraP6;\r\n\r\n\r\n}\r\n","interface IPoint {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\nexport class EventsManager {\r\n\tstatic create(gantt: any) {\r\n\t\treturn new EventsManager(gantt);\r\n\t}\r\n\tprivate _mouseDown: boolean = false;\r\n\tprivate _startPoint: IPoint;\r\n\tprivate _scrollState: IPoint;\r\n\tprivate _originAutoscroll: boolean;\r\n\tprivate _domEvents: any;\r\n\tprivate _timeline: any;\r\n\tprivate _gantt: any;\r\n\tprivate _trace: IPoint[];\r\n\tprivate _originalReadonly: boolean;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._domEvents = gantt._createDomEventScope();\r\n\t\tthis._trace = [];\r\n\t}\r\n\r\n\tdestructor() {\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\r\n\tattach(timeline: any): void {\r\n\t\tthis._timeline = timeline;\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._domEvents.attach(timeline.$task, \"mousedown\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey,ignore, enabled } = gantt.config.drag_timeline;\r\n\t\t\tif(enabled === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet filterTargets = \".gantt_task_line, .gantt_task_link\";\r\n\t\t\tif(ignore !== undefined) {\r\n\t\t\t\tif(ignore instanceof Array){\r\n\t\t\t\t\tfilterTargets = ignore.join(\", \");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfilterTargets = ignore;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (filterTargets) {\r\n\t\t\t\tif (gantt.utils.dom.closest(event.target, filterTargets)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\r\n\t\t\tthis._startDrag(event);\r\n\t\t});\r\n\r\n\t\tthis._domEvents.attach(document, \"keydown\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] === true) {\r\n\t\t\t\tthis._applyDndReadyStyles();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._domEvents.attach(document, \"keyup\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] === false) {\r\n\t\t\t\tthis._clearDndReadyStyles();\r\n\t\t\t\tthis._stopDrag(event);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._domEvents.attach(document, \"mouseup\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\t\tthis._domEvents.attach(gantt.$root, \"mouseup\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\t\tthis._domEvents.attach(document, \"mouseleave\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\t\tthis._domEvents.attach(gantt.$root, \"mouseleave\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\r\n\t\tthis._domEvents.attach(gantt.$root, \"mousemove\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\t// GS-854. If we don't have useKey for the drag_timeline extension,\r\n\t\t\t// check the click_drag to not simultaneously use both extensions\r\n\t\t\tconst clickDrag = this._gantt.ext.clickDrag;\r\n\t\t\tconst clickDragUseKey = (this._gantt.config.click_drag || {}).useKey;\r\n\t\t\tif (clickDrag && clickDragUseKey) {\r\n\t\t\t\tif (!useKey && event[clickDragUseKey]) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this._mouseDown === true) {\r\n\t\t\t\tthis._trace.push({ x: event.clientX, y: event.clientY });\r\n\t\t\t\tconst scrollPosition: IPoint = this._countNewScrollPosition({ x: event.clientX, y: event.clientY });\r\n\t\t\t\tthis._setScrollPosition(timeline, scrollPosition);\r\n\t\t\t\tthis._scrollState = scrollPosition;\r\n\t\t\t\tthis._startPoint = { x: event.clientX, y: event.clientY };\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _calculateDirectionVector = () => {\r\n\t\tconst traceSteps = 10;\r\n\t\tif(this._trace.length >= traceSteps) {\r\n\t\t\tconst dots = this._trace.slice(this._trace.length - traceSteps);\r\n\r\n\t\t\tconst vectors = [];\r\n\t\t\tfor(let i = 1; i < dots.length; i++) {\r\n\t\t\t\tvectors.push({\r\n\t\t\t\t\tx: dots[i].x - dots[i - 1].x,\r\n\t\t\t\t\ty: dots[i].y - dots[i - 1].y\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tconst resultVector = {x:0, y:0};\r\n\r\n\t\t\tvectors.forEach((vector) => {\r\n\t\t\t\tresultVector.x += vector.x;\r\n\t\t\t\tresultVector.y += vector.y;\r\n\t\t\t});\r\n\r\n\t\t\tconst magnitude = Math.sqrt(resultVector.x*resultVector.x + resultVector.y*resultVector.y);\r\n\t\t\tconst angleDegrees = Math.atan2(Math.abs(resultVector.y), Math.abs(resultVector.x)) * 180 / Math.PI;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmagnitude,\r\n\t\t\t\tangleDegrees\r\n\t\t\t};\r\n\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _applyDndReadyStyles = (): void => {\r\n\t\tthis._timeline.$task.classList.add(\"gantt_timeline_move_available\");\r\n\t}\r\n\r\n\tprivate _clearDndReadyStyles = (): void => {\r\n\t\tthis._timeline.$task.classList.remove(\"gantt_timeline_move_available\");\r\n\t}\r\n\r\n\tprivate _getScrollPosition = (timeline: any): IPoint => {\r\n\t\tconst gantt = this._gantt;\r\n\t\treturn {\r\n\t\t\tx: gantt.$ui.getView(timeline.$config.scrollX).getScrollState().position,\r\n\t\t\ty: gantt.$ui.getView(timeline.$config.scrollY).getScrollState().position\r\n\t\t};\r\n\t}\r\n\tprivate _countNewScrollPosition = (coords: IPoint): IPoint => {\r\n\t\tconst vector = this._calculateDirectionVector();\r\n\t\tlet shiftX = this._startPoint.x - coords.x;\r\n\t\tlet shiftY = this._startPoint.y - coords.y;\r\n\t\tif(vector){\r\n\t\t\tif(vector.angleDegrees < 15){\r\n\t\t\t\tshiftY = 0;\r\n\t\t\t} else if(vector.angleDegrees > 75){\r\n\t\t\t\tshiftX = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst result = {\r\n\t\t\tx: this._scrollState.x + shiftX,\r\n\t\t\ty: this._scrollState.y + shiftY\r\n\t\t};\r\n\t\treturn result;\r\n\t}\r\n\tprivate _setScrollPosition = (timeline: any, coords: IPoint): void => {\r\n\t\tconst gantt = this._gantt;\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tgantt.scrollLayoutCell(timeline.$id, coords.x, coords.y);\r\n\t\t});\r\n\t}\r\n\tprivate _stopDrag = (event: Event): void => {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._trace = [];\r\n\t\tgantt.$root.classList.remove(\"gantt_noselect\");\r\n\r\n\t\tif(this._originalReadonly !== undefined){\r\n\t\t\tgantt.config.readonly = this._originalReadonly;\r\n\t\t}\r\n\r\n\t\tif(this._originAutoscroll !== undefined){\r\n\t\t\tgantt.config.autoscroll = this._originAutoscroll;\r\n\t\t}\r\n\r\n\t\tif(gantt.config.drag_timeline){\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] !== true) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._mouseDown = false;\r\n\t}\r\n\r\n\tprivate _startDrag = (event: any) : void => {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._originAutoscroll = gantt.config.autoscroll;\r\n\t\tgantt.config.autoscroll = false;\r\n\r\n\t\tgantt.$root.classList.add(\"gantt_noselect\");\r\n\t\tthis._originalReadonly = gantt.config.readonly;\r\n\t\tgantt.config.readonly = true;\r\n\r\n\t\tthis._trace = [];\r\n\t\tthis._mouseDown = true;\r\n\t\tconst { x, y } = this._getScrollPosition(this._timeline);\r\n\t\tthis._scrollState = { x, y };\r\n\t\tthis._startPoint = { x: event.clientX, y: event.clientY };\r\n\t\tthis._trace.push(this._startPoint);\r\n\t}\r\n}","import { EventsManager } from \"./eventsManager\";\r\nexport default function(gantt: any){\r\n\tif (!gantt.ext){\r\n\t\tgantt.ext = {};\r\n\t}\r\n\r\n\tgantt.ext.dragTimeline = {\r\n\t\tcreate: () => EventsManager.create(gantt)\r\n\t};\r\n\r\n\tgantt.config.drag_timeline = {\r\n\t\tenabled: true\r\n\t};\r\n}","import * as eventable from \"../../utils/eventable\";\r\nimport { isEventable } from \"../../utils/helpers\";\r\n\r\nexport interface ISelectedRegionConfig {\r\n\tclassName?: string;\r\n\trender?: (startPoint: IPoint, endPoint: IPoint) => HTMLElement;\r\n\tviewPort?: HTMLElement;\r\n\tuseRequestAnimationFrame: boolean;\r\n\tcallback?: (startPoint: IPoint, endPoint: IPoint, startDate: Date, endDate: Date, tasksByDate: any[], tasksByIndex: any[]) => void;\r\n\tsingleRow: boolean;\r\n}\r\n\r\ninterface ICoordinates {\r\n\tleft: number;\r\n\ttop: number;\r\n}\r\n\r\nexport interface IPoint {\r\n\tabsolute: ICoordinates;\r\n\trelative: ICoordinates;\r\n}\r\n\r\nexport class SelectedRegion {\r\n\trender: () => void;\r\n\tprivate _viewPort: HTMLElement & eventable;\r\n\tprivate _el: HTMLElement = document.createElement(\"div\");\r\n\tprivate _callback: (startPoint: IPoint, endPoint: IPoint, startDate: Date, endDate: Date, tasksByDate: any[], tasksByIndex: any[]) => void;\r\n\tprivate _startPoint: IPoint;\r\n\tprivate _endPoint: IPoint;\r\n\tprivate _positionPoint: IPoint;\r\n\tprivate _useRequestAnimationFrame: boolean;\r\n\tprivate _startDate: Date;\r\n\tprivate _endDate: Date;\r\n\tprivate _singleRow: boolean;\r\n\tprivate _gantt: any;\r\n\tprivate _view: any;\r\n\r\n\tconstructor(config: ISelectedRegionConfig, gantt: any, view: any) {\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._view = view;\r\n\t\tthis._viewPort = config.viewPort;\r\n\t\tthis._el.classList.add(config.className);\r\n\t\tif (typeof config.callback === \"function\") {\r\n\t\t\tthis._callback = config.callback;\r\n\t\t}\r\n\r\n\t\tthis.render = () => {\r\n\t\t\tlet node;\r\n\t\t\tif(config.render){\r\n\t\t\t\tnode = config.render(this._startPoint, this._endPoint);\r\n\t\t\t}else{\r\n\t\t\t\tnode = this.defaultRender(this._startPoint, this._endPoint);\r\n\t\t\t}\r\n\r\n\t\t\tif(node !== this._el){\r\n\t\t\t\tif(this._el && this._el.parentNode){\r\n\t\t\t\t\tthis._el.parentNode.removeChild(this._el);\r\n\t\t\t\t}\r\n\t\t\t\tthis._el = node;\r\n\t\t\t}\r\n\r\n\t\t\tif (config.className !== \"\") {\r\n\t\t\t\tthis._el.classList.add(config.className);\r\n\t\t\t}\r\n\t\t\tthis.draw();\r\n\t\t};\r\n\r\n\t\tif (!isEventable(this._viewPort)) {\r\n\t\t\teventable(this._viewPort);\r\n\t\t}\r\n\t\tthis._singleRow = config.singleRow;\r\n\t\tthis._useRequestAnimationFrame = config.useRequestAnimationFrame;\r\n\t}\r\n\r\n\tdefaultRender = (start: IPoint, end: IPoint) => {\r\n\t\tif(!this._el){\r\n\t\t\tthis._el = document.createElement(\"div\");\r\n\t\t}\r\n\t\tconst node = this._el;\r\n\t\t// const gantt = this._gantt;\r\n\r\n\t\tconst top = Math.min(start.relative.top, end.relative.top);\r\n\t\tconst bottom = Math.max(start.relative.top, end.relative.top);\r\n\t\tconst left = Math.min(start.relative.left, end.relative.left);\r\n\t\tconst right = Math.max(start.relative.left, end.relative.left);\r\n\r\n\t\tif (this._singleRow) {\r\n\t\t\tconst pos = this._getTaskPositionByTop(this._startPoint.relative.top);\r\n\t\t\tnode.style.height = pos.height + \"px\";\r\n\t\t\tnode.style.top = pos.top + \"px\";\r\n\t\t} else {\r\n\t\t\tnode.style.height = Math.abs(bottom - top) + \"px\";\r\n\t\t\tnode.style.top = top + \"px\";\r\n\t\t}\r\n\t\tnode.style.width = Math.abs(right - left) + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\t\treturn node;\r\n\t}\r\n\r\n\tdraw() {\r\n\t\tif (this._useRequestAnimationFrame) {\r\n\t\t\treturn requestAnimationFrame(() => {\r\n\t\t\t\tthis._viewPort.appendChild(this.getElement());\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis._viewPort.appendChild(this.getElement());\r\n\t\t}\r\n\t}\r\n\r\n\tclear() {\r\n\t\tif (this._useRequestAnimationFrame) {\r\n\t\t\treturn requestAnimationFrame(() => {\r\n\t\t\t\tif (!this._el.parentNode) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._viewPort.removeChild(this._el);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (!this._el.parentNode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._viewPort.removeChild(this._el);\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement() {\r\n\t\treturn this._el;\r\n\t}\r\n\r\n\tgetViewPort() {\r\n\t\treturn this._viewPort;\r\n\t}\r\n\r\n\tsetStart(startPoint: IPoint) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._startPoint = startPoint;\r\n\t\tthis._startDate = gantt.dateFromPos(this._startPoint.relative.left);\r\n\t\tthis._viewPort.callEvent(\"onBeforeDrag\", [this._startPoint]);\r\n\t}\r\n\r\n\tsetEnd(endPoint: IPoint) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._endPoint = endPoint;\r\n\t\tif (this._singleRow) {\r\n\t\t\tconst pos = this._getTaskPositionByTop(this._startPoint.relative.top);\r\n\t\t\tthis._endPoint.relative.top = pos.top;\r\n\t\t}\r\n\t\tthis._endDate = gantt.dateFromPos(this._endPoint.relative.left);\r\n\t\tif (this._startPoint.relative.left > this._endPoint.relative.left) {\r\n\t\t\tthis._positionPoint = {\r\n\t\t\t\trelative: { left: this._endPoint.relative.left, top: this._positionPoint.relative.top },\r\n\t\t\t\tabsolute: { left: this._endPoint.absolute.left, top: this._positionPoint.absolute.top }\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (this._startPoint.relative.top > this._endPoint.relative.top) {\r\n\t\t\tthis._positionPoint = {\r\n\t\t\t\trelative: { left: this._positionPoint.relative.left, top: this._endPoint.relative.top },\r\n\t\t\t\tabsolute: { left: this._positionPoint.absolute.left, top: this._endPoint.absolute.top }\r\n\t\t\t};\r\n\t\t}\r\n\r\n\r\n\t\tthis._viewPort.callEvent(\"onDrag\", [this._startPoint, this._endPoint]);\r\n\t}\r\n\r\n\tsetPosition(positionPoint: IPoint) {\r\n\t\tthis._positionPoint = positionPoint;\r\n\t}\r\n\r\n\tdragEnd(endPoint: IPoint) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif(endPoint.relative.left < 0){\r\n\t\t\tendPoint.relative.left = 0;\r\n\t\t}\r\n\t\tthis._viewPort.callEvent(\"onBeforeDragEnd\", [this._startPoint, endPoint]);\r\n\t\tthis.setEnd(endPoint);\r\n\t\t// GS-1422. The endDate can be null if we drag the mouse outside the Gantt container\r\n\t\tthis._endDate = this._endDate || gantt.getState().max_date;\r\n\r\n\t\tif (this._startDate.valueOf() > this._endDate.valueOf()) {\r\n\t\t\t[ this._startDate, this._endDate ] = [ this._endDate, this._startDate ];\r\n\t\t}\r\n\t\tthis.clear();\r\n\t\tconst tasksByTime = gantt.getTaskByTime(this._startDate, this._endDate);\r\n\t\tconst tasksByIndex = this._getTasksByTop(this._startPoint.relative.top, this._endPoint.relative.top);\r\n\r\n\t\tthis._viewPort.callEvent(\"onDragEnd\", [this._startPoint, this._endPoint]);\r\n\t\tif (this._callback) {\r\n\t\t\tthis._callback(this._startPoint, this._endPoint, this._startDate, this._endDate, tasksByTime, tasksByIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tgetInBounds() {\r\n\t\treturn this._singleRow;\r\n\t}\r\n\r\n\tprivate _getTasksByTop(start: number, end:number) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet startValue = start;\r\n\t\tlet endValue = end;\r\n\t\tif (start > end) {\r\n\t\t\tstartValue = end;\r\n\t\t\tendValue = start;\r\n\t\t}\r\n\t\tconst startIndex = this._getTaskPositionByTop(startValue).index;\r\n\t\tconst endIndex = this._getTaskPositionByTop(endValue).index;\r\n\t\tconst result = [];\r\n\t\tfor (let i = startIndex; i <= endIndex; i++) {\r\n\t\t\tconst task = gantt.getTaskByIndex(i);\r\n\t\t\tif (task) {\r\n\t\t\t\tresult.push(gantt.getTaskByIndex(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate _getTaskPositionByTop(top: number){\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst view = this._view;\r\n\t\tconst index = view.getItemIndexByTopPosition(top);\r\n\t\tconst task = gantt.getTaskByIndex(index);\r\n\t\tif(task){\r\n\t\t\tconst height = view.getItemHeight(task.id);\r\n\t\t\tconst itemTop = view.getItemTop(task.id);\r\n\t\t\treturn {\r\n\t\t\t\ttop: itemTop || 0,\r\n\t\t\t\theight: height || 0,\r\n\t\t\t\tindex,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tconst dataHeight = view.getTotalHeight();\r\n\t\t\treturn {\r\n\t\t\t\ttop: top > dataHeight ? dataHeight : 0,\r\n\t\t\t\theight: gantt.config.row_height,\r\n\t\t\t\tindex: top > dataHeight ? gantt.getTaskCount() : 0,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\r\nimport { SelectedRegion } from \"./selectedRegion\";\r\n\r\nexport class EventsManager {\r\n\tprivate _mouseDown: boolean = false;\r\n\tprivate _domEvents: any;\r\n\tprivate _originPosition: string;\r\n\tprivate _gantt: any;\r\n\tprivate _restoreOriginPosition: () => void;\r\n\tconstructor(gantt: any) {\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._domEvents = gantt._createDomEventScope();\r\n\t}\r\n\r\n\tattach(selectedRegion: SelectedRegion, useKey?: \"shiftKey\" | \"ctrlKey\" | \"altKey\", ignore?: any): void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst _target = selectedRegion.getViewPort();\r\n\t\tthis._originPosition = window.getComputedStyle(_target).display;\r\n\t\tthis._restoreOriginPosition = () => {\r\n\t\t\t_target.style.position = this._originPosition;\r\n\t\t};\r\n\t\tif (this._originPosition === \"static\") {\r\n\t\t\t_target.style.position = \"relative\";\r\n\t\t}\r\n\t\tconst state = gantt.$services.getService(\"state\");\r\n\t\tstate.registerProvider(\"clickDrag\", () => {\r\n\t\t\tconst result = { autoscroll: false };\r\n\t\t\treturn result;\r\n\t\t});\r\n\r\n\r\n\t\tlet scheduledDndCoordinates = null;\r\n\t\tconst startDragAndDrop = () => {\r\n\t\t\tif (!scheduledDndCoordinates) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._mouseDown = true;\r\n\t\t\tselectedRegion.setStart(gantt.copy(scheduledDndCoordinates));\r\n\t\t\tselectedRegion.setPosition(gantt.copy(scheduledDndCoordinates));\r\n\t\t\tselectedRegion.setEnd(gantt.copy(scheduledDndCoordinates));\r\n\t\t\tscheduledDndCoordinates = null;\r\n\t\t};\r\n\r\n\t\tthis._domEvents.attach(_target, \"mousedown\", (event) => {\r\n\t\t\tscheduledDndCoordinates = null;\r\n\t\t\tlet filterTargets = \".gantt_task_line, .gantt_task_link\";\r\n\t\t\tif (ignore !== undefined) {\r\n\t\t\t\tif (ignore instanceof Array) {\r\n\t\t\t\t\tfilterTargets = ignore.join(\", \");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfilterTargets = ignore;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (filterTargets) {\r\n\t\t\t\tif (gantt.utils.dom.closest(event.target, filterTargets)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstate.registerProvider(\"clickDrag\", () => {\r\n\t\t\t\tconst result = { autoscroll: this._mouseDown };\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\tscheduledDndCoordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t});\r\n\t\tconst eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\r\n\t\tthis._domEvents.attach(eventElement, \"mouseup\", (event) => {\r\n\t\t\tscheduledDndCoordinates = null;\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\tif (this._mouseDown === true) {\r\n\t\t\t\tthis._mouseDown = false;\r\n\t\t\t\tconst coordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t\t\tselectedRegion.dragEnd(coordinates);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._domEvents.attach(_target, \"mousemove\", (event) => {\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\t// GS-854. If we don't have useKey for the click_drag extension,\r\n\t\t\t// check the drag_timeline to not simultaneously use both extensions\r\n\t\t\tconst dragTimeline = this._gantt.ext.clickDrag;\r\n\t\t\tconst dragTimelineUseKey = (this._gantt.config.drag_timeline || {}).useKey;\r\n\t\t\tif (dragTimeline && dragTimelineUseKey) {\r\n\t\t\t\tif (!useKey && event[dragTimelineUseKey]) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet coordinates = null;\r\n\t\t\tif(!this._mouseDown && scheduledDndCoordinates){\r\n\t\t\t\tcoordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t\t\tif(Math.abs(scheduledDndCoordinates.relative.left - coordinates.relative.left) > 5){\r\n\t\t\t\t\t// add small threshold not to start dnd on simple click\r\n\t\t\t\t\tstartDragAndDrop();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (this._mouseDown === true) {\r\n\t\t\t\tcoordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t\t\tselectedRegion.setEnd(coordinates);\r\n\t\t\t\tselectedRegion.render();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdetach(): void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._domEvents.detachAll();\r\n\t\tif(this._restoreOriginPosition){\r\n\t\t\tthis._restoreOriginPosition();\r\n\t\t}\r\n\r\n\t\tconst state = gantt.$services.getService(\"state\");\r\n\t\tstate.unregisterProvider(\"clickDrag\");\r\n\t}\r\n\r\n\tdestructor(): void {\r\n\t\tthis.detach();\r\n\t}\r\n\r\n\tprivate _getCoordinates(event: MouseEvent, selectedRegion: SelectedRegion) {\r\n\t\tconst viewPort = selectedRegion.getViewPort();\r\n\t\tconst viewPortBounds = viewPort.getBoundingClientRect();\r\n\t\tconst { clientX, clientY } = event;\r\n\t\tconst result = {\r\n\t\t\tabsolute: {\r\n\t\t\t\tleft: clientX,\r\n\t\t\t\ttop: clientY,\r\n\t\t\t},\r\n\t\t\trelative: {\r\n\t\t\t\tleft: clientX - viewPortBounds.left + viewPort.scrollLeft,\r\n\t\t\t\ttop: clientY - viewPortBounds.top + viewPort.scrollTop\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn result;\r\n\t}\r\n}","import { EventsManager } from \"./eventsManager\";\r\nimport { ISelectedRegionConfig, SelectedRegion } from \"./selectedRegion\";\r\n\r\nexport default function(gantt: any){\r\n\tif (!gantt.ext) {\r\n\t\tgantt.ext = {};\r\n\t}\r\n\r\n\tconst defaultConfig: ISelectedRegionConfig = {\r\n\t\tclassName: \"gantt_click_drag_rect\",\r\n\t\tuseRequestAnimationFrame: true,\r\n\t\tcallback: undefined,\r\n\t\tsingleRow: false\r\n\t};\r\n\r\n\tconst eventsManager = new EventsManager(gantt);\r\n\r\n\tgantt.ext.clickDrag = eventsManager;\r\n\r\n\tgantt.attachEvent(\"onGanttReady\", () => {\r\n\t\tconst config: ISelectedRegionConfig = { viewPort: gantt.$task_data, ...defaultConfig };\r\n\t\tif (gantt.config.click_drag){\r\n\t\t\tconst clickDrag = gantt.config.click_drag;\r\n\t\t\tconfig.render = clickDrag.render || defaultConfig.render;\r\n\t\t\tconfig.className = clickDrag.className || defaultConfig.className;\r\n\t\t\tconfig.callback = clickDrag.callback || defaultConfig.callback;\r\n\t\t\tconfig.viewPort = clickDrag.viewPort || gantt.$task_data;\r\n\t\t\tconfig.useRequestAnimationFrame = clickDrag.useRequestAnimationFrame === undefined ?\r\n\t\t\t\tdefaultConfig.useRequestAnimationFrame : clickDrag.useRequestAnimationFrame;\r\n\r\n\t\t\tconfig.singleRow = clickDrag.singleRow === undefined ? defaultConfig.singleRow : clickDrag.singleRow;\r\n\t\t\tconst timeline = gantt.$ui.getView(\"timeline\");\r\n\t\t\tconst selectedRegion = new SelectedRegion(config, gantt, timeline);\r\n\t\t\tgantt.ext.clickDrag.attach(selectedRegion, clickDrag.useKey, clickDrag.ignore);\r\n\t\t}\r\n\t});\r\n\r\n\tgantt.attachEvent(\"onDestroy\", () => {\r\n\t\teventsManager.destructor();\r\n\t});\r\n\r\n}","\r\nimport click_drag from \"./click_drag\";\r\nimport drag_timeline from \"./drag_timeline\";\r\nimport export_api from \"./export_api\";\r\nimport fullscreen from \"./fullscreen\";\r\nimport * as keyboard_navigation from \"./keyboard_navigation\";\r\nimport * as marker from \"./marker\";\r\nimport * as multiselect from \"./multiselect\";\r\nimport quick_info from \"./quick_info\";\r\nimport tooltip from \"./tooltip\";\r\nimport undo from \"./undo\";\r\n\r\nexport default {\r\n\tclick_drag,\r\n\tdrag_timeline,\r\n\tfullscreen,\r\n\tkeyboard_navigation,\r\n\tquick_info,\r\n\ttooltip,\r\n\tundo,\r\n\tmarker,\r\n\tmultiselect,\r\n\texport_api,\r\n};","import extensions from \"./ext/extensions_gpl\";\r\nimport * as base from \"./factory/make_instance_web\";\r\nimport * as scope from \"./utils/global\";\r\nconst gantt = (scope as any).gantt = base(extensions);\r\n\r\nexport default gantt;\r\nexport { gantt };"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://dhtmlxgantt/webpack/universalModuleDefinition","webpack://dhtmlxgantt/webpack/bootstrap","webpack://dhtmlxgantt/./sources/utils/utils.js","webpack://dhtmlxgantt/./sources/core/ui/utils/dom_helpers.js","webpack://dhtmlxgantt/./sources/utils/helpers.js","webpack://dhtmlxgantt/./sources/utils/extends.js","webpack://dhtmlxgantt/(webpack)/buildin/global.js","webpack://dhtmlxgantt/./sources/utils/eventable.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_visible_bars_range.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/base_control.js","webpack://dhtmlxgantt/./node_modules/inherits/inherits_browser.js","webpack://dhtmlxgantt/./node_modules/process/browser.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/base.js","webpack://dhtmlxgantt/./sources/utils/env.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://dhtmlxgantt/./node_modules/buffer/index.js","webpack://dhtmlxgantt/./sources/core/ui/layout/cell.js","webpack://dhtmlxgantt/./sources/utils/is_headless.js","webpack://dhtmlxgantt/./sources/utils/placeholder_task.js","webpack://dhtmlxgantt/./node_modules/core-util-is/lib/util.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/select_control.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_bar_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/is_legacy_smart_render.js","webpack://dhtmlxgantt/./sources/utils/global.js","webpack://dhtmlxgantt/./node_modules/safe-buffer/index.js","webpack://dhtmlxgantt/./node_modules/process-nextick-args/index.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/drop_target.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_column_visible.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_visible_cells_range.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_bg_row_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bar_render.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/timeline.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_grid_row_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/mouse_event_container.js","webpack://dhtmlxgantt/./sources/core/ui/grid/grid.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/scales.js","webpack://dhtmlxgantt/./sources/core/ui/utils/html_helpers.js","webpack://dhtmlxgantt/./sources/core/resource_timetable_builder.js","webpack://dhtmlxgantt/./sources/core/ui/layout/layout.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_link_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/factory/get_visible_link_range.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/index.ts","webpack://dhtmlxgantt/./sources/core/worktime/calendar_arguments_helper.js","webpack://dhtmlxgantt/./sources/core/ui/row_position_mixin.js","webpack://dhtmlxgantt/./sources/core/common/duration_formatter_numeric.ts","webpack://dhtmlxgantt/./sources/utils/task_tree_helpers.js","webpack://dhtmlxgantt/./sources/core/gantt_data_range.js","webpack://dhtmlxgantt/./sources/core/datastore/treedatastore.js","webpack://dhtmlxgantt/./sources/core/datastore/power_array.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore.js","webpack://dhtmlxgantt/./sources/utils/timeout.js","webpack://dhtmlxgantt/./sources/core/ui/utils/dom_event_scope.js","webpack://dhtmlxgantt/./node_modules/form-data/lib/browser.js","webpack://dhtmlxgantt/(webpack)/buildin/amd-options.js","webpack://dhtmlxgantt/./node_modules/url/url.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_transform.js","webpack://dhtmlxgantt/./node_modules/string_decoder/lib/string_decoder.js","webpack://dhtmlxgantt/./node_modules/timers-browserify/main.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_writable.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://dhtmlxgantt/./node_modules/events/events.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_readable.js","webpack://dhtmlxgantt/./node_modules/readable-stream/readable-browser.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/response.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/capability.js","webpack://dhtmlxgantt/./node_modules/stream-http/index.js","webpack://dhtmlxgantt/./node_modules/isarray/index.js","webpack://dhtmlxgantt/./sources/core/ui/wai_aria.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/lightbox_optional_time.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/typeselect_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/constraint_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/parent_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/duration_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/radio_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/checkbox_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/time_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/textarea_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/template_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/index.js","webpack://dhtmlxgantt/./sources/core/ui/touch.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/timeline_zoom.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/dhtmlx_hooks.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/jquery_hooks.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/autoscroll.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/index.js","webpack://dhtmlxgantt/./sources/css/skins/contrast_white.js","webpack://dhtmlxgantt/./sources/css/skins/contrast_black.js","webpack://dhtmlxgantt/./sources/css/skins/material.js","webpack://dhtmlxgantt/./sources/css/skins/broadway.js","webpack://dhtmlxgantt/./sources/css/skins/terrace.js","webpack://dhtmlxgantt/./sources/css/skins/meadow.js","webpack://dhtmlxgantt/./sources/css/skins/skyblue.js","webpack://dhtmlxgantt/./sources/core/ui/skin.js","webpack://dhtmlxgantt/./sources/core/facades/layout.js","webpack://dhtmlxgantt/./sources/core/data_task_layers.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/main_layout_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/links_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/tasks_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/main_timeline_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/highlight.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/multi_level.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/locked_level.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/grid/main_grid_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_grid_row_resize_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/resource_histogram_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/resource_matrix_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_grid_line_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/link_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/prerender/task_bg_placeholder.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bg_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_rollup_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_split_task_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_split_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bar_smart_render.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/linked_properties.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/duration.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/predecessor.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/date.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/select.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/number.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/text.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings/keyboard_navigation.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings/default.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/controller.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/tasks_canvas_render.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/layout/scrollbar_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/resizer_cell.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/layout/view_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/view_layout.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_bar_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_link_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/render_factory.js","webpack://dhtmlxgantt/./sources/core/ui/render/layer_engine.js","webpack://dhtmlxgantt/./sources/core/ui/gantt_layers.js","webpack://dhtmlxgantt/./sources/core/ui/mouse.js","webpack://dhtmlxgantt/./sources/core/ui/configurable.js","webpack://dhtmlxgantt/./sources/core/ui/ui_factory.js","webpack://dhtmlxgantt/./sources/core/ui/index.js","webpack://dhtmlxgantt/./sources/core/ui/message.js","webpack://dhtmlxgantt/./sources/core/ui_core.js","webpack://dhtmlxgantt/./sources/locale/locale_ua.ts","webpack://dhtmlxgantt/./sources/locale/locale_tr.ts","webpack://dhtmlxgantt/./sources/locale/locale_sv.ts","webpack://dhtmlxgantt/./sources/locale/locale_sk.ts","webpack://dhtmlxgantt/./sources/locale/locale_si.ts","webpack://dhtmlxgantt/./sources/locale/locale_ru.ts","webpack://dhtmlxgantt/./sources/locale/locale_ro.ts","webpack://dhtmlxgantt/./sources/locale/locale_pt.ts","webpack://dhtmlxgantt/./sources/locale/locale_pl.ts","webpack://dhtmlxgantt/./sources/locale/locale_no.ts","webpack://dhtmlxgantt/./sources/locale/locale_nl.ts","webpack://dhtmlxgantt/./sources/locale/locale_nb.ts","webpack://dhtmlxgantt/./sources/locale/locale_manager.ts","webpack://dhtmlxgantt/./sources/locale/locale_kr.ts","webpack://dhtmlxgantt/./sources/locale/locale_jp.ts","webpack://dhtmlxgantt/./sources/locale/locale_it.ts","webpack://dhtmlxgantt/./sources/locale/locale_id.ts","webpack://dhtmlxgantt/./sources/locale/locale_hu.ts","webpack://dhtmlxgantt/./sources/locale/locale_hr.ts","webpack://dhtmlxgantt/./sources/locale/locale_he.ts","webpack://dhtmlxgantt/./sources/locale/locale_fr.ts","webpack://dhtmlxgantt/./sources/locale/locale_fi.ts","webpack://dhtmlxgantt/./sources/locale/locale_fa.ts","webpack://dhtmlxgantt/./sources/locale/locale_es.ts","webpack://dhtmlxgantt/./sources/locale/locale_en.ts","webpack://dhtmlxgantt/./sources/locale/locale_el.ts","webpack://dhtmlxgantt/./sources/locale/locale_de.ts","webpack://dhtmlxgantt/./sources/locale/locale_da.ts","webpack://dhtmlxgantt/./sources/locale/locale_cs.ts","webpack://dhtmlxgantt/./sources/locale/locale_cn.ts","webpack://dhtmlxgantt/./sources/locale/locale_ca.ts","webpack://dhtmlxgantt/./sources/locale/locale_be.ts","webpack://dhtmlxgantt/./sources/locale/locale_ar.ts","webpack://dhtmlxgantt/./sources/locale/index.ts","webpack://dhtmlxgantt/./sources/publish_helpers/void_script_third.ts","webpack://dhtmlxgantt/./sources/core/destructor.js","webpack://dhtmlxgantt/./sources/core/common/assert.js","webpack://dhtmlxgantt/./sources/core/ui/resize_listener.js","webpack://dhtmlxgantt/./sources/core/gantt_core.js","webpack://dhtmlxgantt/./sources/core/cached_functions.js","webpack://dhtmlxgantt/./sources/core/data_task_types.js","webpack://dhtmlxgantt/./sources/publish_helpers/void_script_second.ts","webpack://dhtmlxgantt/./sources/core/data.js","webpack://dhtmlxgantt/./sources/core/facades/worktime_calendars.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/no_work_time.js","webpack://dhtmlxgantt/./sources/core/worktime/time_calculator.js","webpack://dhtmlxgantt/./sources/core/worktime/dynamic_resource_calendars.js","webpack://dhtmlxgantt/./sources/core/worktime/legacy_resource_config.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/date_duration_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/larger_units_helper.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/workunit_object_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/workunit_map_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/calendar_strategy.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_calendar_merger.js","webpack://dhtmlxgantt/./sources/core/worktime/calendar_manager.js","webpack://dhtmlxgantt/./sources/core/worktime/work_time.js","webpack://dhtmlxgantt/./sources/core/load.js","webpack://dhtmlxgantt/./sources/core/tasks.js","webpack://dhtmlxgantt/./sources/core/grid_column_api.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/scrollable_grid.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/column_grid_dnd.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/index.ts","webpack://dhtmlxgantt/./sources/core/ui/grid/task_grid_row_resize.js","webpack://dhtmlxgantt/./sources/core/ui/row_position_fixed_height.js","webpack://dhtmlxgantt/./sources/core/ui/grid/grid_resize.gpl.js","webpack://dhtmlxgantt/./sources/core/grid_column_api.js","webpack://dhtmlxgantt/./sources/core/dynamic_loading.js","webpack://dhtmlxgantt/./sources/core/plugins/empty_state_screen.ts","webpack://dhtmlxgantt/./sources/core/common/link_formatter_simple.ts","webpack://dhtmlxgantt/./sources/core/plugins/formatters.js","webpack://dhtmlxgantt/./sources/core/plugins/auto_task_types.js","webpack://dhtmlxgantt/./sources/core/plugins/new_task_placeholder.js","webpack://dhtmlxgantt/./sources/core/plugins/resource_assignments.js","webpack://dhtmlxgantt/./sources/core/plugins/resources.js","webpack://dhtmlxgantt/./sources/core/plugins/wbs.js","webpack://dhtmlxgantt/./sources/core/plugins/batch_update.js","webpack://dhtmlxgantt/./sources/core/plugins/index.js","webpack://dhtmlxgantt/./sources/core/dataprocessor/simple_storage.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/extend_gantt.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/data_processor_events.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/data_processor.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/index.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore_render.js","webpack://dhtmlxgantt/./sources/core/datastore/select.js","webpack://dhtmlxgantt/./sources/core/facades/datastore_links.js","webpack://dhtmlxgantt/./sources/core/facades/datastore_tasks.js","webpack://dhtmlxgantt/./sources/core/facades/datastore.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore_hooks.js","webpack://dhtmlxgantt/./node_modules/bluebird/js/browser/bluebird.js","webpack://dhtmlxgantt/./sources/utils/promise.js","webpack://dhtmlxgantt/./sources/core/common/state.js","webpack://dhtmlxgantt/./sources/core/common/templates.js","webpack://dhtmlxgantt/./sources/core/common/dnd.js","webpack://dhtmlxgantt/./node_modules/remote-client/dist/remote.es6.js","webpack://dhtmlxgantt/./sources/core/remote/remote_events.js","webpack://dhtmlxgantt/./sources/core/common/date_parsers/csp_compliant_version.ts","webpack://dhtmlxgantt/./sources/core/common/date_parsers/fast_version.ts","webpack://dhtmlxgantt/./sources/core/common/date.js","webpack://dhtmlxgantt/./sources/core/common/serialize.ts","webpack://dhtmlxgantt/./sources/core/common/ajax.js","webpack://dhtmlxgantt/./sources/core/common/config.ts","webpack://dhtmlxgantt/./sources/core/common/services.js","webpack://dhtmlxgantt/./sources/ext/extension_manager.ts","webpack://dhtmlxgantt/./sources/constants/index.js","webpack://dhtmlxgantt/./sources/factory/make_instance_common.js","webpack://dhtmlxgantt/./sources/factory/make_instance_web.js","webpack://dhtmlxgantt/./sources/ext/undo/undo.ts","webpack://dhtmlxgantt/./sources/ext/undo/monitor.ts","webpack://dhtmlxgantt/./sources/ext/undo/index.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/tooltip.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/tooltipManager.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/index.ts","webpack://dhtmlxgantt/./sources/ext/quick_info/quickInfo.ts","webpack://dhtmlxgantt/./sources/ext/quick_info/index.ts","webpack://dhtmlxgantt/./sources/ext/multiselect.js","webpack://dhtmlxgantt/./sources/ext/marker.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/core.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/modals.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/task_cell.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/task_row.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/header_cell.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/nav_node.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/gantt_node.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/trap_modal_focus.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/eventhandler.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation.js","webpack://dhtmlxgantt/./sources/ext/fullscreen/index.ts","webpack://dhtmlxgantt/./node_modules/querystring-es3/encode.js","webpack://dhtmlxgantt/./node_modules/querystring-es3/decode.js","webpack://dhtmlxgantt/./node_modules/querystring-es3/index.js","webpack://dhtmlxgantt/./node_modules/url/util.js","webpack://dhtmlxgantt/(webpack)/buildin/module.js","webpack://dhtmlxgantt/./node_modules/punycode/punycode.js","webpack://dhtmlxgantt/./node_modules/builtin-status-codes/browser.js","webpack://dhtmlxgantt/./node_modules/xtend/immutable.js","webpack://dhtmlxgantt/./node_modules/to-arraybuffer/index.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://dhtmlxgantt/./node_modules/util-deprecate/browser.js","webpack://dhtmlxgantt/./node_modules/setimmediate/setImmediate.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/request.js","webpack://dhtmlxgantt/./node_modules/https-browserify/index.js","webpack://dhtmlxgantt/./node_modules/ieee754/index.js","webpack://dhtmlxgantt/./node_modules/base64-js/index.js","webpack://dhtmlxgantt/./sources/ext/export_api/index.ts","webpack://dhtmlxgantt/./sources/ext/drag_timeline/eventsManager.ts","webpack://dhtmlxgantt/./sources/ext/drag_timeline/index.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/selectedRegion.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/eventsManager.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/index.ts","webpack://dhtmlxgantt/./sources/ext/extensions_gpl.ts","webpack://dhtmlxgantt/./sources/dhtmlxgantt.gpl.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","obj","iterator","constructor","seed","helpers","plainObjectConstructor","toString","copy","result","isDate","Date","isArray","Array","length","isCustomType","apply","defined","mixin","target","source","force","f","undefined","uid","valueOf","functor","arguments","event","el","handler","capture","addEventListener","attachEvent","eventRemove","removeEventListener","detachEvent","elementPosition","elem","top","left","right","bottom","getBoundingClientRect","box","body","document","docElem","documentElement","parentNode","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","offsetWidth","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","y","Math","round","x","width","height","isVisible","node","display","visibility","getComputedStyle","style","currentStyle","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","a","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","getTargetNode","e","trg","tagName","srcElement","shadowRoot","composedPath","str","String","trim","this","replace","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","element","ShadowRoot","host","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","$position","sort","b","tabIndex","splice","getScrollSize","div","createElement","cssText","appendChild","clientWidth","removeChild","addClassName","removeClassName","split","regEx","RegExp","insertNode","newone","innerHTML","child","firstChild","removeNode","getChildNodes","css","ch","childNodes","len","out","push","toNode","getElementById","querySelector","locateClassName","classname","strict","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","clientX","clientY","isChildOf","parent","hasClass","classList","contains","test","closest","selector","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","console","error","hasShadowParent","getActiveElement","activeElement","getSelection","focusNode","units","second","minute","hour","day","week","month","quarter","year","getFullYear","getMonth","getDate","arrayFilter","arr","callback","filter","checkZeroId","id","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayIncludes","item","includes","arrayFind","find","arrayDifference","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","throttle","timeout","wait","setTimeout","pop","isValidDate","getTime","isStringObject","Function","isNumberObject","isBooleanObject","delay","timer","$cancelTimeout","$pending","args","clearTimeout","$execute","objectKeys","keys","isEventable","replaceValidZeroId","rootId","findBinary","array","prev","low","high","floor","__","g","eval","EventHost","_silent_mode","listeners","_silentStart","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","addEvent","settings","handlerId","once","originalHandler","removeEvent","clear","eventHost","eventName","thisObject","attachAll","callEvent","eventArguments","handlerName","concat","checkEvent","list","eventId","detachAllEvents","gantt","view","config","datastore","viewport","start","getItemIndexByTopPosition","end","y_end","count","max","min","dummy","log","BaseControl","render","set_value","get_value","focus","ctor","superCtor","super_","writable","configurable","TempCtor","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","BaseEditor","show","column","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","isWindowAwailable","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","pna","Duplex","util","inherits","Readable","Writable","v","method","options","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","self","highWaterMark","_readableState","destroyed","set","_destroy","err","cb","global","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","isBuffer","checked","buffer","val","isnan","type","data","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","utils","eventable","domHelpers","Cell","$container","$parent","$config","headerHeight","$gantt","$domEvents","_createDomEventScope","$id","$name","$factory","destructor","$view","$services","getService","detach","_headerClickHandler","detachAll","cell","scrollTo","html","getNode","padding","resize","_final","$preResize","topCont","topSize","getSize","minWidth","maxWidth","minHeight","maxHeight","setSize","_hide","cellIndex","moveView","hidden","$toHTML","content","header","raw","canCollapse","$fill","init","toggle","delegate","collapsed","gravity","getContentSize","$lastSize","contentX","contentY","_getBorderSizes","borders","horizontal","vertical","_currentBorders","_borders","_sizeHeader","_sizeContent","_setBorders","cssHash","xLayout","transform","$root","store","placeholder_task","exists","getItem","types","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isError","isFunction","isPrimitive","__extends","htmlHelpers","_super","SelectControl","sns","getHtmlSelect","_dhx_onchange","onchange","_focus","start_date","end_date","getItemTop","getItemHeight","startCoord","posFromDate","endCoord","x_end","smart_rendering","_smart_render","globalScope","copyProps","SafeBuffer","fn","arg1","arg2","arg3","createDropTargetObject","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","dndTaskId","targetTaskId","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","isLegacyRender","columnIndex","scale","viewPort","cellLeftCoord","cellRightCoord","firstCellIndex","lastCellIndex","_task_default_render","task","_isAllowedUnscheduledTask","_isTaskInTimelineLimits","getItemPosition","cfg","templates","$getTemplates","taskType","getTaskType","getBarHeight","milestone","controlsMargin","padd","item_attribute","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","rtl","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","template","itemId","$getConfig","state","getState","getTask","project","isSummaryTask","isSplitTask","open_split_tasks","$open","select_task","isSelectedTask","drag_id","drag_mode","touch_drag","link_source_id","link_target_id","highlight_critical_path","isCriticalTask","link_landing_area","from_id","from_start","link_from_start","to_start","link_to_start","allowDrag","isLinkAllowed","dragClass","_combine_item_class","task_class","styles","side","margin","_get_link_crossing_css","marginStyle","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","_waiAria","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","cssClass","text","abs","cond","leftside","$source","links","start_to_start","$target","finish_to_start","finish_to_finish","_get_conditions","ln","link","getLink","tp","min_date","marginLeft","max_date","marginRight","renderer","type_renderers","defaultRenderer","ScaleHelper","topPositionMixin","canvasRender","Timeline","$scaleHelper","_posFromDateCache","_timelineDragScroll","container","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","col_width","full_width","trace_x","rendered","attr","linksAttr","bindLinks","link_attribute","layers","_createLayerConfig","tasks","linkLayers","_attachLayers","dragTimeline","attach","dataHeight","scale_height","refresh","backgroundImage","rowStore","getTotalHeight","data_els","contentHeight","contentWidth","scrollHeight","scrollWidth","scrolled","_refreshScales","smart_scales","getViewPort","scales","_scales","_getScaleChunkHtml","taskFilter","expose","$ui","taskBar","hide_bar","taskSplitBar","append","taskRollupBar","taskBg","_taskLayers","_linkLayers","_bindStore","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","update","bar_layer","addLayer","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","getDatastore","linkRenderer","linkLayer","_linkRenderer","staticRender","_staticBgHandler","static_background","timeline_placeholder","staticBgContainer","$task_bg_static","insertBefore","staticBackgroundHeight","getScale","destroy","_clearLayers","removeLayer","_render_tasks_scales","scales_html","outer_width","_getScales","availWidth","autosize","autosize_min_width","cfgs","prepareConfigs","min_column_width","fromPos","toPos","scale_row_class","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","cells","date","format","date_to_str","startIndex","endIndex","inherit_scale_class","scale_cell_class","cssclass","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","dateValue","columnIndexByDate","assert","wholeCells","partCell","roundPos","_getNextVisibleColumn","columns","ignores","visibleDateIndex","_getPrevVisibleColumn","_getClosestVisibleColumn","days","trace_x_ascending","ignore_x","dateIndex","visibleIndex","visibleDate","transition","trace_index_transition","xLeft","xRight","rowHeight","taskId","isMilestoneRender","task_height","bar_height","task_height_offset","sqrt","primaryScale","getSubScales","sortScales","add","step","_timelineCacheAttached","_resetTopPositionHeight","_unbindStore","_resetHeight","events","mouseEvents","h","gridResize","rowResize","ColumnDnd","Grid","$state","gridAriaAttr","gridAttrString","gridDataAriaAttr","gridDataAttrString","_ganttConfig","reorderColumns","reorder_grid_columns","$grid","gridScaleRowAttrString","$grid_scale","$grid_data","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","_columnDND","_validateColumnWidth","numericWidth","outerWidth","getGridColumns","innerWidth","elasticColumns","grid_elastic_columns","scrollable","_setColumnsWidth","columnProperty","newColumnWidth","col","min_grid_column_width","columnsWidth","grid_width","_getGridWidth","_gridCacheAttached","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getColumnIndex","excludeHidden","hiddenIndexShift","getColumn","gridLine","gridTaskRowResizer","resize_rows","_refreshPlaceholderOnStoreUpdate","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","close","open","_getColumnWidth","min_width","new_width","max_width","_checkGridColumnMinWidthLimits","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","share","curExtra","_getColsTotalWidth","cols_width","parseFloat","unknown","gridWidth","autofit","diff","delta","changed","_setContentSize","locale","reverse","labels","lineHeigth","last","colWidth","_sort","direction","grid_header_class","label","gridScaleCellAttrString","lineHeight","dateHelper","services","getSum","sizes","to","setSumWidth","sum_width","parts","adjustSize","splitSize","full","cellSize","_isLegacyMode","scaleConfig","scale_unit","date_scale","subscales","_prepareScaleObject","legacyMode","initTemplate","min_coll_width","container_width","minDate","maxDate","heights","configs","main_scale","initScaleConfig","processIgnores","initColSizes","limitVisibleRange","unshift","alineScaleColumns","reverseScale","setPosSettings","indexes","trace_indexes","_ignore_time_config","skip_off_time","skip","probe","isWorkTime","display_count","min_col_width","line_height","cont_width","column_count","eachColumn","iterateScales","lower_scale","upper_scale","upper_dates","lower_dates","prevUpper","up","target_index","upper_start","upper_end","lower_start","lower_end","targetWidth","curr","tzOffset","getTimezoneOffset","_correct_dst_change","dates","lastDate","outDate","shared","attributes","_this","entry","_attributes","getHtmlOption","_getHtmlContainer","getHtmlButton","getHtmlDiv","getHtmlLabel","getHtmlInput","_getHtmlAttributes","tag","resourceTaskCache","$data","tasksStore","resource","resourceProperty","timeline","cacheKey","items","assignmentsPassed","timegrid","process_resource_assignments","resource_property","$role","getResourceAssignments","$resource_id","$task_id","getTaskBy","assignments","scaleUnit","scaleStep","precalculatedTimes","task_id","unscheduled","firstColumn","currDate","calendar","work_time","getTaskCalendar","cachedTimes","timestamp","calculateResourceLoadFromAssignments","timetable","resource_render_empty_cells","calculateResourceLoad","Layout","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenScrollbars","scrollbarsToHide","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","$scrollbarRepaint","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","newSizeValue","isGravity","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","$originalWidthStored","$originalWidth","$originalHeightStored","$originalHeight","isChild","cellId","alert","rows","cols","views","initUI","getCells","_cleanElSize","_getBoxStyles","computed","properties","boxSizing","clientHeight","MozBoxSizing","horPaddings","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","vertPaddings","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","borderBox","innerHeight","outerHeight","boxSizes","contentSizes","_sizes","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","parentVisibility","hide_empty","hideCell","cellView","marginSide","dx","dy","sourceTop","sourceHeight","targetTop","targetHeight","sourceLeft","sourceRight","targetLeft","targetRight","tmp","getLinkRectangle","coordinates","calculated","clearCache","initialized","getVisibleItems","rec","buildCache","visibleBoxes","ids","workunit_map_cache_1","workunit_object_cache_1","larger_units_helper_1","LargerUnitsCache","createCacheObject","Map","WorkUnitsMapCache","WorkUnitsObjectCache","IsWorkTimeArgument","ClosestWorkTimeArgument","CalculateEndDateArgument","duration","GetDurationArgument","getWorkHoursArguments","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","quickPositionHelperFactory","getItemTopCache","getRowTopCache","getItemHeightCache","totalHeightCache","getItemHeightCacheState","quickPosition","resetCache","newState","getCacheStateTotalHeight","shouldClearHeightCache","getRowTop","canUseSimpleCalculation","all","getIndexRange","itemIndex","getIndexById","parentId","_fillHeightCache","defaultHeight","row_height","eachItem","globalHeight","itemHeightCache","sumHeight","oldState","newValue","getHeight","totalHeight","countVisible","current","next","getIdByIndex","DurationFormatterNumeric","canParse","parse","copyLinkIdsArray","linkIds","targetHash","isLinkExists","copyLinkIds","getSubtreeLinks","isTaskExists","eachTask","getSubtreeTasks","PrimaryScaleHelper","_init_tasks_range","scale_offset_minimal","helper","_scale_range_unit","range","start_interval","resolveConfigRange","onlyProjectTasks","getTaskByTime","getSubtaskDates","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","powerArray","DataStore","isPlaceholderTask","TreeDataStore","_branches","pull","$initItem","loadedItem","initItem","existingItem","move","$index","root_id","$parentProperty","parentProperty","$getRootId","$openInitially","openInitially","visibleOrder","$create","fullOrder","_searchVisibleOrder","_indexRangeCache","_eachItemMainRangeCache","_getItemsCache","_skip_refresh","getConfig","splitParents","splitItems","taskOpenState","taskVisibility","haveSplitItems","_attachDataChange","_isSplitItem","canOpenSplitTasks","$split_subtask","$expanded_branch","_buildTree","setParent","_add_branch","$level","calculateItemLevel","$local_index","_updateOrder","hasChild","loaded","_parseInner","_addItemInner","_move_branch","$rendered_parent","_changeIdInner","oldId","newId","_replace_branch_child","_traverseBranches","branch","_removeItemInner","sid","tindex","source_pid","tbranch","placeholderIds","tid","_moveInner","childId","pid","getSiblings","siblings","previousSibling","clearAll","level","eachParent","_setParentInner","new_pid","silent","_eachItemCached","cache","_eachItemIterate","startId","itemsStack","useCache","startItem","parentsHash","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","els","temp","rule","renderedParent","actualParent","_skipTaskRecalculation","$powerArray","$removeAt","$remove","$find","$insertAt","$each","master","$map","$filter","_filterRule","copyOnParse","isSilent","updateItem","removeItem","order","data_size","addItem","changeId","sindex","$destroyed","unselect","alreadySilent","arraysEqual","arr1","arr2","quick","skipFilter","_quick_refresh","_mark_recompute","oldOrder","serialize","filteredOrder","getItems","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","updPerSecond","_on_timeout","ceil","createScope","eventScope","staticArray","extend","FormData","__webpack_amd_options__","punycode","Url","protocol","slashes","auth","port","hostname","query","pathname","path","href","urlParse","resolve","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","url","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","encodeURIComponent","escape","qm","stringify","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","Transform","_transformState","afterTransform","er","ts","transforming","writecb","writechunk","rs","reading","needReadable","_read","needTransform","writeencoding","sync","_transform","flush","_flush","prefinish","stream","chunk","_write","_this2","err2","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","_byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","scope","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","Stream","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","getBuffer","_","hasInstance","pipe","_isUint8Array","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","emitErrorNT","readableDestroyed","writableDestroyed","endEmitted","EventEmitter","_events","_maxListeners","defaultMaxListeners","setMaxListeners","context","listener","newListener","warned","trace","fired","listenerCount","evlistener","emitter","ReadableState","EElistenerCount","debugUtil","debug","debuglog","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","getPrototypeOf","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","wrap","paused","_fromList","PassThrough","capability","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","IncomingMessage","xhr","response","fetchTimer","_mode","headers","rawHeaders","trailers","rawTrailers","_fetchResponse","statusCode","status","statusMessage","statusText","writableStream","WritableStream","Promise","reject","_destroyed","_resumeFetch","abort","pipeTo","reader","getReader","then","_xhr","_pos","responseURL","getAllResponseHeaders","_charset","overrideMimeType","mimeType","charsetMatch","_onXHRProgress","readyState","VBArray","responseBody","toArray","responseText","newData","MSStreamReader","onprogress","onload","readAsArrayBuffer","fetch","ReadableStream","abortController","AbortController","blobConstructor","Blob","getXHR","XDomainRequest","checkTypeSupport","responseType","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","vbArray","ClientRequest","statusCodes","request","opts","defaultProtocol","location","toUpperCase","req","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","dateString","aria-label","_taskCommonAttr","tooltip_text","$dataprocessor_class","drag_move","taskRowAttr","order_branch","linkAttr","linkTypes","toStart","fromStart","start_to_finish","drag_link","gridSeparatorAttr","rowResizerAttr","lightboxHiddenAttr","lightboxVisibleAttr","lightboxAttr","lightboxButtonAttrString","buttonName","role","tabindex","lightboxHeader","headerText","lightboxSelectAttrString","time_option","years","months","hours","minutes","lightboxDurationInputAttrString","section","column_duration","aria-valuemin","inlineEditorAttr","multiselect","attrs","new_task","reorderMarkerAttr","removeAttribute","gridCellAttrString","textValue","editor","gridAddButtonAttrString","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","payload","wai_aria_attributes","_extend_to_optional","lightbox_block","optional_time","mapping","_resolve_default_mapping","disable","enable","disabled","update_block","_lightbox_id","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","TypeselectControl","typeKey","typeValue","oldOnChange","changeLightboxType","_lightbox_new_type","ConstraintControl","isNonTimedConstraint","constraint_types","ASAP","ALAP","toggleTimeSelect","timeSelects","isNonTimed","getTimePicker","typeSelect","_time_format_order","_eventsInitialized","constraintDate","constraint_date","_fill_lightbox_select","constraintType","constraint_type","getConstraintType","getTimePickerValue","ParentControl","_display","item_id","allow_root","root_label","_filter","map_to","tmpDom","newOptions","onselect","replaceChild","DurationControl","getFormatter","formatter","_getStartDate","getElementsByTagName","_getDuration","singleDate","single_date","readonly","ariaAttr","durationInputClass","sectionClassName","duration_val","inps","btns","endspan","_calc_date","task_end_date","task_date","_change_duration","onclick","onkeydown","charCode","keyCode","which","constants","KEY_CODES","DOWN","UP","calculateDuration","startDate","endDate","RadioControl","radio","default_value","CheckboxControl","single_value","checkboxes","TimeControl","auto_end_date","_update_lightbox_select","selects","autofix_end","_get_timepicker_step","_getEndDate","TextareaControl","_get_input","TemplateControl","ResourcesControl","getHtmlButtons","buttons","floatRight","_migrate_buttons","getHtmlTimePickerOptions","start_year","end_year","tdate","timeFormat","year_range","month_full","first","_time_values","time_picker","setTime","getHours","getMinutes","_lightbox_methods","_lightbox_template","_lightbox_root","registerProvider","lightbox","showLightbox","getLightbox","_center_lightbox","showCover","_fill_lightbox","round_dnd_dates","_is_chart_visible","time_step","getLabel","sections","updateCollection","list_name","collection","serverList","resetLightbox","getLightboxType","_lightbox_type","lightboxDiv","fullWidth","ds","classNames","cspEnvironment","csp","salesforceEnvironment","setParentNode","_lightbox","_is_lightbox_timepicker","wide_form","buttons_left","buttons_right","drag_lightbox","onmousedown","_ready_to_dnd","ontouchstart","touches","onselectstart","cursor","_init_dnd_events","_render_sections","backup_overflow","overflow","labelBlock","inputBlock","inputId","bindLabelsToInputs","_init_lightbox_events","block","con","lightbox_additional_height","scroll_top","scroll_left","view_height","_cover","lightbox_events","gantt_save_btn","_save_lightbox","gantt_delete_btn","$click","hideLightbox","gantt_cancel_btn","_cancel_lightbox","sec","buttonTarget","SPACE","shiftKey","click","edit_save","edit_cancel","getLightboxValues","$new","_update_flags","refreshData","addTask","getTaskIndex","refreshTask","updateTask","hideCover","_custom_lightbox","_set_lightbox_values","lightbox_header","task_time","getLightboxSection","getValue","setValue","get_template_control","control","get_select_control","get_textarea_control","get_time_control","eventElement","_move_while_dnd","_finish_dnd","_dnd_start_lb","gantt_unselectable","lb","now","pageX","pageY","_lb_start","ariaAttrs","date_part","time_format","getTimeFormat","limit_time_select","first_hour","last_hour","setHours","needSetTime","mapOffset","checkbox","resources","constraint","typeselect","_simple_confirm","message","ok","confirm","type_value","_silent_redraw_lightbox","oldType","formData","updTask","addTouchEvents","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","scrollX","scrollState","visible","getTaskDND","tasksDnD","_tasks_dnd","touch_feedback","touch_feedback_duration","_prevent_touch_scroll","_touch_feedback","vibrate","touchHandlers","names","accessor","ignore","dblclicktime","actionMode","scrollMode","actionStart","longTapTimer","currentDndId","dndNodes","targetView","multiTouchEvents","start_drag","on_mouse_move","preventDefault","cancelBubble","newScrollState","scrollView","block_action","_touch_drag","passive","warn","allViews","$layout","findTargetView","_locate_css","locate","on_mouse_down","renders","_getTaskLayers","isTaskVisible","_i","task_attribute","cloneNode","_i2","taskNode","_copy","cloneTaskRendered","_start_dnd","remove","on_mouse_up","onDoubleClick","cancelable","USE_KEY","_defaultScales","TimelineZoom","zoomIn","getCurrentLevel","setLevel","zoomOut","_levels","_activeLevelIndex","getLevels","zoomLevel","_getZoomIndexByName","_setLevel","levelName","_getVisibleDate","scrollPos","_visibleDate","cursorOffset","nextConfig","chartConfig","cursorDate","newPosition","middleDate","_attachWheelEvent","_domEvents","_useKey","_handler","_defaultHandler","timelineOffset","wheelUp","deltaY","wheelDelta","stopPropagation","_setScaleSettings","_setScaleDates","_initialStartDate","_initialEndDate","activeLevelIndex","_mapScales","levels","_minColumnWidth","minColumnWidth","_maxColumnWidth","maxColumnWidth","_widthStep","widthStep","useKey","_initialized","trigger","_stepUp","_stepDown","nextLevel","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","vs","av","grid","border","gridId","gridObj","dhtmlXCellObject","jQuery","$","methods","dhx_gantt","each","newgantt","Gantt","getGanttInstance","isHeadless","scrollRange","scrollStep","scrollDelay","scrollSpeed","interval","isMove","delayTimeout","startPos","started","eventPos","isDisplayed","isScrollState","dragMarker","isResize","isLink","isClickDrag","autoscroll","defineDelayTimeout","speed","autoscroll_speed","tick","autoscroll_delay","defineScrollInterval","autoscrollInterval","isScroll","targetTouches","gridDrag","posX","posY","need_scroll","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","zoom","skins","link_line_width","link_arrow_size","_second_column_width","_third_column_width","material","_redefine_lightbox_buttons","getTaskNode","indx","broadway","_config_buttons_left","_config_buttons_right","terrace","meadow","skyblue","_get_skin","skin","skinset","_configure","resetSkin","getTimeline","getGrid","getBaseCell","getVerticalScrollbar","baseCell","getAttachedScrollbar","getHorizontalScrollbar","attachedScrollbar","DEFAULT_VALUE","tryCall","fallback","getTaskTop","getTaskPosition","getTaskBarHeight","getTaskHeight","roundTaskDates","domAttr","getLinkNode","oldH","oldV","scrollHorizontal","scrollVertical","verticalViews","_getLinkedViews","horizontalViews","commonViews","viewId","$skipSmartRenderOnScroll","newV","newH","showDate","date_x","scroll_to","task_scroll_offset","showTask","leftPos","_scroll_state","gridCell","timelineCell","x_pos","y_pos","scroll_size","x_inner","y_inner","scrollVer","scrollHor","horState","verState","getLayoutView","cellName","scrollLayoutCell","horizontalScroll","verticalScroll","addTaskLayer","addLinkLayer","initializer","_legacyGridResizerClass","layout","resizers","gridResizer","onCreated","mainTimeline","show_chart","colsWidth","hideGrid","show_grid","grid_limits","ganttContainerWidth","verticalScrollbarWidth","gridOverflow","original_grid_width","skinSettings","_initScrollStateEvents","_getVerticalScrollbar","_getHorizontalScrollbar","oldPos","newPos","$scroll_ver","$scroll_hor","_findGridResizer","gridFirst","_getSiblings","_behind","_front","onInitialized","resizeInfo","initialWidth","prevCellWidth","nextCellWidth","viewCell","limits","newBehindSize","newFrontSize","oldBackSize","oldFrontSize","newBackSize","oldSize","onDestroyed","initLinksDND","_link_landing","_link_target_task","_link_target_task_start","_link_source_task","_link_source_task_start","markerDefaultOffset","scrollDefaultSize","getDndState","DnD","dnd","sensitivity","updates_per_second","mousemoveContainer","getLinePos","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","getPosition","markerSize","getMarkerSize","viewportSize","getVieportSize","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","ganttOffsetY","updateMarkedHtml","drag_link_class","resetDndState","showDirectingLine","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","tan","angle","atan","coordinateCircleQuarter","PI","sin","cos","ieTransform","shiftLeft","shiftTop","sX","eX","sY","eY","_dir_start","dd","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","eventTarget","_dir_end","targetChanged","_get_link_type","addLink","createLinkDND","createTaskDND","round_task_dates","dragMultiple","before_start","before_finish","after_finish","_handlers","clear_drag_state","set_actions","drag_from_start","evs","stage","_move","_resize","_resize_progress","start_x","start_y","coords_x","_drag_task_coords","minDurationInUnits","_calculateMinDuration","min_duration","_init_task_timing","diffValue","_find_max_shift","dragItems","correctShift","minX","maxX","maxShift","minShift","multipleDragShift","new_start","new_end","obj_s_x","obj_e_x","_mouse_position_change","_is_number","_update_on_move","_update_item_on_move","original","curr_date","dragHash","_isMultiselect","getSelectedTasks","dragProject","drag_project","initialDrag","childDrag","_bulk_dnd","_update_parents","_get_drag_mode","_fix_dnd_scale_time","fixStart","correct_work_time","roundDate","fixEnd","_fix_working_times","getClosestWorkTime","correctTaskWorkTime","_finalize_mouse_up","_fireEvent","_dhx_changed","finalizingBulkMove","moveCount","doFinalize","batchUpdate","modes","dragProperty","selectedTasksIds","selectedTask","_addSubtasksToDragMultiple","params","drag_state","drag_multiple","summaryId","taskDnD","linkDnD","_linksDnD","_tasksDnD","_attachDomEvents","_attachStateProvider","extendDom","_clearDomEvents","_clearStateProvider","_delete_link_handler","question","link_description","confirm_link_deleting","deleteLink","coll","coll_date","scale_step","unregisterProvider","gridToPageCoordinates","gridPos","setWidthWithinContainer","containerSize","removeLineHighlight","markerLine","highlightPosition","ePos","gridHeight","getTaskMarkerPosition","pointerEvents","markerFolder","maxBottom","folderHighlightWidth","highlightFolder","linePos","indentNode","indent","itemTop","itemHeight","childCount","getLineMarkerPosition","markerLineTop","highlightRow","dropTarget","relTargetPos","eventTop","findClosesTarget","allowedLevel","targetLevel","findTargetAbove","findTargetBelow","targetTask","targetAbove","targetBelow","rootLevel","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","checkPlaceholderTask","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","$drop_target","doctype","minTop","firstVisibleTaskIndex","firstVisibleTaskId","firstVisibleTaskPos","hiddenTaskPart","gridPosition","gridBottom","placeholderRowHeight","getTargetTaskId","lockLevel","order_branch_free","getStore","lastTaskOfLevel","last_item","_getGridPos","_getTargetY","_getTaskByY","dropIndex","gridDataSizes","targetY","over","nextId","prevId","rowDnd","rowDndMarker","extendGantt","inlineEditors","_inlineEditors","createEditors","initEvents","clearEvents","scroll_on_click","_is_icon_open_click","conf","sorting_method","callHandler","createTask","totalWidth","getRowRectangle","getVisibleRange","resize_el","task_grid_row_resizer_attribute","getRectangle","getVisibleCellsRange","isColumnVisible","resourceTimetable","renderBar","renderConnection","prevLevel","getResourceLoad","renderedHistogramCells","renderedHistogramRows","renderedHistogramCapacity","detachRenderedHistogramCell","renderedRow","renderCapacityElement","capacityMatrix","maxCapacity","renderedElement","capacityElement","capacity","colStart","colEnd","bar","connection","renderHistogramLine","renderHistogramCell","histogram_cell_class","histogram_cell_label","histogram_cell_allocated","smartRendering","histogram_cell_capacity","row","checkedColumns","renderedCell","renderedResourceLines","renderResourceLineCell","resource_cell_class","resource_cell_value","detachRenderedResourceLine","aria","date_grid","tree","grid_indent","grid_blank","grid_file","grid_open","grid_folder","align","justifyContent","center","getGlobalTaskIndex","grid_row_class","css_template","isSelected","onrender","rowNode","cellNode","external_render","adapter","isElement","renderElement","isInViewPort","drawer","current_pos","dirs","down","point","get_lines","dots","line_to","get_path","line","_get_line","get_wrapper_sizes","wrapper_size","link_wrapper_width","get_line_sizes","line_size","marginTop","render_line","innerPos","get_direction","vect","path_builder","point_to","get_points","pt","get_endpoint","xy","shiftX","lineType","get_line_type","forward","sign","milestoneHeight","lines","cssTemplate","link_class","isCriticalLink","endpoint","_render_link_arrow","borderColor","placeholderConfig","lastTaskId","placeholderTask","calendar_id","bgPlaceholder","renderedCells","isRendered","detachRenderedCell","getCellClassTemplate","task_cell_class","timeline_cell_class","getCellContentTemplate","timeline_cell_content","renderOneCell","contentTemplate","cssTemplateContent","htmlTemplateContent","customCell","static_background_cells","cellCssTemplate","cellHtmlTemplate","show_task_cells","odd","task_row_class","placeholderTop","placeholderHeight","prepareData","createBaseBarRender","defaultRender","renderedNodes","checkVisibility","generateChildElement","childCopy","$rendered_at","getKey","renderParentId","rollup","$rollup","itemNode","rollupKey","isBarInViewport","isInViewPortParent","isInViewPortChild","isProject","resetProjectDates","shouldUseSplitRendering","splitKey","mapTo","keepDatesOnEdit","decreaseStartDate","keepDurationOnEdit","schedule_from_end","defaultActionOnEdit","TextEditor","formatters","durationFormatter","PredecessorEditor","linkFormatter","parseInputString","predecessors","delimiter","formatPredecessors","formatLinkKey","lag","getLinksDiff","predecessorCodes","selectedLinks","getSelectedLinks","existingLinksSearch","linkId","linksToAdd","linkKey","linksToDelete","linksDiff","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","minValue","maxValue","minAttr","maxAttr","SelectEditor","optionsHtml","NumberEditor","controller","onBlurDelay","keyNav","keyboardNavigation","activeCell","locateCell","columnName","editorState","getEditorConfig","startEdit","command","hasEditor","keyboard","preventKeyNav","ENTER","ctrlKey","metaKey","ESC","LEFT","RIGHT","editorType","DELETE","TAB","editPrevCell","editNextCell","modifiers","anyModifier","alt","ctrl","meta","getCommandHandler","onShow","onHide","isChanged","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","getMapping","keyboard_navigation_cells","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","durationEditorFactory","linkedPropertiesProcessor","initConfigs","editor_types","number","predecessor","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","findVisibleIndex","updateTaskDateProperties","ganttHandlers","_itemId","_columnName","_editor","_editorType","_placeholder","batch_update","editorConfig","_getItemValue","oldValue","inline_editors_date_processing","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","moveTask","nextItem","editNextRow","skipReadonly","editPrevRow","ScrollbarCell","SCROLL_MODIFIER_KEYS","_scrollHorizontalHandler","_scrollVerticalHandler","_outerScrollVerticalHandler","_outerScrollHorizontalHandler","_mouseWheelHandler","_isHorizontal","scrollPosition","_isVertical","_initVertical","_initHorizontal","_initMouseWheel","_initLinkedViews","_getRootParent","_eachView","eachCell","_updateLinkedViews","scrollHorizontally","_scrolling","codeScrollLeft","scrollVertically","_wheel_time","_oldLeft","_getScrollSize","outerSize","isHorizontal","linked","scrollProperty","innerSizeProperty","outerProperty","_getScrollOffset","cellScrollSize","nonScrollableSize","outerScroll","innerScroll","scrollSizes","_setScrollSize","toggleVisibility","_getScaleOffset","parentLayout","_oldTop","_checkWheelTarget","targetNode","connectedViews","wheelSpeed","wheelSpeedConfig","wheel_scroll_sensitivity","ff","deltaX","wheelDeltaX","multiplier","deltaMode","wx","wy","horizontalScrollModifier","horizontal_scroll_key","oldLeft","detail","oldTop","ViewCell","childConfig","createView","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","barRectangle","sourceBox","targetBox","genericViewPortChecker","basicGetRectangle","basicGetRange","task_area_pulls","task_area_renderers","getRenderer","renderMethod","updateMethod","renderCallbackMethod","specializedViewPortChecker","layer_attribute","render_item","layerView","viewConfig","rendererViewPort","dom","useBuffer","remove_item","clear_container","get_visible_range","prepare_data","render_items","createDocumentFragment","vis","itemsSearch","renderedItems","newElements","update_items","nodesToRemove","renderCalledFor","restore","replace_item","newNode","change_id","oldid","newid","clearRenderers","renderFactoryProvider","mergeFilters","filter_methods","filter_method","renderFactory","createGroup","getContainer","relativeRoot","defaultFilters","initLayer","renderGroup","tempCollection","renderers","filters","getLayers","_add","pending","topmost","requestUpdate","onUpdateRequest","eachLayer","createLayerFactory","getVisibleTaskRange","getVisibleLinksRangeFactory","isLinkInViewport","previusSiblingContainer","defaultContainerSibling","setService","rangeFunction","removeTaskLayer","_clearTaskLayers","_getLinkLayers","removeLinkLayer","_clearLinkLayers","createMouseHandler","eventHandlers","doubleclick","contextMenu","addEventTarget","onClick","findEventHandlers","callEventHandlers","_multiselect","selectTask","onContextMenu","returnValue","delegateHandlers","details_on_dblclick","onMouseMove","_last_move_event","domEvents","reset","elementHandlers","extendSettings","parentSettings","own","$extendedConfig","setPrototypeOf","parentView","parentConfig","parentTemplates","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","ResourceGrid","ResourceTimeline","ResourceHistogram","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderRollupTaskBar","renderTaskBg","renderLink","gridRenderer","resourceMatrixRenderer","resourceHistogramRenderer","gridTaskRowResizerRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","resourceRow","resourceHistogram","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","info","expire","timers","getFirstDefined","values","_createBox","cancel","contentId","message_ok","message_cancel","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","hideAll","popups","modalbox","codeHelpers","_eventRemoveAll","uiApi","$mouseEvents","createLayoutFacade","targetAttribute","_locateHTML","initial_scroll","firstTask","getTaskByIndex","activePlugins","plugins","availablePlugins","auto_scheduling","click_drag","clickDrag","critical_path","drag_timeline","export_api","exportToPDF","fullscreen","grouping","groupBy","keyboard_navigation","addMarker","eachSelectedTask","overlay","quick_info","quick_info_content","tooltip","tooltips","undo","plugin","default","month_short","day_full","day_short","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","section_type","column_wbs","column_text","column_start_date","column_add","link_start","link_end","type_task","type_project","type_milestone","weeks","section_constraint","asap","alap","snet","snlt","fnet","fnlt","mso","mfo","resources_filter_placeholder","resources_filter_label","empty_state_text_link","empty_state_text_description","LocaleManager","addLocale","_locales","getLocale","locale_ar_1","locale_be_1","locale_ca_1","locale_cn_1","locale_cs_1","locale_da_1","locale_de_1","locale_el_1","locale_en_1","locale_es_1","locale_fa_1","locale_fi_1","locale_fr_1","locale_he_1","locale_hr_1","locale_hu_1","locale_id_1","locale_it_1","locale_jp_1","locale_kr_1","locale_manager_1","locale_nb_1","locale_nl_1","locale_no_1","locale_pl_1","locale_pt_1","locale_ro_1","locale_ru_1","locale_si_1","locale_sk_1","locale_sv_1","locale_tr_1","locale_ua_1","en","ar","be","ca","cn","cs","da","de","es","fa","fi","fr","he","hr","hu","it","jp","kr","nl","no","pl","ro","ru","si","sk","sv","tr","ua","_dp","check","show_errors","listenWindowResize","resizeDelay","resizeTimeout","container_resize_timeout","previousSize","getContainerSize","container_resize_method","lowlevelResizeWatcher","currentSize","repaintGantt","previousHeight","previousWidth","getPropertyValue","resizeWatcher","contentWindow","addResizeListener","calculateScaleRange","invalidContainerMessage","validateNode","isHTMLElement","_reinit","_quickRefresh","stores","_getDatastores","dropLayout","rebuildLayout","storeNames","resetLayout","initTemplates","edit","delete","confirm_deleting_title","deleteTask","preserveScroll","preserve_scroll","new_pos","verticalScrollbar","setSizes","getTaskRowNode","prevOffset","time_unit","offsetChanged","activate","_cached_functions","update_if_changed","critical_path_mode","wrap_methods","_prefetch_originals","prefetch","methodname","optimizer","argumentsArray","get_arguments_hash","cached_values","has_cached_value","get_cached_value","cache_value","arguments_hash","is_date","getUTCDate","stringify_argument","deactivate","setup","override_gantt","gantt_methods","optimize_render","deactivTimeout","checkType","isUnscheduledTask","show_unscheduled","taskStart","taskEnd","_getProjectEnd","project_end","_getProjectStart","project_start","getDefaultTaskDate","parent_id","_set_default_task_timing","details_on_create","parseDate","getSelectedId","getTaskTimingMode","task_type","$no_start","$no_end","$rendered_type","updateTaskTiming","$effective_calendar","getSubtaskInfo","task_mode","dirty","$calculate_duration","effectiveCalendar","inherit_calendar","taskMode","taskTiming","getSubtaskDuration","updateAll","has_changed","oldStart","oldEnd","upper","lower","colIndex","steps","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","_hasDuration","hasDuration","mergeCalendars","createCalendar","addCalendar","getCalendar","getCalendars","getResourceCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","fixedUnits","hasWorkTime","createArgumentsHelper","NoWorkTimeCalendar","TimeCalculator","$disabledCalendar","_getCalendar","manager","dynamicCalendars","getCalendarIdFromMultipleResources","resourceAssignments","resource_id","getResourcesCalendarKey","tempCalendar","assignment","resourceId","mergeResourceCalendars","isLegacyResourceCalendarFormat","resourceCalendarsProperty","getResourceProperty","resourceCalendarsConfig","resource_calendars","propertyName","getCalendarIdFromLegacyConfig","calendarId","DateDurationCache","_getCacheObject","_cache","unitCache","stepCache","yearCache","durations","endDates","_endDateCacheKey","_durationCacheKey","getEndDate","compute","startDateTimestamp","resultTimestamp","getDuration","endDateTimestamp","getMinutesPerWeek","weekStart","_weekCache","has","_calendar","minutesPerWeek","week_start","getHoursPerDay","getMinutesPerMonth","monthStart","_monthCache","minutesPerMonth","nextMonth","subCache","setItem","rawValue","CalendarWorkTimeStrategy","_workingUnitsCache","_largeUnitsCache","_dateDurationCache","_worktime","_cached_timestamps","_cached_timestamps_count","_clearCaches","_getUnitOrder","_resetTimestampCache","_timestamp","UTC","_checkIfWorkingUnit","_is_work_day","_getWorkHours","_is_work_hour","startHour","endHour","_getTimeOfDayStamp","dayEnd","_is_work_minute","checkTime","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","checkFirst","checkLast","isLastStep","_isWorkTime","unitOrder","biggerTimeUnit","_getClosestWorkTimeFuture","_getMinutesPerHour","hourStart","hourEnd","worktimes","_getMinutesPerDay","durationMinutes","durationHours","_getWorkUnitsForRange","getUnitsPerDay","_getMinutesBetweenSingleDay","_getIntervalTimestamp","minuteFrom","minuteTo","_getMinutesBetween","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","_getHoursBetween","_setConfig","_parseSettings","haveCustomWeeks","customWeeks","customWeeksRangeStart","customWeeksRangeEnd","customWeeksBoundaries","_parseHours","minCustomRangeStart","maxCustomRangeEnd","customTime","rangeStart","rangeEnd","fromReadable","toReadable","currentWeek","_tryChangeCalendarSettings","backup","JSON","_arraysEqual","_compareSettings","mySettings","thatSettings","myDays","otherDates","myHours","otherHours","myWeek","thatWeek","getDay","getSeconds","endHours","timestampRanges","timerangeConfig","startMinute","endMinute","durationSeconds","calendarConfig","reset_calendar","isWorkUnit","dateKey","mult","_calculateEndDate","_calculateMinuteEndDate","_subtractMinuteDate","_calculateHourEndDate","_addInterval","stopAction","added","dstShift","_addHoursUntilDayEnd","rangeHours","addHours","intervalEnd","durationLeft","setMinutes","setSeconds","hoursPerDay","_addMinutesUntilHourEnd","hour_start","rangeMinutes","addMinutes","_subtractMinutesUntilHourStart","hourStartTimestamp","initialDateTimestamp","minutePrecision","_isMinutePrecision","addedInterval","calculatedDay","daySchedule","minutesInDay","dayStart","iterateFromDayEnd","isWorkHour","workInterval","prevInterval","minutesInHour","_getClosestWorkTimePast","times","lastInterval","_getClosestWorkTime","inputDate","closestFuture","closestPast","_getClosestWorkTimeGeneric","_findClosestTimeInDay","resultDate","fromDayEnd","_getClosestWorkMinute","increment","worktime","exceptions","hasRegularHours","_checkWorkHours","dayConfig","hoursArray","WorkTimeCalendarMerger","_getIntervals","_toHoursArray","intervalsArray","formatHHMM","secondsValue","minutePart","toFixed","_intersectHourRanges","baseArray","overridesArray","base","_mergeAdjacentIntervals","_mergeHoursConfig","firstHours","secondHours","merge","firstConfig","secondConfig","mergedSettings","firstDate","secondDate","CalendarMergeHelper","legacyResourceCalendarConfig","dynamicResourceCalendars","CalendarManager","_calendars","_legacyConfig","_isLegacyConfig","createDefaultCalendars","_convertWorkTimeSettings","calendars","mergeHelper","_createCalendarFromConfig","apiCore","preparedConfig","parentCalendar","defaults","fulltime","_getOwnCalendar","calendar_property","dynamic_resource_calendars","calendarsConfig","taskObject","groupMode","group_mode","currentTask","isCalendar","restoreConfigCalendars","possibleCalendar","every","worktimeFacadeFactory","facade","jsonParseError","load","_load_url","cl","_load_type","ajax","on_load","xmlDoc","resp","_process_loading","collections","_load_collections","resourcesStore","assignmentsByTasks","attachAssignmentsToTasks","linksStore","collections_loaded","option","option_key","$ignore","json","dhx_security","security_key","serializeTask","_copyObject","serializeLink","_copyLink","xml_format","format_date","rawLinks","getLinks","xml","_xmlNodeToJSON","attrs_only","nodeValue","_getCollections","loader","xpath","itms","_getXML","toptag","getXMLTopNode","xmltop","xmlParseError","skey","oldxml","startdate","est","enddate","predecessortasks","editable_property","readonly_property","getGridColumn","ScrollableGrid","_scrollOrder","getCurrentX","_dnd","_scrollView","attachEvents","isScrollable","gridBoundingRect","maxLeft","minLeft","currentX","autoscrollRight","autoscrollStart","autoscrollLeft","autoscrollStop","getCorrection","scrollable_grid_1","ColumnsGridDnd","_targetMarker","calculateCurrentPosition","eventX","DND","_scrollableGrid","_draggedCell","draggedColumn","draggedIndex","_gridConfig","_originAutoscroll","_dragX","columnIndexes","findColumnsIndexes","targetColumn","cleanTargetMarker","setMarkerPosition","drawTargetMarker","_a","xBefore","xAfter","columnRelativePos","draggedId","currentColumn","startX","endX","relativeX","gridOffset","_obj","nextPosition","column_grid_dnd_1","_task_grid_row_resize","row_before_start","row_id","row_after_start","row_drag_move","pointerPosition","markerStartPosition","marker_height","minPointerPosition","min_task_grid_row_height","row_drag_end","oldItemHeight","finalHeight","cachedRowHeight","canUseSimpleCalc","_getRowHeight","_refreshState","globalRowHeight","visibleColumns","loadedBranches","oldHasChildren","branch_loading","branch_loading_property","needLoading","requestData","show_empty_state","emptyStateElement","isGanttEmpty","renderContent","placeholderContainer","clickEvents","attachAddTaskEvent","detachAddTaskEvents","oldNodes","emptyStateElementNode","LinkFormatterSimple","_getWBSCode","_linkReg","linkPart","_findSource","_gantt","pred","getWBSCode","reqTemplate","wbs","getTaskByWBSCode","DurationFormatter","LinkFormatter","enter","callIfEnabled","auto_types","checkTaskType","changedTypes","targetType","getTaskTypeToUpdate","$needsUpdate","updateParentTypes","getUpdatedTypes","applyChanges","delTaskParent","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","updateTaskType","insertPlaceholder","placeholders","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","isPlaceholderLink","action","commands","entity","resourceAssignmentsProperty","resource_assignment_store","resourceAssignmentFormats","auto","singleValue","valueArray","resourceValueArray","assignmentsArray","resourceAssignmentFormat","assignmentModes","fixedDates","fixedDuration","initAssignmentFields","initDelay","timing","_assignmentTimeFromTask","resourceAssignmentsStore","createDatastore","_makeAssignmentsFromTask","detectFormat","usedIds","defaultMode","_updateTaskBack","_assignAssignments","getTaskAssignments","_loadAssignmentsFromTask","taskAssignments","_syncAssignments","storeAssignments","taskValues","assignmentsStoreValues","inBoth","inTaskNotInStore","inStoreNotInTask","taskOwner","ownerId","foundOwnerAssignment","taskSearch","storeSearch","processedIds","inTask","inStore","diffAssignments","ignoreFields","assignmentHasChanged","updateAssignment","_syncOnTaskUpdate","assignmentsStore","totalAssignments","needUpdate","needUpdateFor","undoBatchCancel","assignmentsHash","deleteIds","idsSearch","_syncOnTaskDelete","resourceAssignmentsCache","resourceTaskAssignmentsCache","taskAssignmentsCache","searchTaskId","resourceTaskCacheKey","getTaskResources","uniqueResources","updateTaskAssignments","createResourceMethods","singleResourceCacheBuilt","falsyValuePrefix","random","resourceHashFunction","getCacheKey","resourceIds","typeFilter","getResourceTasks","matchingResources","resourceValue","selectAssignments","owners","propertyValue","filterResourceTasks","resourcePlugin","renderEditableLabel","editable","renderSummaryLabel","sum","reduce","editableResourceCellTemplate","editableResourceCellClass","getSummaryResourceAssignments","resource_store","childResource","initEditableDiagram","timeoutId","makeEditable","cancelAnimationFrame","requestAnimationFrame","contentEditable","assignmentEditInProcess","blur","strValue","innerText","rowId","assignmentId","parse_date","assignmentStore","saveState","nextChunk","createHelper","dataprocessor_assignments","dataprocessor_resources","editable_resource_diagram","fetchTasks","lightbox_resources","lightboxOptions","resourceStoreConfig","initItems","storeType","$resourcesStore","lightboxOptionsFnc","defaultResourceCellClass","defaultResourceCellTemplate","_needRecalc","_isRecalcNeeded","_isGroupSort","_calcWBS","$virtual","$wbs","_setWBSCode","getByWBSCode","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","SimpleStorage","_storage","storeItem","getStoredItem","dp","getUserData","userdata","setUserData","_change_id","_ganttMode","changeTaskId","changeLinkId","_row_style","_delete_task","_sendTaskOrder","setDp","DataProcessorEvents","$dp","_dataProcessorHandlers","treeHelper","cascadeDelete","clientSideDelete","cascade_delete","deleteAfterConfirmation","needDbDelete","needCascadeDelete","dpMode","cascade","sendAllData","_tSend","_waitMode","itemLinks","_links","getTaskLinks","updateLink","_tMode","_serverProcessor","substring","serverProcessor","pluralizedMode","urlSeparator","upd","isExist","objData","xml_date","handleResourceCRUD","handleResourceAssignmentCRUD","updated","updatedRows","clientOnly","_in_progress","insertedTasks","pendingAssignments","putAssignmentToQueue","insertResourceAssignment","insertResource","data_processor_events_1","extend_gantt_1","simple_storage_1","createDataProcessor","router","tMode","DataProcessor","setTransactionMode","serverProcessorURL","action_param","autoUpdate","_headers","_payload","_postDelim","_routerParametersFormat","_invalid","messages","inserted","deleted","invalid","invalid_cell","enableUTFencoding","_serializeAsJson","_router","_utf","getSyncState","findRow","existing","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","pendingUpdateModes_1","_beforeSendData","_getRowData","_serializeAsJSON","serialize_one","stack","pref","serialized","_forEachUpdatedRow","_sendData","_getAllData","pattern","defineAction","_uActions","afterUpdateCallback","btag","ganttMode","correct","originalSid","afterUpdate","_xml","getGanttMode","reqUrl","filePath","processCallback","finalizeUpdate","cleanUpdate","atag","_dp_init","_setDefaultTransactionMode","delete_confirmation","dataProcessorEvents","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","user","_user","_needUpdate","_updateBusy","afterAutoUpdate","fullSync","loadUpdate","xml_node","getUpdates","vers","_getXmlNodeValue","updates","status_1","parent_1","_applyPayload","_cleanupArgumentsBeforeSend","dataToSend","processedData","_cleanupItemBeforeSend","updatedItem","output","queryParams","dhxVersion","urlParams","preprocessedData","taskState_1","taskAction","ganttMode_1","_onResolvedCreateUpdate_1","actionPromise","errorMsgStart","errorMsgEnd","catch","hasOne","_prepareDate","_prepareArray","traversedObjects","_prepareObject","rawItem","processedItem","_prepareDataItem","dataItem","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","allData","loadedRanges","layerData","skipRepaint","refreshId","selectedId","deleteItem","_unselect","subItem","getLinkCount","newLink","getTaskCount","getVisibleTaskCount","startTask","calculateTaskLevel","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","$StoreType","open_tree_initially","deepcopy_on_parse","storeAccessName","dropService","storeList","refresh_links","refreshLinks","hasSplitParent","_clear_data","oldSelectId","_skipResourceRepaint","unselectTask","facadeFactory","originalTask","checkLinkedTaskVisibility","sync_link","sourceTask","sync_link_delete","sync_links","mapEvents","mapFrom","sourceEvent","targetEvent","taskLinks","existingLink","sourceMatch","targetMatch","typeMatch","show_tasks_outside_timescale","changedTask","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_dereq_","1","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","exit","throwLater","invokeLater","invoke","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","isIdentifier","caller","classString","ensureMethod","namedGetter","indexedGetter","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","./es5","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","domEvent","Event","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","_warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","_propagateFromFunction","monitoring","_boundValueFunction","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","PromiseAll","promiseAllThis","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","OperationalError","cause","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","prop","descriptor","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","errors","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","_capacity","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","srcIndex","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","toggleScheduled","div2","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","rident","filledRange","prefix","ArrayFrom","itResult","hasEnvVariables","chrome","loadTimes","P","stateProviders","provider","regTemplates","initial","template_name","date_format","server_utc","task_unscheduled_time","grid_date_format","tooltip_date_format","copyDomEvent","altKey","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","eventParams","timeStamp","original_target","dragStart","traceDragEvents","domElement","inputMethod","mousemove","dragMove","dragScroll","limited_mousemove","dndActive","mouseup","dragEnd","checkPositionChange","diff_x","diff_y","initDnDMarker","backupEventTarget","getEvent","backup_element","elementFromPoint","_defineProperties","__webpack_exports__","_t","instance","Constructor","_classCallCheck","token","_url","_token","_seed","api","protoProps","staticProps","_createClass","Accept","Content-Type","Remote-Token","_fetch","_x","_x2","_t2","credentials","_t3","_t4","_t5","_t6","websocket","_e","_e2","_s","_t29","_wrapper","connect","_t8","_socket","WebSocket","onmessage","fire","_send","_resubscribe","onError","_t9","_this3","_uid","onCall","_t10","_this4","_t11","_t12","_t13","_t14","send","_t15","_e3","_t30","_t31","_e4","onResponse","_t18","_t32","_t20","_t34","_t23","_t33","_t24","_t35","_t26","_t27","_t28","remote_client","remoteEvents","remote","Client","_ready","back","_remote","cspVersion","utc","to_fixed","getUTCMonth","getUTCFullYear","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCISOWeek","getISOWeek","mask","month_short_hash","month_full_hash","fastVersion","dateToStrFn","getWeek","splt","strToDateFn","cspCompliantVersion","canUseCsp","useCsp","cspAutoCheck","time_part","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","minute_start","getMilliseconds","setMilliseconds","_add_days","modifiedDate","inc","originalDate","incCondition","getHoursCondition","getDateCondition","ndate","setYear","add_quarter","num","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","convert_to_utc","createConfig","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","responseXML","xpathExp","docObj","selectNodes","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","isQt","onreadystatechange","noCache","setRequestHeader","show_loading","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","project_sections","milestone_sections","grid_resizer_column_attribute","keep_grid_width","grid_resize","prevent_default_scroll","service","ExtensionsManager","addExtension","_extensions","getExtension","supportedExtensions","license","extensionManager","ExtensionManager","RemoteEvents","templatesLoader","stateService","selected_task","i18n","setLocale","localeObject","MAX_UNDO_STEPS","Undo","maxSteps","undoEnabled","redoEnabled","invert","revert","inverseCommands","_undoStack","_redoStack","getUndoStack","setUndoStack","getRedoStack","setRedoStack","clearUndoStack","clearRedoStack","updateConfigs","undo_steps","undo_types","undo_actions","redo","_pop","_reorderCommands","_applyAction","_push","logAction","weights","actionWeights","weightA","entities","actions","isExists","getMethod","startsWith","noTrack","onBeforeUndo","onBeforeRedo","batchActions","Monitor","_batchAction","_batchMode","_ignore","_ignoreMoveEvents","_initialTasks","_initialLinks","_nestedTasks","_nestedLinks","_undo","_attachEvents","overwrite","_storeTask","_storeLink","isMoveEventsIgnored","toggleIgnoreMoveEvents","startIgnore","stopIgnore","startBatchAction","_timeout","stopBatchAction","onTaskAdded","_storeTaskCommand","onTaskUpdated","onTaskMoved","getInitialTask","_storeEntityCommand","onTaskDeleted","childrenLinks","_storeLinkCommand","onLinkAdded","onLinkUpdated","onLinkDeleted","setNestedTasks","taskIds","_getLinks","setInitialTask","uniqueLinks","setInitialLink","setInitialTaskObject","clearInitialTasks","getInitialLink","clearInitialLinks","deleteCacheCooldown","saveInitialAll","getMoveObjectByTaskId","nested","_storeCommand","actionType","entityType","monitor_1","undo_1","monitor","changeTaskCommandId","updLink","oldTaskId","newTaskId","changeLinkCommandId","updateTasksIds","updateLinksIds","getInitialState","Tooltip","_tooltipNode","setViewport","_root","_isLikeMouseEvent","_calculateTooltipPosition","setContent","_getViewPort","_getViewPortSize","tooltipNode","mouse","containerPos","domEventsScope","tooltip_1","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","tooltipFor","cloneDomEvent","clone","delayShow","tooltip_timeout","tooltip_hide_timeout","tooltipManager_1","tooltipManager","touch_tooltip","QuickInfo","_showForTask","_showAtCoordinates","forced","qi","_quickInfoBox","_quickInfoBoxId","_quickInfoTask","quick_info_detached","setContainer","_container","defaultContent","quickinfo_buttons","_createQuickInfoElement","titleBox","titleContent","titleDate","main","controls","_qiButtonClickHandler","_qiKeyPressHandler","_qi_button_click","_appendAtCoordinates","show_quick_info","_getContainer","_get_event_counter_part","xViewport","yViewport","_init_quick_info","_prepare_quick_info_classname","_fill_quick_data","_show_quick_info","domEv","_quickInfoReadonly","quick_info_class","allowedButtons","isEditor","quick_info_title","quick_info_date","popupHeight","scrolls","screenWidth","relativePopupBottom","top_1","quickInfo_1","quickInfo","hidingFunction","clearQuickInfo","multiselect_one_level","_selected","_one_level","_active","_first_selected_when_shift","getDefaultSelected","selected","getSelected","setFirstSelected","getFirstSelected","updateState","setLastSelected","getLastSelected","afterSelect","forSelected","isSameLevel","doSelection","target_ev","defaultLast","isLast","multiSelect","singleSelection","inline_editors_multiselect_open","blockSelection","first_indx","target_indx","last_indx","old_selectTask","old_unselectTask","toggleTaskSelection","getLastSelectedTask","old_isSelected","render_marker","show_markers","marker_class","markerHeight","initMarkerArea","markerArea","$marker_area","_markers","renderMarkers","getMarker","deleteMarker","updateMarker","_getMarkers","$keyboardNavigation","dispatcher","activeNode","globalNode","GanttNode","setActiveNode","getActiveNode","getDefaultNode","TaskCell","TaskRow","isValid","setDefaultNode","fromDomElement","inputs","HeaderCell","focusGlobalNode","blurNode","focusChanged","compareTo","keptFocus","keyDownHandler","isModal","ganttNode","shortcuts","getCommandFromEvent","findHandler","doAction","awaitsFocus","_delay","clearDelay","modalsStack","afterPopup","startModal","trapFocus","endModal","currentTarget","isTopModal","traceLightbox","focusElement","globalIndex","_compose","cellElement","nextElement","prevTask","moveTo","nextTask","home","pagedown","pageup","bindAll","KeyNavNode","viewWidth","viewHeight","scrollPositionX","scrollPositionY","attachedScrollbarHorizontal","scrollbarHorizontal","attachedScrollbarVertical","scrollbarVertical","scrollGrid","shift+down","shift+up","shift+right","shift+left","space","ctrl+left","ctrl+right","ctrl+enter","taskRow","enter, space","EventHandler","canStringifyThis","canStringifyThat","eventFacade","$eventAttached","alt+left","alt+right","alt+up","alt+down","ctrl+z","ctrl+r","currentFocus","currentIndex","lastItem","firstItem","getHash","shortcut","unbind","initKeys","createCommand","expr","getExpressions","words","getWords","commandKeys","specialKeys","printableKey","getHashFromEvent","junctionChar","term","combinationChar","backspace","tab","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","isTaskFocused","isInlineEditorCell","isNoKeyboardNavigationElement","isLightboxElement","focusHandler","$preventDefault","reFocusActiveNode","outsideGantt","localName","mousedownHandler","locateTask","onReady","updateRender","_redrawTasks","focusedItemVisible","createdTaskId","keepFocusOnNewTask","nodeConstructor","focusOnCreate","getScope","scopes","headerCell","taskCell","findVisibleColumnIndex","keyNavFacade","addShortcut","scopeObject","getShortcutHandler","removeShortcut","getScopeName","setupKeyNav","isExpanded","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","isFullscreenAvailable","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","backupBodyPadding","backupElementSizes","zIndex","modified","backupPositioning","updateSizes","expandGantt","onFullScreenChange","getFullscreenElement","positions","originalPositioning","resetParentPositioning","setFullScreenSizes","record","restoreParentPositioning","restoreSizes","cantFullscreen","expand","requestArguments","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","collapse","requestExitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","exitFullscreen","stringifyPrimitive","sep","eq","ks","qs","regexp","maxKeys","kstr","vstr","idx","decode","encode","webpackPolyfill","paths","freeExports","freeModule","freeGlobal","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","not-basic","invalid-input","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","numPoints","firstTime","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","handledCPCountPlusOne","qMinusT","ucs2","toUnicode","100","101","102","200","201","202","203","204","205","206","207","208","226","300","301","302","303","304","305","307","308","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","422","423","424","425","426","428","429","431","451","500","501","502","503","504","505","506","507","508","509","510","511","arrayCopy","localStorage","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","installReadyStateChangeImplementation","copyBuffer","custom","toArrayBuffer","preferBinary","_opts","_body","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","signal","_fetchAbortController","requestTimeout","withCredentials","_connect","ontimeout","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","validateParams","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","tripletToBase64","_apiUrl","getNodeJSTransport","defaultPort","_prepareConfigPDF","previousDateRage","_serializeHtml","_serializeAll","_fixColumns","_sendToExport","exportToPNG","exportToICal","_serializePlain","exportToExcel","visual","convert","_eachTaskTimed","_no_progress_colors","_serializeTable","_serializeColumns","rawDates","_serializeScales","exportToJSON","_getWorktimeSettings","importFromExcel","File","_nodejsImportExcel","_sendImportAjaxExcel","importFromMSProject","_nodejsImportMSP","_sendImportAjaxMSP","importFromPrimaveraP6","exportToMSProject","skip_circular_links","oldXmlFormat","oldFormatDate","oldXmlDate","oldDateFormat","_customProjectProperties","_customTaskProperties","_clearRecLinks","_exportConfig","$custom_data","exportToPrimaveraP6","formDataInstance","network","parts1","parts2","parts3","X-Requested-With","sheet","getHeaders","resData","durationUnit","projectProperties","taskProperties","_xdr","pack","_nodejsPostRequest","Content-Length","_markColumns","$template","_ajaxToExport","xdoc","_serializableGanttConfig","callbackFunction","form","_createHiddenForm","submit","_hidden_export_form","_copyObjectBase","formatDate","_color_box","_color_hash","_getStyles","_getColor","_getMinutesWorktimeSettings","parsedRanges","defaultWorkTimes","0","wTime","_working_time_helper","get_calendar","_pull","_originalCopyObject","_copyObjectPlain","rgb","_copyObjectTable","toISOstring","_copyObjectColumns","getDayIndex","_day_index_by_date","$start","$end","hiddenCells","scaleCellsWidth","$type","tmps","$text","$left","$right","_copyObjectColors","$color","ct","_copyObjectAll","smartScales","_exportSerialize","_getRaw","_scale_helpers","_get_scales","autosizeMinWidth","_get_resize_options","cellColors","cellCss","scaleCell","scaleCell_class","scaleCss","exportMode","ccount","xmlFormat","_lvl","_clearLevel","_makeLinksSameLevel","skippedLinks","_clearCircDependencies","_clearLinksSameLevel","usedTasks","prevLink","sources","$_source","_onCircDependencyFind","targets","curLink","_source","targetLvl","linkT","sourceParent","$_target","projectName","projectDates","start_end","manual","EventsManager","_mouseDown","_calculateDirectionVector","vectors","resultVector_1","vector","magnitude","angleDegrees","atan2","_applyDndReadyStyles","_timeline","_clearDndReadyStyles","_getScrollPosition","_countNewScrollPosition","coords","_startPoint","shiftY","_scrollState","_setScrollPosition","_stopDrag","_originalReadonly","_startDrag","enabled","filterTargets","clickDragUseKey","eventsManager_1","helpers_1","SelectedRegion","_el","_singleRow","_getTaskPositionByTop","_view","_viewPort","_endPoint","draw","singleRow","_useRequestAnimationFrame","useRequestAnimationFrame","getElement","setStart","startPoint","_startDate","setEnd","endPoint","_endDate","_positionPoint","absolute","setPosition","positionPoint","tasksByTime","tasksByIndex","_getTasksByTop","getInBounds","startValue","endValue","selectedRegion","_originPosition","_restoreOriginPosition","scheduledDndCoordinates","_getCoordinates","dragTimelineUseKey","viewPortBounds","selectedRegion_1","defaultConfig","eventsManager","__assign","click_drag_1","drag_timeline_1","export_api_1","fullscreen_1","quick_info_1","extensions_gpl_1"],"mappings":"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","file":"dhtmlxgantt.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"dhtmlxgantt\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dhtmlxgantt\"] = factory();\n\telse\n\t\troot[\"dhtmlxgantt\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/codebase/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 299);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"./helpers\");\n\nvar plainObjectConstructor = {}.constructor.toString();\n\nfunction isCustomType(object) {\n var constructorString = object.constructor.toString();\n return constructorString !== plainObjectConstructor;\n}\n\nfunction copy(object) {\n var i, result; // iterator, types array, result\n\n if (object && _typeof(object) == \"object\") {\n switch (true) {\n case helpers.isDate(object):\n result = new Date(object);\n break;\n\n case helpers.isArray(object):\n result = new Array(object.length);\n\n for (i = 0; i < object.length; i++) {\n result[i] = copy(object[i]);\n }\n\n break;\n\n /*\t\tcase (helpers.isStringObject(object)):\r\n \t\t\tresult = new String(object);\r\n \t\t\tbreak;\r\n \t\tcase (helpers.isNumberObject(object)):\r\n \t\t\tresult = new Number(object);\r\n \t\t\tbreak;\r\n \t\tcase (helpers.isBooleanObject(object)):\r\n \t\t\tresult = new Boolean(object);\r\n \t\t\tbreak;*/\n\n default:\n if (isCustomType(object)) {\n result = Object.create(object);\n } else {\n result = {};\n }\n\n for (i in object) {\n if (Object.prototype.hasOwnProperty.apply(object, [i])) result[i] = copy(object[i]);\n }\n\n break;\n }\n }\n\n return result || object;\n}\n\nfunction mixin(target, source, force) {\n for (var f in source) {\n if (target[f] === undefined || force) target[f] = source[f];\n }\n\n return target;\n}\n\nfunction defined(obj) {\n return typeof obj != \"undefined\";\n}\n\nvar seed;\n\nfunction uid() {\n if (!seed) seed = new Date().valueOf();\n seed++;\n return seed;\n} //creates function with specified \"this\" pointer\n\n\nfunction bind(functor, object) {\n if (functor.bind) return functor.bind(object);else return function () {\n return functor.apply(object, arguments);\n };\n}\n\nfunction event(el, event, handler, capture) {\n if (el.addEventListener) el.addEventListener(event, handler, capture === undefined ? false : capture);else if (el.attachEvent) el.attachEvent(\"on\" + event, handler);\n}\n\nfunction eventRemove(el, event, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(event, handler, capture === undefined ? false : capture);else if (el.detachEvent) el.detachEvent(\"on\" + event, handler);\n}\n\nmodule.exports = {\n copy: copy,\n defined: defined,\n mixin: mixin,\n uid: uid,\n bind: bind,\n event: event,\n eventRemove: eventRemove\n};","//returns position of html element on the page\nfunction elementPosition(elem) {\n var top = 0,\n left = 0,\n right = 0,\n bottom = 0;\n\n if (elem.getBoundingClientRect) {\n //HTML5 method\n var box = elem.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement || document.body.parentNode || document.body;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n top = box.top + scrollTop - clientTop;\n left = box.left + scrollLeft - clientLeft;\n right = document.body.offsetWidth - box.right;\n bottom = document.body.offsetHeight - box.bottom;\n } else {\n //fallback to naive approach\n while (elem) {\n top = top + parseInt(elem.offsetTop, 10);\n left = left + parseInt(elem.offsetLeft, 10);\n elem = elem.offsetParent;\n }\n\n right = document.body.offsetWidth - elem.offsetWidth - left;\n bottom = document.body.offsetHeight - elem.offsetHeight - top;\n }\n\n return {\n y: Math.round(top),\n x: Math.round(left),\n width: elem.offsetWidth,\n height: elem.offsetHeight,\n right: Math.round(right),\n bottom: Math.round(bottom)\n };\n}\n\nfunction isVisible(node) {\n var display = false,\n visibility = false;\n\n if (window.getComputedStyle) {\n var style = window.getComputedStyle(node, null);\n display = style[\"display\"];\n visibility = style[\"visibility\"];\n } else if (node.currentStyle) {\n display = node.currentStyle[\"display\"];\n visibility = node.currentStyle[\"visibility\"];\n }\n\n return display != \"none\" && visibility != \"hidden\";\n}\n\nfunction hasNonNegativeTabIndex(node) {\n return !isNaN(node.getAttribute(\"tabindex\")) && node.getAttribute(\"tabindex\") * 1 >= 0;\n}\n\nfunction hasHref(node) {\n var canHaveHref = {\n \"a\": true,\n \"area\": true\n };\n\n if (canHaveHref[node.nodeName.loLowerCase()]) {\n return !!node.getAttribute(\"href\");\n }\n\n return true;\n}\n\nfunction isEnabled(node) {\n var canDisable = {\n \"input\": true,\n \"select\": true,\n \"textarea\": true,\n \"button\": true,\n \"object\": true\n };\n\n if (canDisable[node.nodeName.toLowerCase()]) {\n return !node.hasAttribute(\"disabled\");\n }\n\n return true;\n}\n\nfunction getFocusableNodes(root) {\n var nodes = root.querySelectorAll([\"a[href]\", \"area[href]\", \"input\", \"select\", \"textarea\", \"button\", \"iframe\", \"object\", \"embed\", \"[tabindex]\", \"[contenteditable]\"].join(\", \"));\n var nodesArray = Array.prototype.slice.call(nodes, 0);\n\n for (var i = 0; i < nodesArray.length; i++) {\n nodesArray[i].$position = i; // we remember original nodes order, \n // so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \n // since some browsers do unstable sort\n } // use tabindex to sort focusable nodes\n\n\n nodesArray.sort(function (a, b) {\n if (a.tabIndex === 0 && b.tabIndex !== 0) {\n return 1;\n }\n\n if (a.tabIndex !== 0 && b.tabIndex === 0) {\n return -1;\n }\n\n if (a.tabIndex === b.tabIndex) {\n // ensure we do stable sort\n return a.$position - b.$position;\n }\n\n if (a.tabIndex < b.tabIndex) {\n return -1;\n }\n\n return 1;\n });\n\n for (var i = 0; i < nodesArray.length; i++) {\n var node = nodesArray[i];\n var isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\n if (!isValid) {\n nodesArray.splice(i, 1);\n i--;\n }\n }\n\n return nodesArray;\n}\n\nfunction getScrollSize() {\n var div = document.createElement(\"div\");\n div.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\n document.body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return width;\n}\n\nfunction getClassName(node) {\n if (!node) return \"\";\n var className = node.className || \"\";\n if (className.baseVal) //'className' exist but not a string - IE svg element in DOM\n className = className.baseVal;\n if (!className.indexOf) className = \"\";\n return _trimString(className);\n}\n\nfunction addClassName(node, className) {\n if (className && node.className.indexOf(className) === -1) {\n node.className += \" \" + className;\n }\n}\n\nfunction removeClassName(node, name) {\n name = name.split(\" \");\n\n for (var i = 0; i < name.length; i++) {\n var regEx = new RegExp(\"\\\\s?\\\\b\" + name[i] + \"\\\\b(?![-_.])\", \"\");\n node.className = node.className.replace(regEx, \"\");\n }\n}\n\nfunction hasClass(element, className) {\n if ('classList' in element) {\n return element.classList.contains(className);\n } else {\n return new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\n }\n}\n\nfunction toNode(node) {\n if (typeof node === \"string\") {\n return document.getElementById(node) || document.querySelector(node) || document.body;\n }\n\n return node || document.body;\n}\n\nvar _slave;\n\nfunction insert(node, newone) {\n if (!_slave) {\n _slave = document.createElement(\"div\");\n }\n\n _slave.innerHTML = newone;\n var child = _slave.firstChild;\n node.appendChild(child);\n return child;\n}\n\nfunction remove(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\nfunction getChildren(node, css) {\n var ch = node.childNodes;\n var len = ch.length;\n var out = [];\n\n for (var i = 0; i < len; i++) {\n var obj = ch[i];\n\n if (obj.className && obj.className.indexOf(css) !== -1) {\n out.push(obj);\n }\n }\n\n return out;\n}\n\nfunction getTargetNode(e) {\n var trg;\n if (e.tagName) trg = e;else {\n e = e || window.event;\n trg = e.target || e.srcElement;\n\n if (trg.shadowRoot && e.composedPath) {\n trg = e.composedPath()[0];\n }\n }\n return trg;\n}\n\nfunction locateAttribute(e, attribute) {\n if (!attribute) return;\n var trg = getTargetNode(e);\n\n while (trg) {\n if (trg.getAttribute) {\n //text nodes has not getAttribute\n var test = trg.getAttribute(attribute);\n if (test) return trg;\n }\n\n trg = trg.parentNode;\n }\n\n return null;\n}\n\nfunction _trimString(str) {\n var func = String.prototype.trim || function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n };\n\n return func.apply(str);\n}\n\nfunction locateClassName(e, classname, strict) {\n var trg = getTargetNode(e);\n var css = \"\";\n if (strict === undefined) strict = true;\n\n while (trg) {\n css = getClassName(trg);\n\n if (css) {\n var ind = css.indexOf(classname);\n\n if (ind >= 0) {\n if (!strict) return trg; //check that we have exact match\n\n var left = ind === 0 || !_trimString(css.charAt(ind - 1));\n var right = ind + classname.length >= css.length || !_trimString(css.charAt(ind + classname.length));\n if (left && right) return trg;\n }\n }\n\n trg = trg.parentNode;\n }\n\n return null;\n}\n/*\r\nevent position relatively to DOM element\r\n */\n\n\nfunction getRelativeEventPosition(ev, node) {\n var d = document.documentElement;\n var box = elementPosition(node);\n return {\n x: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\n y: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\n };\n}\n\nfunction isChildOf(child, parent) {\n if (!child || !parent) {\n return false;\n }\n\n while (child && child != parent) {\n child = child.parentNode;\n }\n\n return child === parent;\n}\n\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n } else if (element.matches || element.msMatchesSelector || element.webkitMatchesSelector) {\n var el = element;\n if (!document.documentElement.contains(el)) return null;\n\n do {\n var method = el.matches || el.msMatchesSelector || el.webkitMatchesSelector;\n if (method.call(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Your browser is not supported\");\n return null;\n }\n}\n\nfunction isShadowDomSupported() {\n return document.head.createShadowRoot || document.head.attachShadow;\n}\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\n\n\nfunction getActiveElement() {\n var activeElement = document.activeElement;\n\n if (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n if (activeElement === document.body && document.getSelection) {\n activeElement = document.getSelection().focusNode || document.body;\n }\n\n return activeElement;\n}\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\n\n\nfunction getRootNode(element) {\n if (!element) {\n return document.body;\n }\n\n if (!isShadowDomSupported()) {\n return document.body;\n }\n\n while (element.parentNode && (element = element.parentNode)) {\n if (element instanceof ShadowRoot) {\n return element.host;\n }\n }\n\n return document.body;\n}\n\nfunction hasShadowParent(element) {\n return !!getRootNode(element);\n}\n\nmodule.exports = {\n getNodePosition: elementPosition,\n getFocusableNodes: getFocusableNodes,\n getScrollSize: getScrollSize,\n getClassName: getClassName,\n addClassName: addClassName,\n removeClassName: removeClassName,\n insertNode: insert,\n removeNode: remove,\n getChildNodes: getChildren,\n toNode: toNode,\n locateClassName: locateClassName,\n locateAttribute: locateAttribute,\n getTargetNode: getTargetNode,\n getRelativeEventPosition: getRelativeEventPosition,\n isChildOf: isChildOf,\n hasClass: hasClass,\n closest: closest,\n getRootNode: getRootNode,\n hasShadowParent: hasShadowParent,\n isShadowDomSupported: isShadowDomSupported,\n getActiveElement: getActiveElement\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar units = {\n \"second\": 1,\n \"minute\": 60,\n \"hour\": 60 * 60,\n \"day\": 60 * 60 * 24,\n \"week\": 60 * 60 * 24 * 7,\n \"month\": 60 * 60 * 24 * 30,\n \"quarter\": 60 * 60 * 24 * 30 * 3,\n \"year\": 60 * 60 * 24 * 365\n};\n\nfunction getSecondsInUnit(unit) {\n return units[unit] || units.hour;\n}\n\nfunction forEach(arr, callback) {\n if (arr.forEach) {\n arr.forEach(callback);\n } else {\n var workArray = arr.slice();\n\n for (var i = 0; i < workArray.length; i++) {\n callback(workArray[i], i);\n }\n }\n}\n\nfunction arrayMap(arr, callback) {\n if (arr.map) {\n return arr.map(callback);\n } else {\n var workArray = arr.slice();\n var resArray = [];\n\n for (var i = 0; i < workArray.length; i++) {\n resArray.push(callback(workArray[i], i));\n }\n\n return resArray;\n }\n}\n\nfunction arrayFind(arr, callback) {\n if (arr.find) {\n return arr.find(callback);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i)) {\n return arr[i];\n }\n }\n }\n}\n\nfunction arrayIncludes(arr, item) {\n if (arr.includes) {\n return arr.includes(item);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === item) {\n return true;\n }\n }\n\n return false;\n }\n} // iframe-safe array type check instead of using instanceof\n\n\nfunction isArray(obj) {\n if (Array.isArray) {\n return Array.isArray(obj);\n } else {\n // close enough\n return obj && obj.length !== undefined && obj.pop && obj.push;\n }\n} // non-primitive string object, e.g. new String(\"abc\")\n\n\nfunction isStringObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n} // non-primitive number object, e.g. new Number(5)\n\n\nfunction isNumberObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n} // non-primitive number object, e.g. new Boolean(true)\n\n\nfunction isBooleanObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction isDate(obj) {\n if (obj && _typeof(obj) === \"object\") {\n return !!(obj.getFullYear && obj.getMonth && obj.getDate);\n } else {\n return false;\n }\n}\n\nfunction isValidDate(obj) {\n return isDate(obj) && !isNaN(obj.getTime());\n}\n\nfunction arrayFilter(arr, callback) {\n var result = [];\n\n if (arr.filter) {\n return arr.filter(callback);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i)) {\n result[result.length] = arr[i];\n }\n }\n\n return result;\n }\n}\n\nfunction hashToArray(hash) {\n var result = [];\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n result.push(hash[key]);\n }\n }\n\n return result;\n}\n\nfunction arraySome(arr, callback) {\n if (arr.length === 0) return false;\n\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i, arr)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction arrayDifference(arr, callback) {\n return arrayFilter(arr, function (item, i) {\n return !callback(item, i);\n });\n}\n\nfunction throttle(callback, timeout) {\n var wait = false;\n return function () {\n if (!wait) {\n callback.apply(null, arguments);\n wait = true;\n setTimeout(function () {\n wait = false;\n }, timeout);\n }\n };\n}\n\nfunction delay(callback, timeout) {\n var timer;\n\n var result = function result() {\n result.$cancelTimeout();\n result.$pending = true;\n var args = Array.prototype.slice.call(arguments);\n timer = setTimeout(function () {\n callback.apply(this, args);\n result.$pending = false;\n }, timeout);\n };\n\n result.$pending = false;\n\n result.$cancelTimeout = function () {\n clearTimeout(timer);\n result.$pending = false;\n };\n\n result.$execute = function () {\n var args = Array.prototype.slice.call(arguments);\n callback.apply(this, args);\n result.$cancelTimeout();\n };\n\n return result;\n}\n\nfunction sortArrayOfHash(arr, field, desc) {\n var compare = function compare(a, b) {\n return a < b;\n };\n\n arr.sort(function (a, b) {\n if (a[field] === b[field]) return 0;\n return desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\n });\n}\n\nfunction objectKeys(obj) {\n if (Object.keys) {\n return Object.keys(obj);\n }\n\n var result = [];\n var key;\n\n for (key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nfunction isEventable(obj) {\n return obj.attachEvent && obj.detachEvent;\n} //GS-1090: A task should be able to have the id = 0\n\n\nfunction replaceValidZeroId(id, rootId) {\n if (checkZeroId(id) && !checkZeroId(rootId)) {\n id = \"0\";\n }\n\n return id;\n}\n\nfunction checkZeroId(id) {\n if (id === 0) {\n return true;\n }\n\n return false;\n}\n\nfunction findBinary(array, target) {\n // modified binary search, target value not exactly match array elements, looking for closest one\n var low = 0,\n high = array.length - 1,\n i,\n item,\n prev;\n\n while (low <= high) {\n i = Math.floor((low + high) / 2);\n item = +array[i];\n prev = +array[i - 1];\n\n if (item < target) {\n low = i + 1;\n continue;\n }\n\n if (item > target) {\n if (!(!isNaN(prev) && prev < target)) {\n high = i - 1;\n continue;\n } else {\n // if target is between 'i' and 'i-1' return 'i - 1'\n return i - 1;\n }\n }\n\n while (+array[i] == +array[i + 1]) {\n i++;\n }\n\n return i;\n }\n\n return array.length - 1;\n}\n\nmodule.exports = {\n getSecondsInUnit: getSecondsInUnit,\n forEach: forEach,\n arrayMap: arrayMap,\n arrayIncludes: arrayIncludes,\n arrayFind: arrayFind,\n arrayFilter: arrayFilter,\n arrayDifference: arrayDifference,\n arraySome: arraySome,\n hashToArray: hashToArray,\n sortArrayOfHash: sortArrayOfHash,\n throttle: throttle,\n isArray: isArray,\n isDate: isDate,\n isValidDate: isValidDate,\n isStringObject: isStringObject,\n isNumberObject: isNumberObject,\n isBooleanObject: isBooleanObject,\n delay: delay,\n objectKeys: objectKeys,\n isEventable: isEventable,\n replaceValidZeroId: replaceValidZeroId,\n checkZeroId: checkZeroId,\n findBinary: findBinary\n};","module.exports = function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var EventHost = function EventHost() {\n this._silent_mode = false;\n this.listeners = {};\n};\n\nEventHost.prototype = {\n _silentStart: function _silentStart() {\n this._silent_mode = true;\n },\n _silentEnd: function _silentEnd() {\n this._silent_mode = false;\n }\n};\n\nvar createEventStorage = function createEventStorage(obj) {\n var handlers = {};\n var index = 0;\n\n var eventStorage = function eventStorage() {\n var combinedResult = true;\n\n for (var i in handlers) {\n var handlerResult = handlers[i].apply(obj, arguments);\n combinedResult = combinedResult && handlerResult;\n }\n\n return combinedResult;\n };\n\n eventStorage.addEvent = function (handler, settings) {\n if (typeof handler == \"function\") {\n var handlerId;\n\n if (settings && settings.id) {\n handlerId = settings.id;\n } else {\n handlerId = index;\n index++;\n }\n\n if (settings && settings.once) {\n var originalHandler = handler;\n\n handler = function handler() {\n originalHandler();\n eventStorage.removeEvent(handlerId);\n };\n }\n\n handlers[handlerId] = handler;\n return handlerId;\n }\n\n return false;\n };\n\n eventStorage.removeEvent = function (id) {\n delete handlers[id];\n };\n\n eventStorage.clear = function () {\n handlers = {};\n };\n\n return eventStorage;\n};\n\nfunction makeEventable(obj) {\n var eventHost = new EventHost();\n\n obj.attachEvent = function (eventName, handler, settings) {\n eventName = 'ev_' + eventName.toLowerCase();\n\n if (!eventHost.listeners[eventName]) {\n eventHost.listeners[eventName] = createEventStorage(this);\n }\n\n if (settings && settings.thisObject) {\n handler = handler.bind(settings.thisObject);\n }\n\n var innerId = eventHost.listeners[eventName].addEvent(handler, settings);\n var handlerId = eventName + ':' + innerId; //return ID (ev_eventname:1)\n\n if (settings && settings.id) {\n handlerId = settings.id;\n }\n\n return handlerId;\n };\n\n obj.attachAll = function (callback) {\n this.attachEvent('listen_all', callback);\n };\n\n obj.callEvent = function (name, eventArguments) {\n if (eventHost._silent_mode) return true;\n var handlerName = 'ev_' + name.toLowerCase();\n var listeners = eventHost.listeners;\n\n if (listeners['ev_listen_all']) {\n listeners['ev_listen_all'].apply(this, [name].concat(eventArguments));\n }\n\n if (listeners[handlerName]) return listeners[handlerName].apply(this, eventArguments);\n return true;\n };\n\n obj.checkEvent = function (name) {\n var listeners = eventHost.listeners;\n return !!listeners['ev_' + name.toLowerCase()];\n };\n\n obj.detachEvent = function (id) {\n if (id) {\n var listeners = eventHost.listeners;\n\n for (var i in listeners) {\n listeners[i].removeEvent(id); //remove event\n }\n\n var list = id.split(':'); //get EventName and ID\n\n var listeners = eventHost.listeners;\n\n if (list.length === 2) {\n var eventName = list[0];\n var eventId = list[1];\n\n if (listeners[eventName]) {\n listeners[eventName].removeEvent(eventId); //remove event\n }\n }\n }\n };\n\n obj.detachAllEvents = function () {\n for (var name in eventHost.listeners) {\n eventHost.listeners[name].clear();\n }\n };\n}\n\nmodule.exports = makeEventable;","module.exports = function getVisibleTasksRange(gantt, view, config, datastore, viewport) {\n var buffer = 1;\n var start = view.getItemIndexByTopPosition(viewport.y) || 0;\n var end = view.getItemIndexByTopPosition(viewport.y_end) || datastore.count();\n var indexStart = Math.max(0, start - buffer);\n var indexEnd = Math.min(datastore.count(), end + buffer);\n return {\n start: indexStart,\n end: indexEnd\n };\n};","function dummy() {\n // eslint-disable-next-line\n console.log(\"Method is not implemented.\");\n}\n\nfunction BaseControl() {} // base methods will be runned in gantt context\n\n\nBaseControl.prototype.render = dummy; // arguments: sns\n\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\n\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\n\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function (gantt) {\n // we could send current instance of gantt to module\n return BaseControl;\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","module.exports = function (gantt) {\n var BaseEditor = function BaseEditor() {};\n\n BaseEditor.prototype = {\n show: function show(id, column, config, placeholder) {},\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = value;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_changed: function is_changed(value, id, column, node) {\n var currentValue = this.get_value(id, column, node);\n\n if (currentValue && value && currentValue.valueOf && value.valueOf) {\n return currentValue.valueOf() != value.valueOf();\n } else {\n return currentValue != value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n return true;\n },\n save: function save(id, column, node) {},\n get_input: function get_input(node) {\n return node.querySelector(\"input\");\n },\n focus: function focus(node) {\n var input = this.get_input(node);\n\n if (!input) {\n return;\n }\n\n if (input.focus) {\n input.focus();\n }\n\n if (input.select) {\n input.select();\n }\n }\n };\n return BaseEditor;\n};","/* eslint-disable no-restricted-globals */\nvar isWindowAwailable = typeof window !== \"undefined\";\n/* eslint-enable no-restricted-globals */\n\nvar env = {\n isIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n isIE6: isWindowAwailable && !XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0,\n isIE7: isWindowAwailable && navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0,\n isIE8: isWindowAwailable && navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0,\n isOpera: isWindowAwailable && navigator.userAgent.indexOf(\"Opera\") >= 0,\n isChrome: isWindowAwailable && navigator.userAgent.indexOf(\"Chrome\") >= 0,\n isKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n isFF: isWindowAwailable && navigator.userAgent.indexOf(\"Firefox\") >= 0,\n isIPad: isWindowAwailable && navigator.userAgent.search(/iPad/gi) >= 0,\n isEdge: isWindowAwailable && navigator.userAgent.indexOf(\"Edge\") != -1,\n isNode: !isWindowAwailable || typeof navigator == \"undefined\"\n};\nmodule.exports = env;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/*</replacement>*/\n\n\nmodule.exports = Duplex;\n/*<replacement>*/\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '<Buffer ' + str + '>';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","var utils = require(\"../../../utils/utils\"),\n eventable = require(\"../../../utils/eventable\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar Cell = function () {\n \"use strict\";\n\n function Cell(parent, config, factory, gantt) {\n if (parent) {\n this.$container = domHelpers.toNode(parent);\n this.$parent = parent;\n } // save config\n\n\n this.$config = utils.mixin(config, {\n headerHeight: 33\n });\n this.$gantt = gantt;\n this.$domEvents = gantt._createDomEventScope(); // set id\n\n this.$id = config.id || \"c\" + utils.uid();\n this.$name = \"cell\";\n this.$factory = factory;\n eventable(this);\n }\n\n Cell.prototype.destructor = function () {\n this.$parent = this.$container = this.$view = null;\n var mouse = this.$gantt.$services.getService(\"mouseEvents\");\n mouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n this.$domEvents.detachAll();\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n };\n\n Cell.prototype.cell = function (id) {\n return null;\n };\n\n Cell.prototype.scrollTo = function (left, top) {\n //GS-333 Add a way to scroll the HTML views:\n var cell = this.$view;\n if (this.$config.html) cell = this.$view.firstChild;\n\n if (left * 1 == left) {\n cell.scrollLeft = left;\n }\n\n if (top * 1 == top) {\n cell.scrollTop = top;\n }\n };\n\n Cell.prototype.clear = function () {\n this.getNode().innerHTML = \"\";\n this.getNode().className = \"gantt_layout_content\";\n this.getNode().style.padding = \"0\";\n };\n\n Cell.prototype.resize = function (_final) {\n if (this.$parent) {\n return this.$parent.resize(_final);\n }\n\n if (_final === false) {\n this.$preResize = true;\n }\n\n var topCont = this.$container;\n var x = topCont.offsetWidth;\n var y = topCont.offsetHeight;\n var topSize = this.getSize();\n\n if (topCont === document.body) {\n x = document.body.offsetWidth;\n y = document.body.offsetHeight;\n }\n\n if (x < topSize.minWidth) {\n x = topSize.minWidth;\n }\n\n if (x > topSize.maxWidth) {\n x = topSize.maxWidth;\n }\n\n if (y < topSize.minHeight) {\n y = topSize.minHeight;\n }\n\n if (y > topSize.maxHeight) {\n y = topSize.maxHeight;\n }\n\n this.setSize(x, y);\n\n if (!this.$preResize) {//\tself.callEvent(\"onResize\", [x, y]);\n }\n\n this.$preResize = false;\n };\n\n Cell.prototype.hide = function () {\n this._hide(true);\n\n this.resize();\n };\n\n Cell.prototype.show = function (force) {\n this._hide(false);\n\n if (force && this.$parent) {\n this.$parent.show();\n }\n\n this.resize();\n };\n\n Cell.prototype._hide = function (mode) {\n if (mode === true && this.$view.parentNode) {\n this.$view.parentNode.removeChild(this.$view);\n } else if (mode === false && !this.$view.parentNode) {\n var index = this.$parent.cellIndex(this.$id);\n this.$parent.moveView(this, index);\n }\n\n this.$config.hidden = mode;\n };\n\n Cell.prototype.$toHTML = function (content, css) {\n if (content === void 0) {\n content = \"\";\n }\n\n css = [css || \"\", this.$config.css || \"\"].join(\" \");\n var obj = this.$config;\n var header = \"\";\n\n if (obj.raw) {\n content = typeof obj.raw === \"string\" ? obj.raw : \"\";\n } else {\n if (!content) {\n content = \"<div class='gantt_layout_content' \" + (css ? \" class='\" + css + \"' \" : \"\") + \" >\" + (obj.html || \"\") + \"</div>\";\n }\n\n if (obj.header) {\n var collapseIcon = obj.canCollapse ? \"<div class='gantt_layout_header_arrow'></div>\" : \"\";\n header = \"<div class='gantt_layout_header'>\" + collapseIcon + \"<div class='gantt_layout_header_content'>\" + obj.header + \"</div></div>\";\n }\n }\n\n return \"<div class='gantt_layout_cell \" + css + \"' data-cell-id='\" + this.$id + \"'>\" + header + content + \"</div>\";\n };\n\n Cell.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n this.init();\n };\n\n Cell.prototype.getNode = function () {\n return this.$view.querySelector(\"gantt_layout_cell\") || this.$view;\n };\n\n Cell.prototype.init = function () {\n // [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\n var self = this;\n\n this._headerClickHandler = function (e) {\n var cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\n\n if (cellId == self.$id) {\n self.toggle();\n }\n };\n\n var mouse = this.$gantt.$services.getService(\"mouseEvents\");\n mouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n this.callEvent(\"onReady\", []);\n };\n\n Cell.prototype.toggle = function () {\n this.$config.collapsed = !this.$config.collapsed;\n this.resize();\n };\n\n Cell.prototype.getSize = function () {\n var size = {\n height: this.$config.height || 0,\n width: this.$config.width || 0,\n gravity: this.$config.gravity || 1,\n minHeight: this.$config.minHeight || 0,\n minWidth: this.$config.minWidth || 0,\n maxHeight: this.$config.maxHeight || 100000000000,\n maxWidth: this.$config.maxWidth || 100000000000\n };\n\n if (this.$config.collapsed) {\n var mode = this.$config.mode === \"x\";\n size[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\n }\n\n return size;\n };\n\n Cell.prototype.getContentSize = function () {\n var width = this.$lastSize.contentX;\n\n if (width !== width * 1) {\n width = this.$lastSize.width;\n }\n\n var height = this.$lastSize.contentY;\n\n if (height !== height * 1) {\n height = this.$lastSize.height;\n }\n\n return {\n width: width,\n height: height\n };\n };\n\n Cell.prototype._getBorderSizes = function () {\n var borders = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n horizontal: 0,\n vertical: 0\n };\n\n if (this._currentBorders) {\n if (this._currentBorders[this._borders.left]) {\n borders.left = 1;\n borders.horizontal++;\n }\n\n if (this._currentBorders[this._borders.right]) {\n borders.right = 1;\n borders.horizontal++;\n }\n\n if (this._currentBorders[this._borders.top]) {\n borders.top = 1;\n borders.vertical++;\n }\n\n if (this._currentBorders[this._borders.bottom]) {\n borders.bottom = 1;\n borders.vertical++;\n }\n }\n\n return borders;\n };\n\n Cell.prototype.setSize = function (x, y) {\n this.$view.style.width = x + \"px\";\n this.$view.style.height = y + \"px\";\n\n var borders = this._getBorderSizes();\n\n var contentY = y - borders.vertical;\n var contentX = x - borders.horizontal;\n this.$lastSize = {\n x: x,\n y: y,\n contentX: contentX,\n contentY: contentY\n };\n\n if (this.$config.header) {\n this._sizeHeader();\n } else {\n this._sizeContent();\n }\n };\n\n Cell.prototype._borders = {\n \"left\": \"gantt_layout_cell_border_left\",\n \"right\": \"gantt_layout_cell_border_right\",\n \"top\": \"gantt_layout_cell_border_top\",\n \"bottom\": \"gantt_layout_cell_border_bottom\"\n };\n\n Cell.prototype._setBorders = function (css, view) {\n if (!view) {\n view = this;\n }\n\n var node = view.$view;\n\n for (var i in this._borders) {\n domHelpers.removeClassName(node, this._borders[i]);\n }\n\n if (typeof css == \"string\") {\n css = [css];\n }\n\n var cssHash = {};\n\n for (var i = 0; i < css.length; i++) {\n domHelpers.addClassName(node, css[i]);\n cssHash[css[i]] = true;\n }\n\n view._currentBorders = cssHash;\n };\n\n Cell.prototype._sizeContent = function () {\n var content = this.$view.childNodes[0];\n\n if (content && content.className == \"gantt_layout_content\") {\n content.style.height = this.$lastSize.contentY + \"px\";\n }\n };\n\n Cell.prototype._sizeHeader = function () {\n var size = this.$lastSize;\n size.contentY -= this.$config.headerHeight;\n var header = this.$view.childNodes[0];\n var content = this.$view.childNodes[1];\n var xLayout = this.$config.mode === \"x\";\n\n if (this.$config.collapsed) {\n content.style.display = \"none\";\n\n if (xLayout) {\n header.className = \"gantt_layout_header collapsed_x\";\n header.style.width = size.y + \"px\";\n var d = Math.floor(size.y / 2 - size.x / 2);\n header.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\n content.style.display = \"none\";\n } else {\n header.className = \"gantt_layout_header collapsed_y\";\n }\n } else {\n if (xLayout) {\n header.className = \"gantt_layout_header\";\n } else {\n header.className = \"gantt_layout_header vertical\";\n }\n\n header.style.width = 'auto';\n header.style.transform = '';\n content.style.display = \"\";\n content.style.height = size.contentY + \"px\";\n }\n\n header.style.height = this.$config.headerHeight + \"px\";\n };\n\n return Cell;\n}();\n\nmodule.exports = Cell;","var utils = require(\"./env\");\n\nmodule.exports = function (gantt) {\n return utils.isNode || !gantt.$root;\n};","/**\r\n * Check the over task or draggble task is placeholder task\r\n */\nmodule.exports = function isPlaceholderTask(id, gantt, store, config) {\n // return false;\n var config = gantt ? gantt.config : config;\n\n if (config && config.placeholder_task) {\n if (store.exists(id)) {\n var item = store.getItem(id);\n return item.type === config.types.placeholder;\n }\n }\n\n return false;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return _typeof(arg) === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function SelectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(SelectControl, _super);\n\n SelectControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n html += htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"style\",\n value: \"width:100%;\"\n }, {\n key: \"title\",\n value: sns.name\n }]);\n html += \"</div>\";\n return html;\n };\n\n SelectControl.prototype.set_value = function (node, value, ev, sns) {\n var select = node.firstChild;\n\n if (!select._dhx_onchange && sns.onchange) {\n select.onchange = sns.onchange;\n select._dhx_onchange = true;\n }\n\n if (typeof value === \"undefined\") value = (select.options[0] || {}).value;\n select.value = value || \"\";\n };\n\n SelectControl.prototype.get_value = function (node) {\n return node.firstChild.value;\n };\n\n SelectControl.prototype.focus = function (node) {\n var a = node.firstChild;\n\n gantt._focus(a, true);\n };\n\n return SelectControl;\n};","// optimized checker for task bars smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isBarInViewport(item, viewport, view, config, gantt) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var top = view.getItemTop(item.id);\n var height = view.getItemHeight(item.id);\n\n if (top > viewport.y_end || top + height < viewport.y) {\n return false;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n\n if (left > viewport.x_end || right < viewport.x) {\n return false;\n }\n\n return true;\n};","module.exports = function (gantt) {\n return gantt.config.smart_rendering && gantt._smart_render;\n};","/* eslint-disable no-restricted-globals */\nvar globalScope;\n\nif (typeof window !== \"undefined\") {\n globalScope = window;\n} else {\n globalScope = global;\n}\n/* eslint-enable no-restricted-globals */\n\n\nmodule.exports = globalScope;","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n} // Copy static methods from Buffer\n\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};","'use strict';\n\nif (!process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n\n var len = arguments.length;\n var args, i;\n\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n\n default:\n args = new Array(len - 1);\n i = 0;\n\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}","/**\r\n * The state object for order branch drag and drop\r\n */\nvar utils = require(\"../../../../utils/utils\");\n\nmodule.exports = {\n createDropTargetObject: function createDropTargetObject(parent) {\n var res = {\n targetParent: null,\n targetIndex: 0,\n targetId: null,\n child: false,\n nextSibling: false,\n prevSibling: false\n };\n\n if (parent) {\n utils.mixin(res, parent, true);\n }\n\n return res;\n },\n nextSiblingTarget: function nextSiblingTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.nextSibling = true;\n result.targetParent = store.getParent(result.targetId);\n result.targetIndex = store.getBranchIndex(result.targetId);\n\n if (store.getParent(dndTaskId) != result.targetParent || result.targetIndex < store.getBranchIndex(dndTaskId)) {\n result.targetIndex += 1;\n }\n\n return result;\n },\n prevSiblingTarget: function prevSiblingTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.prevSibling = true;\n result.targetParent = store.getParent(result.targetId);\n result.targetIndex = store.getBranchIndex(result.targetId);\n\n if (store.getParent(dndTaskId) == result.targetParent && result.targetIndex > store.getBranchIndex(dndTaskId)) {\n result.targetIndex -= 1;\n }\n\n return result;\n },\n firstChildTarget: function firstChildTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.targetParent = result.targetId;\n result.targetIndex = 0;\n result.child = true;\n return result;\n },\n lastChildTarget: function lastChildTarget(dndTaskId, targetTaskId, store) {\n var children = store.getChildren(targetTaskId);\n var result = this.createDropTargetObject();\n result.targetId = children[children.length - 1];\n result.targetParent = targetTaskId;\n result.targetIndex = children.length;\n result.nextSibling = true;\n return result;\n }\n};","var isLegacyRender = require(\"../is_legacy_smart_render\");\n\nmodule.exports = function isColumnVisible(columnIndex, scale, viewPort, gantt) {\n var width = scale.width[columnIndex];\n\n if (width <= 0) {\n return false;\n }\n\n if (!gantt.config.smart_rendering || isLegacyRender(gantt)) {\n return true;\n }\n\n var cellLeftCoord = scale.left[columnIndex] - width;\n var cellRightCoord = scale.left[columnIndex] + width;\n return cellLeftCoord <= viewPort.x_end && cellRightCoord >= viewPort.x; //do not render skipped columns\n};","module.exports = function getVisibleCellsRange(scale, viewport) {\n var firstCellIndex = 0;\n var lastCellIndex = scale.left.length - 1;\n\n if (viewport) {\n for (var i = 0; i < scale.left.length; i++) {\n var left = scale.left[i];\n\n if (left < viewport.x) {\n firstCellIndex = i;\n }\n\n if (left > viewport.x_end) {\n lastCellIndex = i;\n break;\n }\n }\n }\n\n return {\n start: firstCellIndex,\n end: lastCellIndex\n };\n};","module.exports = function (item, view, config) {\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: 0,\n right: Infinity\n };\n};","function createTaskRenderer(gantt) {\n function _render_task_element(task, view, config) {\n var config = view.$getConfig();\n var painters = config.type_renderers;\n var renderer = painters[gantt.getTaskType(task.type)],\n defaultRenderer = _task_default_render;\n\n if (!renderer) {\n return defaultRenderer.call(gantt, task, view, config);\n } else {\n return renderer.call(gantt, task, function (task) {\n return defaultRenderer.call(gantt, task, view, config);\n }, view);\n }\n }\n\n function _task_default_render(task, view, config) {\n if (gantt._isAllowedUnscheduledTask(task)) return;\n\n if (!gantt._isTaskInTimelineLimits(task)) {\n return;\n }\n\n var pos = view.getItemPosition(task);\n var cfg = config,\n templates = view.$getTemplates();\n var taskType = gantt.getTaskType(task.type);\n var height = view.getBarHeight(task.id, taskType == cfg.types.milestone);\n var controlsMargin = 0;\n\n if (taskType == cfg.types.milestone) {\n controlsMargin = (height - pos.height) / 2;\n }\n\n var padd = Math.floor((view.getItemHeight(task.id) - height) / 2); //\tif(task.type == cfg.types.milestone){\n //\t\tpadd -= 1;\n //\t}\n //\tif (taskType == cfg.types.milestone && cfg.link_line_width > 1) {\n //\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\n //\t\tpadd += 1;\n //\t}\n\n if (taskType == cfg.types.milestone) {\n pos.left -= Math.round(height / 2);\n pos.width = height;\n }\n\n var div = document.createElement(\"div\");\n var width = Math.round(pos.width);\n\n if (view.$config.item_attribute) {\n div.setAttribute(view.$config.item_attribute, task.id);\n div.setAttribute(view.$config.bind + \"_id\", task.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n if (cfg.show_progress && taskType != cfg.types.milestone) {\n _render_task_progress(task, div, width, cfg, templates);\n } //use separate div to display content above progress bar\n\n\n var content = _render_task_content(task, width, templates);\n\n if (task.textColor) {\n content.style.color = task.textColor;\n }\n\n div.appendChild(content);\n\n var css = _combine_item_class(\"gantt_task_line\", templates.task_class(task.start_date, task.end_date, task), task.id, view);\n\n if (task.color || task.progressColor || task.textColor) {\n css += \" gantt_task_inline_color\";\n }\n\n if (pos.width < 20) {\n css += \" gantt_thin_task\";\n }\n\n div.className = css;\n var styles = [\"left:\" + pos.left + \"px\", \"top:\" + (padd + pos.top) + 'px', \"height:\" + (taskType == cfg.types.milestone ? pos.height : height) + 'px', \"line-height:\" + Math.max(height < 30 ? height - 2 : height, 0) + 'px', \"width:\" + width + 'px'];\n\n if (task.color) {\n styles.push(\"background-color:\" + task.color);\n }\n\n if (task.textColor) {\n styles.push(\"color:\" + task.textColor);\n }\n\n div.style.cssText = styles.join(\";\");\n\n var side = _render_leftside_content(task, cfg, templates, controlsMargin);\n\n if (side) div.appendChild(side);\n side = _render_rightside_content(task, cfg, templates, controlsMargin);\n if (side) div.appendChild(side);\n\n gantt._waiAria.setTaskBarAttr(task, div);\n\n var state = gantt.getState();\n\n if (!gantt.isReadonly(task)) {\n if (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\n _render_pair(div, \"gantt_task_drag\", task, function (css) {\n var el = document.createElement(\"div\");\n el.className = css;\n return el;\n }, cfg);\n }\n\n if (cfg.drag_links && cfg.show_links) {\n _render_pair(div, \"gantt_link_control\", task, function (css) {\n var outer = document.createElement(\"div\");\n outer.className = css;\n outer.style.cssText = [\"height:\" + height + 'px', \"line-height:\" + height + 'px'].join(\";\");\n var inner = document.createElement(\"div\");\n inner.className = \"gantt_link_point\";\n var showLinkPoints = false;\n\n if (state.link_source_id && cfg.touch) {\n showLinkPoints = true;\n }\n\n inner.style.display = showLinkPoints ? \"block\" : \"\";\n outer.appendChild(inner);\n return outer;\n }, cfg, controlsMargin);\n }\n }\n\n return div;\n }\n\n function _render_side_content(task, template, cssClass, marginStyle) {\n if (!template) return null;\n var text = template(task.start_date, task.end_date, task);\n if (!text) return null;\n var content = document.createElement(\"div\");\n content.className = \"gantt_side_content \" + cssClass;\n content.innerHTML = text;\n\n if (marginStyle) {\n content.style[marginStyle.type] = Math.abs(marginStyle.value) + \"px\";\n }\n\n return content;\n }\n\n function _render_leftside_content(task, cfg, templates, margin) {\n var css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\n\n var marginStyle = null;\n\n if (margin) {\n marginStyle = {\n type: \"marginRight\",\n value: margin\n };\n }\n\n return _render_side_content(task, templates.leftside_text, css, marginStyle);\n }\n\n function _render_rightside_content(task, cfg, templates, margin) {\n var css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\n\n var marginStyle = null;\n\n if (margin) {\n marginStyle = {\n type: \"marginLeft\",\n value: margin\n };\n }\n\n return _render_side_content(task, templates.rightside_text, css, marginStyle);\n }\n\n function _get_link_crossing_css(left, task) {\n var cond = _get_conditions(left);\n\n for (var i in cond) {\n var links = task[i];\n\n for (var ln = 0; ln < links.length; ln++) {\n var link = gantt.getLink(links[ln]);\n\n for (var tp = 0; tp < cond[i].length; tp++) {\n if (link.type == cond[i][tp]) {\n return \"gantt_link_crossing\";\n }\n }\n }\n }\n\n return \"\";\n }\n\n function _render_task_content(task, width, templates) {\n var content = document.createElement(\"div\");\n\n if (gantt.getTaskType(task.type) != gantt.config.types.milestone) {\n content.innerHTML = templates.task_text(task.start_date, task.end_date, task);\n } else if (gantt.getTaskType(task.type) == gantt.config.types.milestone && width) {\n content.style.height = content.style.width = width + \"px\";\n }\n\n content.className = \"gantt_task_content\"; //content.style.width = width + 'px';\n\n return content;\n }\n\n function _render_task_progress(task, element, maxWidth, cfg, templates) {\n var done = task.progress * 1 || 0;\n maxWidth = Math.max(maxWidth - 2, 0); //2px for borders\n\n var pr = document.createElement(\"div\");\n var width = Math.round(maxWidth * done);\n width = Math.min(maxWidth, width);\n\n if (task.progressColor) {\n pr.style.backgroundColor = task.progressColor;\n pr.style.opacity = 1;\n }\n\n pr.style.width = width + 'px';\n pr.className = \"gantt_task_progress\";\n pr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\n\n if (cfg.rtl) {\n pr.style.position = \"absolute\";\n pr.style.right = \"0px\";\n }\n\n var wrapper = document.createElement(\"div\");\n wrapper.className = \"gantt_task_progress_wrapper\";\n wrapper.appendChild(pr);\n element.appendChild(wrapper);\n\n if (gantt.config.drag_progress && !gantt.isReadonly(task)) {\n var drag = document.createElement(\"div\");\n var markerPos = width;\n\n if (cfg.rtl) {\n markerPos = maxWidth - width;\n }\n\n drag.style.left = markerPos + 'px';\n drag.className = \"gantt_task_progress_drag\";\n pr.appendChild(drag);\n element.appendChild(drag);\n }\n }\n\n function _get_conditions(leftside) {\n if (leftside) {\n return {\n $source: [gantt.config.links.start_to_start],\n $target: [gantt.config.links.start_to_start, gantt.config.links.finish_to_start]\n };\n } else {\n return {\n $source: [gantt.config.links.finish_to_start, gantt.config.links.finish_to_finish],\n $target: [gantt.config.links.finish_to_finish]\n };\n }\n }\n\n function _combine_item_class(basic, template, itemId, view) {\n var cfg = view.$getConfig();\n var css = [basic];\n if (template) css.push(template);\n var state = gantt.getState();\n var task = gantt.getTask(itemId);\n\n if (gantt.getTaskType(task.type) == cfg.types.milestone) {\n css.push(\"gantt_milestone\");\n } else if (gantt.getTaskType(task.type) == cfg.types.project) {\n css.push(\"gantt_project\");\n }\n\n css.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\n if (gantt.isSummaryTask(task)) css.push(\"gantt_dependent_task\");\n\n if (gantt.isSplitTask(task) && (cfg.open_split_tasks && !task.$open || !cfg.open_split_tasks)) {\n css.push(\"gantt_split_parent\");\n }\n\n if (cfg.select_task && gantt.isSelectedTask(itemId)) {\n css.push(\"gantt_selected\");\n }\n\n if (itemId == state.drag_id) {\n css.push(\"gantt_drag_\" + state.drag_mode);\n\n if (state.touch_drag) {\n css.push(\"gantt_touch_\" + state.drag_mode);\n }\n }\n\n if (state.link_source_id == itemId) css.push(\"gantt_link_source\");\n if (state.link_target_id == itemId) css.push(\"gantt_link_target\");\n\n if (cfg.highlight_critical_path && gantt.isCriticalTask) {\n if (gantt.isCriticalTask(task)) css.push(\"gantt_critical_task\");\n }\n\n if (state.link_landing_area && state.link_target_id && state.link_source_id && state.link_target_id != state.link_source_id && (state.link_target_id == itemId || state.link_source_id == itemId)) {\n var from_id = state.link_source_id;\n var from_start = state.link_from_start;\n var to_start = state.link_to_start;\n var allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\n var dragClass = \"\";\n\n if (allowDrag) {\n if (to_start) dragClass = \"link_start_allow\";else dragClass = \"link_finish_allow\";\n } else {\n if (to_start) dragClass = \"link_start_deny\";else dragClass = \"link_finish_deny\";\n }\n\n css.push(dragClass);\n }\n\n return css.join(\" \");\n }\n\n function _render_pair(parent, css, task, content, config, margin) {\n var state = gantt.getState();\n var className, element;\n\n if (+task.start_date >= +state.min_date) {\n className = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\n element = content(className.join(\" \"));\n element.setAttribute(\"data-bind-property\", \"start_date\");\n\n if (margin) {\n element.style.marginLeft = margin + \"px\";\n }\n\n parent.appendChild(element);\n }\n\n if (+task.end_date <= +state.max_date) {\n className = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\n element = content(className.join(\" \"));\n element.setAttribute(\"data-bind-property\", \"end_date\");\n\n if (margin) {\n element.style.marginRight = margin + \"px\";\n }\n\n parent.appendChild(element);\n }\n }\n\n return _render_task_element;\n}\n\nmodule.exports = createTaskRenderer;","var ScaleHelper = require(\"./scales_ignore\");\n\nvar eventable = require(\"../../../utils/eventable\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nvar topPositionMixin = require(\"../row_position_mixin\");\n\nvar canvasRender = require(\"./tasks_canvas_render\");\n\nvar Timeline = function Timeline(parent, config, factory, gantt) {\n this.$config = utils.mixin({}, config || {});\n this.$scaleHelper = new ScaleHelper(gantt);\n this.$gantt = gantt;\n this._posFromDateCache = {};\n this._timelineDragScroll = null;\n utils.mixin(this, topPositionMixin(this));\n eventable(this);\n};\n\nTimeline.prototype = {\n init: function init(container) {\n container.innerHTML += \"<div class='gantt_task' style='width:inherit;height:inherit;'></div>\";\n this.$task = container.childNodes[0];\n this.$task.innerHTML = \"<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>\";\n this.$task_scale = this.$task.childNodes[0];\n this.$task_data = this.$task.childNodes[1];\n this.$task_data.innerHTML = \"<div class='gantt_task_bg'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div>\";\n this.$task_bg = this.$task_data.childNodes[0];\n this.$task_links = this.$task_data.childNodes[1];\n this.$task_bars = this.$task_data.childNodes[2];\n this._tasks = {\n col_width: 0,\n width: [],\n // width of each column\n full_width: 0,\n // width of all columns\n trace_x: [],\n rendered: {}\n };\n var config = this.$getConfig();\n var attr = config[this.$config.bind + \"_attribute\"];\n var linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n if (!linksAttr && this.$config.bindLinks) {\n linksAttr = \"data-\" + this.$config.bindLinks + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n this.$config.link_attribute = linksAttr || null;\n\n var layers = this._createLayerConfig();\n\n if (!this.$config.layers) {\n this.$config.layers = layers.tasks;\n }\n\n if (!this.$config.linkLayers) {\n this.$config.linkLayers = layers.links;\n }\n\n this._attachLayers(this.$gantt);\n\n this.callEvent(\"onReady\", []); //this.refresh();\n\n if (this.$gantt.ext.dragTimeline) {\n this._timelineDragScroll = this.$gantt.ext.dragTimeline.create();\n\n this._timelineDragScroll.attach(this);\n }\n },\n setSize: function setSize(width, height) {\n var config = this.$getConfig();\n\n if (width * 1 === width) {\n this.$config.width = width;\n }\n\n if (height * 1 === height) {\n this.$config.height = height;\n var dataHeight = Math.max(this.$config.height - config.scale_height);\n this.$task_data.style.height = dataHeight + 'px';\n }\n\n this.refresh();\n this.$task_bg.style.backgroundImage = \"\";\n\n if (config.smart_rendering && this.$config.rowStore) {\n this.$task_bg.style.height = this.getTotalHeight() + \"px\";\n } else {\n this.$task_bg.style.height = \"\";\n }\n\n var scale = this._tasks; //timeline area layers\n\n var data_els = this.$task_data.childNodes;\n\n for (var i = 0, len = data_els.length; i < len; i++) {\n var el = data_els[i];\n if (el.hasAttribute(\"data-layer\") && el.style) el.style.width = scale.full_width + \"px\";\n }\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$task.offsetWidth;\n }\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this.isVisible() ? this._tasks.full_width : 0;\n return {\n x: this.isVisible() ? this.$config.width : 0,\n y: this.isVisible() ? this.$config.height : 0,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (top * 1 === top) {\n this.$config.scrollTop = top;\n this.$task_data.scrollTop = this.$config.scrollTop;\n scrolled = true;\n }\n\n if (left * 1 === left) {\n this.$task.scrollLeft = left;\n this.$config.scrollLeft = this.$task.scrollLeft;\n\n this._refreshScales();\n\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n _refreshScales: function _refreshScales() {\n if (!this.isVisible()) return;\n var config = this.$getConfig();\n if (!config.smart_scales) return;\n var viewPort = this.getViewPort();\n var scales = this._scales;\n this.$task_scale.innerHTML = this._getScaleChunkHtml(scales, viewPort.x, viewPort.x_end);\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n _createLayerConfig: function _createLayerConfig() {\n var self = this;\n\n var taskFilter = function taskFilter() {\n return self.isVisible();\n };\n\n var barVisible = function barVisible(id, task) {\n return !task.hide_bar;\n };\n\n var taskLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.taskBar(),\n container: this.$task_bars,\n filter: [taskFilter, barVisible]\n }, {\n renderer: this.$gantt.$ui.layers.taskSplitBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskRollupBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskBg(),\n container: this.$task_bg,\n filter: [//function(){\n //\treturn !self.$getConfig().static_background;\n //},\n taskFilter]\n }];\n var linkLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.link(),\n container: this.$task_links,\n filter: [taskFilter]\n }];\n return {\n tasks: taskLayers,\n links: linkLayers\n };\n },\n _attachLayers: function _attachLayers(gantt) {\n this._taskLayers = [];\n this._linkLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n\n if (this.$config.bind) {\n this._bindStore();\n\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n taskRenderer.container = function () {\n return self.$task_data;\n };\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n if (typeof layer == \"function\" || layer && layer.render && layer.update) {\n layer = {\n renderer: layer\n };\n }\n\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n\n if (layer.expose) {\n this._taskRenderer = taskRenderer.getLayer(bar_layer);\n }\n }\n\n this._initStaticBackgroundRender();\n }\n\n if (this.$config.bindLinks) {\n self.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (!linkRenderer) {\n linkRenderer = layers.createDataRender({\n name: this.$config.bindLinks,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n var linkLayers = this.$config.linkLayers;\n\n for (var i = 0; linkLayers && i < linkLayers.length; i++) {\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n var layer = linkLayers[i];\n layer.view = this; //\tlayer.getViewPort = getViewPort;\n //\tsubscribeSmartRender(layer);\n\n var linkLayer = linkRenderer.addLayer(layer);\n\n this._taskLayers.push(linkLayer);\n\n if (linkLayers[i].expose) {\n this._linkRenderer = linkRenderer.getLayer(linkLayer);\n }\n }\n }\n },\n _initStaticBackgroundRender: function _initStaticBackgroundRender() {\n var self = this;\n var staticRender = canvasRender.create();\n var store = self.$config.rowStore;\n if (!store) return;\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function (id, item, mode) {\n if (id !== null) {\n return;\n }\n\n if (!self.isVisible()) return;\n var config = self.$getConfig();\n\n if (config.static_background || config.timeline_placeholder) {\n var store = self.$gantt.getDatastore(self.$config.bind);\n var staticBgContainer = self.$task_bg_static;\n\n if (!staticBgContainer) {\n staticBgContainer = document.createElement(\"div\");\n staticBgContainer.className = \"gantt_task_bg\";\n self.$task_bg_static = staticBgContainer;\n\n if (self.$task_bg.nextSibling) {\n self.$task_data.insertBefore(staticBgContainer, self.$task_bg.nextSibling);\n } else {\n self.$task_data.appendChild(staticBgContainer);\n }\n }\n\n if (store) {\n var staticBackgroundHeight = self.getTotalHeight();\n\n if (config.timeline_placeholder) {\n staticBackgroundHeight = config.timeline_placeholder.height || self.$task_data.offsetHeight || 99999;\n }\n\n staticRender.render(staticBgContainer, config, self.getScale(), staticBackgroundHeight, self.getItemHeight(item ? item.id : null));\n }\n } else if (config.static_background) {\n if (self.$task_bg_static && self.$task_bg_static.parentNode) {\n self.$task_bg_static.parentNode.removeChild(self.$task_bg_static);\n }\n }\n });\n this.attachEvent(\"onDestroy\", function () {\n staticRender.destroy();\n });\n\n this._initStaticBackgroundRender = function () {}; //init once\n\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n if (this._linkLayers) {\n for (var i = 0; i < this._linkLayers.length; i++) {\n linkRenderer.removeLayer(this._linkLayers[i]);\n }\n }\n\n this._linkLayers = [];\n this._taskLayers = [];\n },\n _render_tasks_scales: function _render_tasks_scales() {\n var config = this.$getConfig();\n var scales_html = \"\",\n outer_width = 0,\n scale_height = 0;\n var state = this.$gantt.getState();\n\n if (this.isVisible()) {\n var helpers = this.$scaleHelper;\n\n var scales = this._getScales();\n\n scale_height = config.scale_height;\n var availWidth = this.$config.width;\n\n if (config.autosize == \"x\" || config.autosize == \"xy\") {\n availWidth = Math.max(config.autosize_min_width, 0);\n }\n\n var cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n var cfg = this._tasks = cfgs[cfgs.length - 1];\n this._scales = cfgs;\n this._posFromDateCache = {};\n scales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n outer_width = cfg.full_width + \"px\"; //cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\n scale_height += \"px\";\n }\n\n this.$task_scale.style.height = scale_height;\n this.$task_data.style.width = this.$task_scale.style.width = outer_width;\n this.$task_scale.innerHTML = scales_html;\n },\n _getScaleChunkHtml: function _get_scale_chunk_html(scales, fromPos, toPos) {\n var templates = this.$gantt.templates;\n var html = [];\n var css = templates.scale_row_class;\n\n for (var i = 0; i < scales.length; i++) {\n var cssClass = \"gantt_scale_line\";\n var tplClass = css(scales[i]);\n\n if (tplClass) {\n cssClass += \" \" + tplClass;\n }\n\n html.push(\"<div class=\\\"\" + cssClass + \"\\\" style=\\\"height:\" + scales[i].height + \"px;position:relative;line-height:\" + scales[i].height + \"px\\\">\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"</div>\");\n }\n\n return html.join(\"\");\n },\n _prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\n var globalConfig = this.$getConfig();\n var globalTemplates = this.$gantt.templates;\n var cells = [];\n var date = null,\n css = null;\n var content = config.format || config.template || config.date;\n\n if (typeof content === \"string\") {\n content = this.$gantt.date.date_to_str(content);\n }\n\n var startIndex = 0,\n endIndex = config.count;\n\n if (globalConfig.smart_scales && !isNaN(fromPos) && !isNaN(toPos)) {\n startIndex = helpers.findBinary(config.left, fromPos);\n endIndex = helpers.findBinary(config.left, toPos) + 1;\n }\n\n css = config.css || function () {};\n\n if (!config.css && globalConfig.inherit_scale_class) {\n css = globalTemplates.scale_cell_class;\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n if (!config.trace_x[i]) break;\n date = new Date(config.trace_x[i]);\n var value = content.call(this, date),\n width = config.width[i],\n height = config.height,\n left = config.left[i],\n style = \"\",\n template = \"\",\n cssclass = \"\";\n\n if (width) {\n var position = globalConfig.smart_scales ? \"position:absolute;left:\" + left + \"px\" : \"\";\n style = \"width:\" + width + \"px;height:\" + height + \"px;\" + position;\n cssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\n template = css.call(this, date);\n if (template) cssclass += \" \" + template;\n\n var ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\n\n var cell = \"<div class='\" + cssclass + \"'\" + ariaAttr + \" style='\" + style + \"'>\" + value + \"</div>\";\n cells.push(cell);\n } else {//do not render ignored cells\n }\n }\n\n return cells.join(\"\");\n },\n dateFromPos: function dateFromPos(x) {\n var scale = this._tasks;\n\n if (x < 0 || x > scale.full_width || !scale.full_width) {\n return null;\n }\n\n var ind = helpers.findBinary(this._tasks.left, x);\n var summ = this._tasks.left[ind];\n var col_width = scale.width[ind] || scale.col_width;\n var part = 0;\n\n if (col_width) {\n part = (x - summ) / col_width;\n\n if (scale.rtl) {\n part = 1 - part;\n }\n }\n\n var unit = 0;\n\n if (part) {\n unit = this._getColumnDuration(scale, scale.trace_x[ind]);\n }\n\n var date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\n return date;\n },\n posFromDate: function posFromDate(date) {\n if (!this.isVisible()) return 0;\n\n if (!date) {\n return 0;\n }\n\n var dateValue = String(date.valueOf());\n\n if (this._posFromDateCache[dateValue] !== undefined) {\n return this._posFromDateCache[dateValue];\n }\n\n var ind = this.columnIndexByDate(date);\n this.$gantt.assert(ind >= 0, \"Invalid day index\");\n var wholeCells = Math.floor(ind);\n var partCell = ind % 1;\n\n var pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\n\n if (wholeCells == this._tasks.width.length) pos += this._tasks.width[this._tasks.width.length - 1]; //for(var i=1; i <= wholeCells; i++)\n //\tpos += gantt._tasks.width[i-1];\n\n if (partCell) {\n if (wholeCells < this._tasks.width.length) {\n pos += this._tasks.width[wholeCells] * (partCell % 1);\n } else {\n pos += 1;\n }\n }\n\n var roundPos = Math.round(pos);\n this._posFromDateCache[dateValue] = roundPos;\n return Math.round(roundPos);\n },\n _getNextVisibleColumn: function _getNextVisibleColumn(startIndex, columns, ignores) {\n // iterate columns to the right\n var date = +columns[startIndex];\n var visibleDateIndex = startIndex;\n\n while (ignores[date]) {\n visibleDateIndex++;\n date = +columns[visibleDateIndex];\n }\n\n return visibleDateIndex;\n },\n _getPrevVisibleColumn: function _getPrevVisibleColumn(startIndex, columns, ignores) {\n // iterate columns to the left\n var date = +columns[startIndex];\n var visibleDateIndex = startIndex;\n\n while (ignores[date]) {\n visibleDateIndex--;\n date = +columns[visibleDateIndex];\n }\n\n return visibleDateIndex;\n },\n _getClosestVisibleColumn: function _getClosestVisibleColumn(startIndex, columns, ignores) {\n var visibleDateIndex = this._getNextVisibleColumn(startIndex, columns, ignores);\n\n if (!columns[visibleDateIndex]) {\n visibleDateIndex = this._getPrevVisibleColumn(startIndex, columns, ignores);\n }\n\n return visibleDateIndex;\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var pos = new Date(date).valueOf();\n var days = this._tasks.trace_x_ascending,\n ignores = this._tasks.ignore_x;\n var state = this.$gantt.getState();\n\n if (pos <= state.min_date) {\n if (this._tasks.rtl) {\n return days.length;\n } else {\n return 0;\n }\n }\n\n if (pos >= state.max_date) {\n if (this._tasks.rtl) {\n return 0;\n } else {\n return days.length;\n }\n }\n\n var dateIndex = helpers.findBinary(days, pos);\n\n var visibleIndex = this._getClosestVisibleColumn(dateIndex, days, ignores);\n\n var visibleDate = days[visibleIndex];\n var transition = this._tasks.trace_index_transition;\n\n if (!visibleDate) {\n if (transition) {\n return transition[0];\n } else {\n return 0;\n }\n }\n\n var part = (date - days[visibleIndex]) / this._getColumnDuration(this._tasks, days[visibleIndex]);\n\n if (transition) {\n return transition[visibleIndex] + (1 - part);\n } else {\n return visibleIndex + part;\n }\n },\n getItemPosition: function getItemPosition(task, start_date, end_date) {\n var xLeft, xRight, width;\n\n if (this._tasks.rtl) {\n xRight = this.posFromDate(start_date || task.start_date);\n xLeft = this.posFromDate(end_date || task.end_date);\n } else {\n xLeft = this.posFromDate(start_date || task.start_date);\n xRight = this.posFromDate(end_date || task.end_date);\n }\n\n width = Math.max(xRight - xLeft, 0);\n var y = this.getItemTop(task.id);\n var height = this.getBarHeight(task.id);\n var rowHeight = this.getItemHeight(task.id);\n return {\n left: xLeft,\n top: y,\n height: height,\n width: width,\n rowHeight: rowHeight\n };\n },\n getBarHeight: function getBarHeight(taskId, isMilestoneRender) {\n var config = this.$getConfig();\n var task = this.$config.rowStore.getItem(taskId); // height of the bar item\n\n var height = task.task_height || task.bar_height || config.bar_height || config.task_height;\n var rowHeight = this.getItemHeight(taskId);\n\n if (height == \"full\") {\n var offset = config.task_height_offset || 5;\n height = rowHeight - offset;\n } //item height cannot be bigger than row height\n\n\n height = Math.min(height, rowHeight);\n\n if (isMilestoneRender) {\n // to get correct height for addapting Milestone to the row\n height = Math.round(height / Math.sqrt(2));\n }\n\n return Math.max(height, 0);\n },\n getScale: function getScale() {\n return this._tasks;\n },\n _getScales: function _get_scales() {\n var config = this.$getConfig();\n var helpers = this.$scaleHelper;\n var scales = [helpers.primaryScale(config)].concat(helpers.getSubScales(config));\n helpers.sortScales(scales);\n return scales;\n },\n _getColumnDuration: function _get_coll_duration(scale, date) {\n return this.$gantt.date.add(date, scale.step, scale.unit) - date;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._timelineCacheAttached) {\n var self = this;\n rowStore._timelineCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._timelineCacheAttached) {\n rowStore.detachEvent(rowStore._timelineCacheAttached);\n rowStore._timelineCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n if (this.$config.bindLinks) {\n this.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\n }\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initStaticBackgroundRender();\n\n this._render_tasks_scales();\n },\n destructor: function destructor() {\n var gantt = this.$gantt;\n\n this._clearLayers(gantt);\n\n this._unbindStore();\n\n this.$task = null;\n this.$task_scale = null;\n this.$task_data = null;\n this.$task_bg = null;\n this.$task_links = null;\n this.$task_bars = null;\n this.$gantt = null;\n\n if (this.$config.rowStore) {\n this.$config.rowStore.detachEvent(this._staticBgHandler);\n this.$config.rowStore = null;\n }\n\n if (this.$config.linkStore) {\n this.$config.linkStore = null;\n }\n\n if (this._timelineDragScroll) {\n this._timelineDragScroll.destructor();\n\n this._timelineDragScroll = null;\n }\n\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n }\n};\nmodule.exports = Timeline;","module.exports = function (item, view, config) {\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: 0,\n right: Infinity\n };\n};","function create(gantt) {\n var events = [];\n return {\n delegate: function delegate(event, className, handler, root) {\n events.push([event, className, handler, root]);\n var helper = gantt.$services.getService(\"mouseEvents\");\n helper.delegate(event, className, handler, root);\n },\n destructor: function destructor() {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\n for (var i = 0; i < events.length; i++) {\n var h = events[i];\n mouseEvents.detach(h[0], h[1], h[2], h[3]);\n }\n\n events = [];\n }\n };\n}\n\nmodule.exports = create;","var domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n eventable = require(\"../../../utils/eventable\"),\n gridResize = require(\"./grid_resize\"),\n topPositionMixin = require(\"../row_position_mixin\"),\n rowResize = require(\"./task_grid_row_resize\");\n\nvar ColumnDnd = require(\"../plugins/column_grid_dnd\")[\"default\"];\n\nvar Grid = function Grid(parent, config, factory, gantt) {\n this.$config = utils.mixin({}, config || {});\n this.$gantt = gantt;\n this.$parent = parent;\n eventable(this);\n this.$state = {};\n utils.mixin(this, topPositionMixin(this));\n};\n\nGrid.prototype = {\n init: function init(container) {\n var gantt = this.$gantt;\n\n var gridAriaAttr = gantt._waiAria.gridAttrString();\n\n var gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\n\n var _ganttConfig = this.$getConfig();\n\n var reorderColumns = _ganttConfig.reorder_grid_columns || false;\n\n if (this.$config.reorder_grid_columns !== undefined) {\n reorderColumns = this.$config.reorder_grid_columns;\n }\n\n container.innerHTML = \"<div class='gantt_grid' style='height:inherit;width:inherit;' \" + gridAriaAttr + \"></div>\";\n this.$grid = container.childNodes[0];\n this.$grid.innerHTML = \"<div class='gantt_grid_scale' \" + gantt._waiAria.gridScaleRowAttrString() + \"></div><div class='gantt_grid_data' \" + gridDataAriaAttr + \"></div>\";\n this.$grid_scale = this.$grid.childNodes[0];\n this.$grid_data = this.$grid.childNodes[1];\n var attr = _ganttConfig[this.$config.bind + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n\n if (!this.$config.layers) {\n var layers = this._createLayerConfig();\n\n this.$config.layers = layers;\n }\n\n var resizer = gridResize(gantt, this);\n resizer.init();\n this._renderHeaderResizers = resizer.doOnRender;\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n var resizerrow = rowResize(gantt, this);\n resizerrow.init();\n\n this._addLayers(this.$gantt);\n\n this._initEvents();\n\n if (reorderColumns) {\n this._columnDND = new ColumnDnd(gantt, this);\n\n this._columnDND.init();\n }\n\n this.callEvent(\"onReady\", []); //this.refresh();\n },\n _validateColumnWidth: function _validateColumnWidth(column, property) {\n // user can set {name:\"text\", width:\"200\",...} for some reason,\n // check and convert it to number when possible\n var value = column[property];\n\n if (value && value != \"*\") {\n var gantt = this.$gantt;\n var numericWidth = value * 1;\n\n if (isNaN(numericWidth)) {\n gantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n } else {\n column[property] = numericWidth;\n }\n }\n },\n setSize: function setSize(width, height) {\n this.$config.width = this.$state.width = width;\n this.$config.height = this.$state.height = height; // TODO: maybe inherit and override in a subclass instead of extending here\n\n var columns = this.getGridColumns(),\n innerWidth = 0;\n var config = this.$getConfig();\n var elasticColumns = config.grid_elastic_columns;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n this._validateColumnWidth(columns[i], \"min_width\");\n\n this._validateColumnWidth(columns[i], \"max_width\");\n\n this._validateColumnWidth(columns[i], \"width\");\n\n innerWidth += columns[i].width * 1;\n }\n\n var outerWidth;\n\n if (isNaN(innerWidth) || !this.$config.scrollable) {\n outerWidth = this._setColumnsWidth(width + 1);\n innerWidth = outerWidth;\n }\n\n if (this.$config.scrollable && elasticColumns && !isNaN(innerWidth)) {\n // GS-1352: Allow resizing the grid columns, then the grid width is increased\n // or keep the grid width, but don't allow column resize to affect the grid width\n var columnProperty = \"width\";\n\n if (elasticColumns == \"min_width\") {\n columnProperty = \"min_width\";\n }\n\n var newColumnWidth = 0;\n columns.forEach(function (col) {\n newColumnWidth += col[columnProperty] || config.min_grid_column_width;\n }); //newColumnWidth--; // the total column width shouldn't match the outerWidth // GS-2190 reducing width seems to be not needed\n\n var columnsWidth = Math.max(newColumnWidth, width);\n innerWidth = this._setColumnsWidth(columnsWidth);\n outerWidth = width;\n }\n\n if (this.$config.scrollable) {\n this.$grid_scale.style.width = innerWidth + \"px\";\n this.$grid_data.style.width = innerWidth + \"px\";\n } else {\n this.$grid_scale.style.width = \"inherit\";\n this.$grid_data.style.width = \"inherit\";\n }\n\n this.$config.width -= 1;\n var config = this.$getConfig();\n\n if (outerWidth !== width) {\n if (outerWidth !== undefined) {\n config.grid_width = outerWidth;\n this.$config.width = outerWidth - 1;\n } else {\n if (!isNaN(innerWidth)) {\n this._setColumnsWidth(innerWidth);\n\n config.grid_width = innerWidth;\n this.$config.width = innerWidth - 1;\n }\n }\n }\n\n var dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n this.$grid_data.style.height = dataHeight + \"px\";\n this.refresh();\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this._getGridWidth();\n\n var size = {\n x: this.$state.width,\n y: this.$state.height,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n return size;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._gridCacheAttached) {\n var self = this;\n rowStore._gridCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._gridCacheAttached) {\n rowStore.detachEvent(rowStore._gridCacheAttached);\n rowStore._gridCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initSmartRenderingPlaceholder();\n\n this._calculateGridWidth();\n\n this._renderGridHeader();\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (left * 1 == left) {\n this.$config.scrollLeft = this.$state.scrollLeft = this.$grid.scrollLeft = left;\n scrolled = true;\n } // var config = this.$getConfig();\n\n\n if (top * 1 == top) {\n this.$config.scrollTop = this.$state.scrollTop = this.$grid_data.scrollTop = top;\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n getColumnIndex: function getColumnIndex(name, excludeHidden) {\n var columns = this.$getConfig().columns;\n var hiddenIndexShift = 0;\n\n for (var i = 0; i < columns.length; i++) {\n // GS-1257. If the cell is hidden, the target column index should be correct\n if (excludeHidden && columns[i].hide) {\n hiddenIndexShift++;\n }\n\n if (columns[i].name == name) {\n return i - hiddenIndexShift;\n }\n }\n\n return null;\n },\n getColumn: function getColumn(name) {\n var index = this.getColumnIndex(name);\n\n if (index === null) {\n return null;\n }\n\n return this.$getConfig().columns[index];\n },\n getGridColumns: function getGridColumns() {\n var config = this.$getConfig();\n return config.columns.slice();\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$grid.offsetWidth;\n }\n },\n // getItemHeight: function () {\n // \tvar config = this.$getConfig();\n // \treturn config.row_height;\n // },\n _createLayerConfig: function _createLayerConfig() {\n var gantt = this.$gantt;\n var self = this;\n var layers = [{\n renderer: gantt.$ui.layers.gridLine(),\n container: this.$grid_data,\n filter: [function () {\n return self.isVisible();\n }]\n }, {\n renderer: gantt.$ui.layers.gridTaskRowResizer(),\n container: this.$grid_data,\n append: true,\n filter: [function () {\n return gantt.config.resize_rows;\n }]\n }];\n return layers;\n },\n _addLayers: function _addLayers(gantt) {\n if (!this.$config.bind) return;\n this._taskLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$grid_data;\n }\n });\n }\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n }\n\n this._bindStore();\n\n this._initSmartRenderingPlaceholder();\n },\n _refreshPlaceholderOnStoreUpdate: function _refreshPlaceholderOnStoreUpdate(id) {\n var config = this.$getConfig(),\n store = this.$config.rowStore;\n\n if (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n return;\n }\n\n var contentHeight;\n\n if (this.$config.scrollY) {\n var scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n if (scroll) contentHeight = scroll.getScrollState().scrollSize;\n }\n\n if (!contentHeight) {\n contentHeight = store ? this.getTotalHeight() : 0;\n }\n\n if (contentHeight) {\n if (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\n this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n }\n\n var placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n placeholder.style.visibility = \"hidden\";\n placeholder.style.height = contentHeight + \"px\";\n placeholder.style.width = \"1px\";\n this.$grid_data.appendChild(placeholder);\n }\n },\n _initSmartRenderingPlaceholder: function _initSmartRenderingPlaceholder() {\n var store = this.$config.rowStore;\n\n if (!store) {\n return;\n } else {\n this._initSmartRenderingPlaceholder = function () {};\n }\n\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n },\n _initEvents: function _initEvents() {\n var gantt = this.$gantt;\n\n this._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.close(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.open(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n this._taskLayers = [];\n },\n _getColumnWidth: function _getColumnWidth(column, config, width) {\n var min_width = column.min_width || config.min_grid_column_width;\n var new_width = Math.max(width, min_width || 10);\n if (column.max_width) new_width = Math.min(new_width, column.max_width);\n return new_width;\n },\n // set min width only if width < than config.min_grid_column_width\n _checkGridColumnMinWidthLimits: function _checkGridColumnMinWidthLimits(columns, config) {\n for (var i = 0, l = columns.length; i < l; i++) {\n var width = columns[i].width * 1;\n\n if (!columns[i].min_width && width < config.min_grid_column_width) {\n columns[i].min_width = width;\n }\n }\n },\n // return min and max possible grid width according to restricts\n _getGridWidthLimits: function _getGridWidthLimits() {\n var config = this.$getConfig(),\n columns = this.getGridColumns(),\n min_limit = 0,\n max_limit = 0;\n\n for (var i = 0; i < columns.length; i++) {\n min_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\n\n if (max_limit !== undefined) {\n max_limit = columns[i].max_width ? max_limit + columns[i].max_width : undefined;\n }\n }\n\n this._checkGridColumnMinWidthLimits(columns, config); // FIX ME: should it be before calculating limits?\n\n\n return [min_limit, max_limit];\n },\n // resize columns to get total newWidth, starting from columns[start_index]\n _setColumnsWidth: function _setColumnsWidth(newWidth, start_index) {\n var config = this.$getConfig();\n var columns = this.getGridColumns(),\n columns_width = 0,\n final_width = newWidth;\n start_index = !window.isNaN(start_index) ? start_index : -1;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n\n if (window.isNaN(columns_width)) {\n this._calculateGridWidth();\n\n columns_width = 0;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n }\n\n var extra_width = final_width - columns_width;\n var start_width = 0;\n\n for (var i = 0; i < start_index + 1; i++) {\n start_width += columns[i].width;\n }\n\n columns_width -= start_width;\n\n for (var i = start_index + 1; i < columns.length; i++) {\n var col = columns[i];\n var share = Math.round(extra_width * (col.width / columns_width)); // columns have 2 additional restrict fields - min_width & max_width that are set by user\n\n if (extra_width < 0) {\n if (col.min_width && col.width + share < col.min_width) share = col.min_width - col.width;else if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width) share = config.min_grid_column_width - col.width;\n } else if (col.max_width && col.width + share > col.max_width) share = col.max_width - col.width;\n\n columns_width -= col.width;\n col.width += share;\n extra_width -= share;\n }\n\n var iterator = extra_width > 0 ? 1 : -1;\n\n while (extra_width > 0 && iterator === 1 || extra_width < 0 && iterator === -1) {\n var curExtra = extra_width;\n\n for (i = start_index + 1; i < columns.length; i++) {\n var new_width = columns[i].width + iterator;\n\n if (new_width == this._getColumnWidth(columns[i], config, new_width)) {\n extra_width -= iterator;\n columns[i].width = new_width;\n }\n\n if (!extra_width) break;\n }\n\n if (curExtra == extra_width) break;\n } // if impossible to resize the right-side columns, resize the start column\n\n\n if (extra_width && start_index > -1) {\n var new_width = columns[start_index].width + extra_width;\n if (new_width == this._getColumnWidth(columns[start_index], config, new_width)) columns[start_index].width = new_width;\n } //if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n //\treturn;\n\n\n return this._getColsTotalWidth();\n },\n _getColsTotalWidth: function _getColsTotalWidth() {\n var columns = this.getGridColumns();\n var cols_width = 0;\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n return false;\n }\n\n cols_width += v;\n }\n\n return cols_width;\n },\n _calculateGridWidth: function _calculateGridWidth() {\n var config = this.$getConfig();\n var columns = this.getGridColumns();\n var cols_width = 0;\n var unknown = [];\n var width = [];\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n v = config.min_grid_column_width || 10;\n unknown.push(i);\n }\n\n width[i] = v;\n cols_width += v;\n }\n\n var gridWidth = this._getGridWidth() + 1;\n\n if (config.autofit || unknown.length) {\n var diff = gridWidth - cols_width; // TODO: logic may be improved for proportional changing of width\n // autofit adjusts columns widths to the outer grid width\n // it doesn't makes sense if grid has inner scroll with elastic columns\n\n if (config.autofit && !config.grid_elastic_columns) {\n // delta must be added for all columns\n for (var i = 0; i < width.length; i++) {\n var delta = Math.round(diff / (width.length - i));\n width[i] += delta;\n\n var new_width = this._getColumnWidth(columns[i], config, width[i]);\n\n if (new_width != width[i]) {\n delta = new_width - width[i];\n width[i] = new_width;\n }\n\n diff -= delta;\n }\n } else if (unknown.length) {\n // there are several columns with undefined width\n for (var i = 0; i < unknown.length; i++) {\n var delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\n\n var index = unknown[i];\n width[index] += delta;\n\n var new_width = this._getColumnWidth(columns[index], config, width[index]);\n\n if (new_width != width[index]) {\n delta = new_width - width[index];\n width[index] = new_width;\n }\n\n diff -= delta;\n }\n }\n\n for (var i = 0; i < width.length; i++) {\n columns[i].width = width[i];\n }\n } else {\n var changed = gridWidth != cols_width;\n this.$config.width = cols_width - 1;\n config.grid_width = cols_width;\n\n if (changed) {\n this.$parent._setContentSize(this.$config.width, null);\n }\n }\n },\n _renderGridHeader: function _renderGridHeader() {\n var gantt = this.$gantt;\n var config = this.$getConfig();\n var locale = this.$gantt.locale;\n var templates = this.$gantt.templates;\n var columns = this.getGridColumns();\n\n if (config.rtl) {\n columns = columns.reverse();\n }\n\n var cells = [];\n var width = 0,\n labels = locale.labels;\n var lineHeigth = config.scale_height - 1;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i]; // ensure columns have non-empty names\n\n if (!col.name) {\n col.name = gantt.uid() + \"\";\n }\n\n var colWidth = col.width * 1;\n\n var gridWidth = this._getGridWidth();\n\n if (last && gridWidth > width + colWidth) col.width = colWidth = gridWidth - width;\n width += colWidth;\n var sort = gantt._sort && col.name == gantt._sort.name ? \"<div class='gantt_sort gantt_\" + gantt._sort.direction + \"'></div>\" : \"\";\n var cssClass = [\"gantt_grid_head_cell\", \"gantt_grid_head_\" + col.name, last ? \"gantt_last_cell\" : \"\", templates.grid_header_class(col.name, col)].join(\" \");\n var style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\n var label = col.label || labels[\"column_\" + col.name] || labels[col.name];\n label = label || \"\";\n\n var ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\n\n var cell = \"<div class='\" + cssClass + \"' style='\" + style + \"' \" + ariaAttrs + \" data-column-id='\" + col.name + \"' column_id='\" + col.name + \"'\" + \" data-column-name='\" + col.name + \"' data-column-index='\" + i + \"'\" + \">\" + label + sort + \"</div>\";\n cells.push(cell);\n }\n\n this.$grid_scale.style.height = config.scale_height + \"px\";\n this.$grid_scale.style.lineHeight = lineHeigth + \"px\"; //this.$grid_scale.style.width = \"inherit\";\n\n this.$grid_scale.innerHTML = cells.join(\"\");\n\n if (this._renderHeaderResizers) {\n this._renderHeaderResizers();\n }\n },\n _getGridWidth: function _getGridWidth() {\n // TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\n return this.$config.width;\n },\n destructor: function destructor() {\n this._clearLayers(this.$gantt);\n\n if (this._mouseDelegates) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n }\n\n this._unbindStore();\n\n this.$grid = null;\n this.$grid_scale = null;\n this.$grid_data = null;\n this.$gantt = null;\n\n if (this.$config.rowStore) {\n this.$config.rowStore.detachEvent(this._staticBgHandler);\n this.$config.rowStore = null;\n }\n\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n }\n};\nmodule.exports = Grid;","var utils = require(\"../../../utils/utils\");\n\nfunction ScaleHelper(gantt) {\n var dateHelper = gantt.date;\n var services = gantt.$services;\n return {\n getSum: function getSum(sizes, from, to) {\n if (to === undefined) to = sizes.length - 1;\n if (from === undefined) from = 0;\n var summ = 0;\n\n for (var i = from; i <= to; i++) {\n summ += sizes[i];\n }\n\n return summ;\n },\n setSumWidth: function setSumWidth(sum_width, scale, from, to) {\n var parts = scale.width;\n if (to === undefined) to = parts.length - 1;\n if (from === undefined) from = 0;\n var length = to - from + 1;\n if (from > parts.length - 1 || length <= 0 || to > parts.length - 1) return;\n var oldWidth = this.getSum(parts, from, to);\n var diff = sum_width - oldWidth;\n this.adjustSize(diff, parts, from, to);\n this.adjustSize(-diff, parts, to + 1);\n scale.full_width = this.getSum(parts);\n },\n splitSize: function splitSize(width, count) {\n var arr = [];\n\n for (var i = 0; i < count; i++) {\n arr[i] = 0;\n }\n\n this.adjustSize(width, arr);\n return arr;\n },\n adjustSize: function adjustSize(width, parts, from, to) {\n if (!from) from = 0;\n if (to === undefined) to = parts.length - 1;\n var length = to - from + 1;\n var full = this.getSum(parts, from, to);\n\n for (var i = from; i <= to; i++) {\n var share = Math.floor(width * (full ? parts[i] / full : 1 / length));\n full -= parts[i];\n width -= share;\n length--;\n parts[i] += share;\n }\n\n parts[parts.length - 1] += width;\n },\n sortScales: function sortScales(scales) {\n function cellSize(unit, step) {\n var d = new Date(1970, 0, 1);\n return dateHelper.add(d, step, unit) - d;\n }\n\n scales.sort(function (a, b) {\n if (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\n return 1;\n } else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\n return -1;\n } else {\n return 0;\n }\n });\n\n for (var i = 0; i < scales.length; i++) {\n scales[i].index = i;\n }\n },\n _isLegacyMode: function _isLegacyMode(config) {\n var scaleConfig = config || gantt.config;\n return scaleConfig.scale_unit || scaleConfig.date_scale || scaleConfig.subscales;\n },\n _prepareScaleObject: function _prepareScaleObject(scale) {\n var format = scale.format;\n\n if (!format) {\n format = scale.template || scale.date || \"%d %M\";\n }\n\n if (typeof format === \"string\") {\n format = gantt.date.date_to_str(format);\n }\n\n return {\n unit: scale.unit || \"day\",\n step: scale.step || 1,\n format: format,\n css: scale.css\n };\n },\n primaryScale: function primaryScale(config) {\n var templates = services.getService(\"templateLoader\");\n\n var legacyMode = this._isLegacyMode(config);\n\n var scaleConfig = config || gantt.config;\n var result;\n\n if (legacyMode) {\n templates.initTemplate(\"date_scale\", undefined, undefined, scaleConfig, gantt.config.templates);\n result = {\n unit: gantt.config.scale_unit,\n step: gantt.config.step,\n template: gantt.templates.date_scale,\n date: gantt.config.date_scale,\n css: gantt.templates.scale_cell_class\n };\n } else {\n var primaryScale = scaleConfig.scales[0];\n result = {\n unit: primaryScale.unit,\n step: primaryScale.step,\n template: primaryScale.template,\n format: primaryScale.format,\n date: primaryScale.date,\n css: primaryScale.css || gantt.templates.scale_cell_class\n };\n }\n\n return this._prepareScaleObject(result);\n },\n getSubScales: function getSubScales(config) {\n var legacyMode = this._isLegacyMode(config);\n\n var scaleConfig = config || gantt.config;\n var scales;\n\n if (legacyMode) {\n scales = scaleConfig.subscales || [];\n } else {\n scales = scaleConfig.scales.slice(1);\n }\n\n return scales.map(function (scale) {\n return this._prepareScaleObject(scale);\n }.bind(this));\n },\n prepareConfigs: function prepareConfigs(scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\n var heights = this.splitSize(scale_height, scales.length);\n var full_width = container_width;\n var configs = [];\n\n for (var i = scales.length - 1; i >= 0; i--) {\n var main_scale = i == scales.length - 1;\n var cfg = this.initScaleConfig(scales[i], minDate, maxDate);\n\n if (main_scale) {\n this.processIgnores(cfg);\n }\n\n this.initColSizes(cfg, min_coll_width, full_width, heights[i]);\n this.limitVisibleRange(cfg);\n\n if (main_scale) {\n full_width = cfg.full_width;\n }\n\n configs.unshift(cfg);\n }\n\n for (var i = 0; i < configs.length - 1; i++) {\n this.alineScaleColumns(configs[configs.length - 1], configs[i]);\n }\n\n for (var i = 0; i < configs.length; i++) {\n if (rtl) {\n this.reverseScale(configs[i]);\n }\n\n this.setPosSettings(configs[i]);\n }\n\n return configs;\n },\n reverseScale: function reverseScale(scale) {\n scale.width = scale.width.reverse();\n scale.trace_x = scale.trace_x.reverse();\n var indexes = scale.trace_indexes;\n scale.trace_indexes = {};\n scale.trace_index_transition = {};\n scale.rtl = true;\n\n for (var i = 0; i < scale.trace_x.length; i++) {\n scale.trace_indexes[scale.trace_x[i].valueOf()] = i;\n scale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\n }\n\n return scale;\n },\n setPosSettings: function setPosSettings(config) {\n for (var i = 0, len = config.trace_x.length; i < len; i++) {\n config.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\n }\n },\n _ignore_time_config: function _ignore_time_config(date, scale) {\n if (gantt.config.skip_off_time) {\n var skip = true;\n var probe = date; // check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\n\n for (var i = 0; i < scale.step; i++) {\n if (i) {\n probe = dateHelper.add(date, i, scale.unit);\n }\n\n skip = skip && !this.isWorkTime(probe, scale.unit);\n }\n\n return skip;\n }\n\n return false;\n },\n //defined in an extension\n processIgnores: function processIgnores(config) {\n config.ignore_x = {};\n config.display_count = config.count;\n },\n initColSizes: function initColSizes(config, min_col_width, full_width, line_height) {\n var cont_width = full_width;\n config.height = line_height;\n var column_count = config.display_count === undefined ? config.count : config.display_count;\n if (!column_count) column_count = 1;\n config.col_width = Math.floor(cont_width / column_count);\n\n if (min_col_width) {\n if (config.col_width < min_col_width) {\n config.col_width = min_col_width;\n cont_width = config.col_width * column_count;\n }\n }\n\n config.width = [];\n var ignores = config.ignore_x || {};\n\n for (var i = 0; i < config.trace_x.length; i++) {\n if (ignores[config.trace_x[i].valueOf()] || config.display_count == config.count) {\n config.width[i] = 0;\n } else {\n // width of month columns should be proportional month duration\n var width = 1;\n\n if (config.unit == \"month\") {\n var days = Math.round((dateHelper.add(config.trace_x[i], config.step, config.unit) - config.trace_x[i]) / (1000 * 60 * 60 * 24));\n width = days;\n }\n\n config.width[i] = width;\n }\n }\n\n this.adjustSize(cont_width - this.getSum(config.width)\n /* 1 width per column from the code above */\n , config.width);\n config.full_width = this.getSum(config.width);\n },\n initScaleConfig: function initScaleConfig(config, min_date, max_date) {\n var cfg = utils.mixin({\n count: 0,\n col_width: 0,\n full_width: 0,\n height: 0,\n width: [],\n left: [],\n trace_x: [],\n trace_indexes: {},\n min_date: new Date(min_date),\n max_date: new Date(max_date)\n }, config);\n this.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\n cfg.count++;\n cfg.trace_x.push(new Date(date));\n cfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\n });\n cfg.trace_x_ascending = cfg.trace_x.slice();\n return cfg;\n },\n iterateScales: function iterateScales(lower_scale, upper_scale, from, to, callback) {\n var upper_dates = upper_scale.trace_x;\n var lower_dates = lower_scale.trace_x;\n var prev = from || 0;\n var end = to || lower_dates.length - 1;\n var prevUpper = 0;\n\n for (var up = 1; up < upper_dates.length; up++) {\n var target_index = lower_scale.trace_indexes[+upper_dates[up]];\n\n if (target_index !== undefined && target_index <= end) {\n if (callback) {\n callback.apply(this, [prevUpper, up, prev, target_index]);\n }\n\n prev = target_index;\n prevUpper = up;\n continue;\n }\n }\n },\n alineScaleColumns: function alineScaleColumns(lower_scale, upper_scale, from, to) {\n this.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\n var targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\n var actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\n\n if (actualWidth != targetWidth) {\n this.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\n }\n });\n },\n eachColumn: function eachColumn(unit, step, min_date, max_date, callback) {\n var start = new Date(min_date),\n end = new Date(max_date);\n\n if (dateHelper[unit + \"_start\"]) {\n start = dateHelper[unit + \"_start\"](start);\n }\n\n var curr = new Date(start);\n\n if (+curr >= +end) {\n end = dateHelper.add(curr, step, unit);\n }\n\n while (+curr < +end) {\n callback.call(this, new Date(curr));\n var tzOffset = curr.getTimezoneOffset();\n curr = dateHelper.add(curr, step, unit);\n curr = gantt._correct_dst_change(curr, tzOffset, step, unit);\n if (dateHelper[unit + '_start']) curr = dateHelper[unit + \"_start\"](curr);\n }\n },\n limitVisibleRange: function limitVisibleRange(cfg) {\n var dates = cfg.trace_x;\n var left = 0,\n right = cfg.width.length - 1;\n var diff = 0;\n\n if (+dates[0] < +cfg.min_date && left != right) {\n var width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\n diff += cfg.width[0] - width;\n cfg.width[0] = width;\n dates[0] = new Date(cfg.min_date);\n }\n\n var last = dates.length - 1;\n var lastDate = dates[last];\n var outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\n\n if (+outDate > +cfg.max_date && last > 0) {\n var width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\n diff += cfg.width[last] - width;\n cfg.width[last] = width;\n }\n\n if (diff) {\n var full = this.getSum(cfg.width);\n var shared = 0;\n\n for (var i = 0; i < cfg.width.length; i++) {\n var share = Math.floor(diff * (cfg.width[i] / full));\n cfg.width[i] += share;\n shared += share;\n }\n\n this.adjustSize(diff - shared, cfg.width);\n }\n }\n };\n}\n\nmodule.exports = ScaleHelper;","var helpers = require(\"../../../utils/helpers\");\n\nvar htmlHelpers = {\n getHtmlSelect: function getHtmlSelect(options, attributes, value) {\n var innerHTML = \"\";\n\n var _this = this;\n\n options = options || [];\n helpers.forEach(options, function (entry) {\n var _attributes = [{\n key: \"value\",\n value: entry.key\n }];\n\n if (value == entry.key) {\n _attributes[_attributes.length] = {\n key: \"selected\",\n value: \"selected\"\n };\n }\n\n if (entry.attributes) {\n _attributes = _attributes.concat(entry.attributes);\n }\n\n innerHTML += _this.getHtmlOption({\n innerHTML: entry.label\n }, _attributes);\n });\n return _getHtmlContainer(\"select\", {\n innerHTML: innerHTML\n }, attributes);\n },\n getHtmlOption: function getHtmlOption(options, attributes) {\n return _getHtmlContainer(\"option\", options, attributes);\n },\n getHtmlButton: function getHtmlButton(options, attributes) {\n return _getHtmlContainer(\"button\", options, attributes);\n },\n getHtmlDiv: function getHtmlDiv(options, attributes) {\n return _getHtmlContainer(\"div\", options, attributes);\n },\n getHtmlLabel: function getHtmlLabel(options, attributes) {\n return _getHtmlContainer(\"label\", options, attributes);\n },\n getHtmlInput: function getHtmlInput(attributes) {\n return \"<input\" + _getHtmlAttributes(attributes || []) + \">\";\n }\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n var html;\n options = options || [];\n html = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"</\" + tag + \">\";\n return html;\n}\n\nfunction _getHtmlAttributes(attributes) {\n var html = \"\";\n helpers.forEach(attributes, function (entry) {\n html += \" \" + entry.key + \"='\" + entry.value + \"'\";\n });\n return html;\n}\n\nmodule.exports = htmlHelpers;","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function createResourceTimelineBuilder(gantt) {\n var resourceTaskCache = {};\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n });\n\n function getResourceLoad(resource, resourceProperty, scale, timeline) {\n var cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\n var res;\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, resourceProperty, scale, timeline);\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function calculateResourceLoadFromAssignments(items, scale, assignmentsPassed) {\n var scaleUnit = scale.unit;\n var scaleStep = scale.step;\n var timegrid = {};\n var precalculatedTimes = {};\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var task = item;\n\n if (assignmentsPassed) {\n task = gantt.getTask(item.task_id);\n }\n\n if (task.unscheduled) {\n continue; // do not process assignments for unscheduled tasks\n }\n\n var minDate = item.start_date || task.start_date;\n var maxDate = item.end_date || task.end_date;\n\n if (assignmentsPassed) {\n if (item.start_date) {\n minDate = new Date(Math.max(item.start_date.valueOf(), task.start_date.valueOf()));\n }\n\n if (item.end_date) {\n maxDate = new Date(Math.min(item.end_date.valueOf(), task.end_date.valueOf()));\n }\n }\n\n var firstColumn = helpers.findBinary(scale.trace_x, minDate.valueOf());\n var currDate = new Date(scale.trace_x[firstColumn] || gantt.date[scaleUnit + \"_start\"](new Date(minDate)));\n var calendar = gantt.config.work_time ? gantt.getTaskCalendar(task) : gantt;\n precalculatedTimes[calendar.id] = {};\n\n while (currDate < maxDate) {\n var cachedTimes = precalculatedTimes[calendar.id];\n var date = currDate;\n var timestamp = date.valueOf();\n currDate = gantt.date.add(currDate, scaleStep, scaleUnit);\n\n if (cachedTimes[timestamp] === false) {\n continue;\n }\n\n var isWorkTime = calendar.isWorkTime({\n date: date,\n task: task,\n unit: scaleUnit\n });\n\n if (!isWorkTime) {\n cachedTimes[timestamp] = false;\n continue;\n }\n\n if (!timegrid[timestamp]) {\n timegrid[timestamp] = {\n tasks: [],\n assignments: []\n };\n }\n\n timegrid[timestamp].tasks.push(task);\n\n if (assignmentsPassed) {\n timegrid[timestamp].assignments.push(item);\n }\n }\n }\n\n return timegrid;\n }\n\n function calculateResourceLoad(resource, resourceProperty, scale, timeline) {\n var items;\n var assignmentsPassed = false;\n var timegrid = {};\n\n if (gantt.config.process_resource_assignments && resourceProperty === gantt.config.resource_property) {\n if (resource.$role == \"task\") {\n items = gantt.getResourceAssignments(resource.$resource_id, resource.$task_id);\n } else {\n items = gantt.getResourceAssignments(resource.id);\n }\n\n assignmentsPassed = true;\n } else if (resource.$role == \"task\") {\n items = [];\n } else {\n items = gantt.getTaskBy(resourceProperty, resource.id);\n }\n\n var timegrid = calculateResourceLoadFromAssignments(items, scale, assignmentsPassed);\n var scaleUnit = scale.unit;\n var scaleStep = scale.step;\n var timetable = [];\n var start, end, tasks, assignments, cell;\n var config = timeline.$getConfig();\n\n for (var i = 0; i < scale.trace_x.length; i++) {\n start = new Date(scale.trace_x[i]);\n end = gantt.date.add(start, scaleStep, scaleUnit);\n cell = timegrid[start.valueOf()] || {};\n tasks = cell.tasks || [];\n assignments = cell.assignments || [];\n\n if (tasks.length || config.resource_render_empty_cells) {\n timetable.push({\n start_date: start,\n end_date: end,\n tasks: tasks,\n assignments: assignments\n });\n } else {\n timetable.push(null);\n }\n }\n\n return timetable;\n }\n\n return getResourceLoad;\n};","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n Cell = require(\"./cell\");\n\nvar Layout = function (_super) {\n \"use strict\";\n\n __extends(Layout, _super);\n\n function Layout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (parent) _this.$root = true;\n\n _this._parseConfig(config);\n\n _this.$name = \"layout\";\n return _this;\n }\n\n Layout.prototype.destructor = function () {\n if (this.$container && this.$view) {\n domHelpers.removeNode(this.$view);\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n child.destructor();\n }\n\n this.$cells = [];\n\n _super.prototype.destructor.call(this);\n };\n\n Layout.prototype._resizeScrollbars = function (autosize, scrollbars) {\n var scrollChanged = false;\n var visibleScrollbars = [],\n hiddenScrollbars = [];\n var scrollbarsToHide = [];\n\n function showScrollbar(scrollbar) {\n scrollbar.$parent.show();\n scrollChanged = true;\n visibleScrollbars.push(scrollbar);\n }\n\n function hideScrollbar(scrollbar) {\n scrollbar.$parent.hide();\n scrollChanged = true;\n hiddenScrollbars.push(scrollbar);\n }\n\n var scrollbar;\n\n for (var i = 0; i < scrollbars.length; i++) {\n scrollbar = scrollbars[i];\n\n if (autosize[scrollbar.$config.scroll]) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldHide()) {\n //hideScrollbar(scrollbar);\n scrollbarsToHide.push(scrollbar);\n } else if (scrollbar.shouldShow()) {\n showScrollbar(scrollbar);\n } else {\n if (scrollbar.isVisible()) {\n visibleScrollbars.push(scrollbar);\n } else {\n hiddenScrollbars.push(scrollbar);\n }\n }\n }\n\n var visibleGroups = {};\n\n for (var i = 0; i < visibleScrollbars.length; i++) {\n if (visibleScrollbars[i].$config.group) {\n visibleGroups[visibleScrollbars[i].$config.group] = true;\n }\n } // GS-2220\n\n\n scrollbarsToHide.forEach(function (scrollbar) {\n if (!(scrollbar.$config.group && visibleGroups[scrollbar.$config.group])) {\n hideScrollbar(scrollbar);\n }\n });\n\n for (var i = 0; i < hiddenScrollbars.length; i++) {\n scrollbar = hiddenScrollbars[i];\n\n if (scrollbar.$config.group && visibleGroups[scrollbar.$config.group]) {\n showScrollbar(scrollbar); // GS-707 If the scrollbar was hidden then showed, the container resize shouldn't happen because of that\n\n for (var j = 0; j < visibleScrollbars.length; j++) {\n if (visibleScrollbars[j] == scrollbar) {\n this.$gantt.$scrollbarRepaint = true;\n break;\n }\n }\n }\n }\n\n return scrollChanged;\n };\n\n Layout.prototype._syncCellSizes = function (groupName, newSize) {\n if (!groupName) return;\n var groups = {};\n\n this._eachChild(function (cell) {\n if (cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\") {\n if (!groups[cell.$config.group]) {\n groups[cell.$config.group] = [];\n }\n\n groups[cell.$config.group].push(cell);\n }\n });\n\n if (groups[groupName]) {\n this._syncGroupSize(groups[groupName], newSize);\n }\n\n return groups[groupName];\n };\n\n Layout.prototype._syncGroupSize = function (cells, newSize) {\n if (!cells.length) return;\n var property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n var direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n var newSizeValue = newSize.value;\n var isGravity = newSize.isGravity;\n\n for (var i = 0; i < cells.length; i++) {\n var ownSize = cells[i].getSize();\n var resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\n if (resizeSibling.$name == \"resizer\") {\n resizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n }\n\n var siblingSize = resizeSibling.getSize();\n\n if (!isGravity) {\n if (resizeSibling[property]) {\n var totalGravity = ownSize.gravity + siblingSize.gravity;\n var totalSize = ownSize[property] + siblingSize[property];\n var k = totalGravity / totalSize;\n cells[i].$config.gravity = k * newSizeValue;\n resizeSibling.$config[property] = totalSize - newSizeValue;\n resizeSibling.$config.gravity = totalGravity - k * newSizeValue;\n } else {\n cells[i].$config[property] = newSizeValue;\n }\n } else {\n cells[i].$config.gravity = newSizeValue;\n }\n\n var mainGrid = this.$gantt.$ui.getView(\"grid\");\n\n if (mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable && !isGravity) {\n this.$gantt.config.grid_width = newSizeValue;\n }\n }\n };\n\n Layout.prototype.resize = function (startStage) {\n var mainCall = false;\n\n if (this.$root && !this._resizeInProgress) {\n this.callEvent(\"onBeforeResize\", []);\n mainCall = true;\n this._resizeInProgress = true;\n }\n\n _super.prototype.resize.call(this, true);\n\n _super.prototype.resize.call(this, false);\n\n if (mainCall) {\n var contentViews = [];\n contentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n contentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n contentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n var scrollbars = this.getCellsByType(\"scroller\");\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n\n var autosize = this._getAutosizeMode(this.$config.autosize);\n /* // possible to rollback set content size when autisize is disabled, not sure if need to\r\n \t\tcontentViews.forEach(function(view){\r\n \t\t\tconst parent = view.$parent;\r\n \t\t\tif(!autosize.x){\r\n \t\t\t\tif(parent.$config.$originalWidthStored){\r\n \t\t\t\t\tparent.$config.$originalWidthStored = false;\r\n \t\t\t\t\tparent.$config.width = parent.$config.$originalWidth;\r\n \t\t\t\t\tparent.$config.$originalWidth = undefined;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \n \t\t\tif(!autosize.y){\r\n \t\t\t\tif(parent.$config.$originalHeightStored){\r\n \t\t\t\t\tparent.$config.$originalHeightStored = false;\r\n \t\t\t\t\tparent.$config.height = parent.$config.$originalHeight;\r\n \t\t\t\t\tparent.$config.$originalHeight = undefined;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t});*/\n\n\n var scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n if (this.$config.autosize) {\n this.autosize(this.$config.autosize);\n contentViews.forEach(function (view) {\n var parent = view.$parent;\n var sizes = parent.getContentSize(autosize);\n\n if (autosize.x) {\n if (!parent.$config.$originalWidthStored) {\n parent.$config.$originalWidthStored = true;\n parent.$config.$originalWidth = parent.$config.width;\n }\n\n parent.$config.width = sizes.width;\n }\n\n if (autosize.y) {\n if (!parent.$config.$originalHeightStored) {\n parent.$config.$originalHeightStored = true;\n parent.$config.$originalHeight = parent.$config.height;\n }\n\n parent.$config.height = sizes.height;\n }\n });\n scrollChanged = true;\n }\n\n if (scrollChanged) {\n this.resize();\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n }\n\n this.callEvent(\"onResize\", []);\n }\n\n if (mainCall) {\n this._resizeInProgress = false;\n }\n };\n\n Layout.prototype._eachChild = function (code, cell) {\n cell = cell || this;\n code(cell);\n\n if (cell.$cells) {\n for (var i = 0; i < cell.$cells.length; i++) {\n this._eachChild(code, cell.$cells[i]);\n }\n }\n };\n\n Layout.prototype.isChild = function (view) {\n var res = false;\n\n this._eachChild(function (child) {\n if (child === view || child.$content === view) {\n res = true;\n }\n });\n\n return res;\n };\n\n Layout.prototype.getCellsByType = function (type) {\n var res = [];\n\n if (type === this.$name) {\n res.push(this);\n }\n\n if (this.$content && this.$content.$name == type) {\n res.push(this.$content);\n }\n\n if (this.$cells) {\n for (var i = 0; i < this.$cells.length; i++) {\n var children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\n if (children.length) {\n res.push.apply(res, children);\n }\n }\n }\n\n return res;\n };\n\n Layout.prototype.getNextSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index + 1]) {\n return this.$cells[index + 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.getPrevSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index - 1]) {\n return this.$cells[index - 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.cell = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n\n if (child.$id === id) {\n return child;\n }\n\n var sub = child.cell(id);\n\n if (sub) {\n return sub;\n }\n }\n };\n\n Layout.prototype.cellIndex = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n if (this.$cells[i].$id === id) {\n return i;\n }\n }\n\n return -1;\n };\n\n Layout.prototype.moveView = function (view, ind) {\n if (this.$cells[ind] !== view) {\n return window.alert(\"Not implemented\");\n } else {\n ind += this.$config.header ? 1 : 0;\n var node = this.$view;\n\n if (ind >= node.childNodes.length) {\n node.appendChild(view.$view);\n } else {\n node.insertBefore(view.$view, node.childNodes[ind]);\n }\n }\n };\n\n Layout.prototype._parseConfig = function (config) {\n this.$cells = [];\n this._xLayout = !config.rows;\n var cells = config.rows || config.cols || config.views;\n\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n cell.mode = this._xLayout ? \"x\" : \"y\";\n var $content = this.$factory.initUI(cell, this);\n\n if (!$content) {\n cells.splice(i, 1);\n i--;\n } else {\n $content.$parent = this;\n this.$cells.push($content);\n }\n }\n };\n\n Layout.prototype.getCells = function () {\n return this.$cells;\n };\n\n Layout.prototype.render = function () {\n var view = domHelpers.insertNode(this.$container, this.$toHTML());\n this.$fill(view, null);\n this.callEvent(\"onReady\", []);\n this.resize(); // do simple repaint after the first call\n\n this.render = this.resize;\n };\n\n Layout.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n var cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\n for (var i = cells.length - 1; i >= 0; i--) {\n var sub = this.$cells[i];\n sub.$fill(cells[i], this); // initially hidden cell\n\n if (sub.$config.hidden) {\n sub.$view.parentNode.removeChild(sub.$view);\n }\n }\n };\n\n Layout.prototype.$toHTML = function () {\n var mode = this._xLayout ? \"x\" : \"y\";\n var html = [];\n\n for (var i = 0; i < this.$cells.length; i++) {\n html.push(this.$cells[i].$toHTML());\n }\n\n return _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n };\n\n Layout.prototype.getContentSize = function (mode) {\n var contentWidth = 0,\n contentHeight = 0;\n var cellSize, cell, borders;\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n if (cell.$config.hidden) continue;\n cellSize = cell.getContentSize(mode);\n\n if (cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]) {\n cellSize.height = 0;\n cellSize.width = 0;\n }\n\n if (cell.$config.resizer) {\n if (this._xLayout) {\n cellSize.height = 0;\n } else {\n cellSize.width = 0;\n }\n }\n\n borders = cell._getBorderSizes();\n\n if (this._xLayout) {\n contentWidth += cellSize.width + borders.horizontal;\n contentHeight = Math.max(contentHeight, cellSize.height + borders.vertical);\n } else {\n contentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n contentHeight += cellSize.height + borders.vertical;\n }\n }\n\n borders = this._getBorderSizes();\n contentWidth += borders.horizontal;\n contentHeight += borders.vertical; // GS-149 & GS-150: By default this code only increases the container sizes, because of that, the cell sizes\n // are also increased. Keep this code here in the case if something goes wrong\n\n /*\r\n if(this.$root){\r\n \tcontentWidth += 1;\r\n \tcontentHeight += 1;\r\n }\r\n */\n\n return {\n width: contentWidth,\n height: contentHeight\n };\n };\n\n Layout.prototype._cleanElSize = function (value) {\n return (value || \"\").toString().replace(\"px\", \"\") * 1 || 0;\n };\n\n Layout.prototype._getBoxStyles = function (div) {\n var computed = null;\n\n if (window.getComputedStyle) {\n computed = window.getComputedStyle(div, null);\n } else {\n //IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\n computed = {\n \"width\": div.clientWidth,\n \"height\": div.clientHeight\n };\n }\n\n var properties = [\"width\", \"height\", \"paddingTop\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\", \"borderBottomWidth\"];\n var styles = {\n boxSizing: computed.boxSizing == \"border-box\"\n };\n\n if (computed.MozBoxSizing) {\n styles.boxSizing = computed.MozBoxSizing == \"border-box\";\n }\n\n for (var i = 0; i < properties.length; i++) {\n styles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\n }\n\n var box = {\n horPaddings: styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth,\n vertPaddings: styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth,\n borderBox: styles.boxSizing,\n innerWidth: styles.width,\n innerHeight: styles.height,\n outerWidth: styles.width,\n outerHeight: styles.height\n };\n\n if (box.borderBox) {\n box.innerWidth -= box.horPaddings;\n box.innerHeight -= box.vertPaddings;\n } else {\n box.outerWidth += box.horPaddings;\n box.outerHeight += box.vertPaddings;\n }\n\n return box;\n };\n\n Layout.prototype._getAutosizeMode = function (config) {\n var res = {\n x: false,\n y: false\n };\n\n if (config === \"xy\") {\n res.x = res.y = true;\n } else if (config === \"y\" || config === true) {\n res.y = true;\n } else if (config === \"x\") {\n res.x = true;\n }\n\n return res;\n };\n\n Layout.prototype.autosize = function (mode) {\n var res = this._getAutosizeMode(mode);\n\n var boxSizes = this._getBoxStyles(this.$container);\n\n var contentSizes = this.getContentSize(mode);\n var node = this.$container;\n\n if (res.x) {\n if (boxSizes.borderBox) {\n contentSizes.width += boxSizes.horPaddings;\n }\n\n node.style.width = contentSizes.width + \"px\";\n }\n\n if (res.y) {\n if (boxSizes.borderBox) {\n contentSizes.height += boxSizes.vertPaddings;\n }\n\n node.style.height = contentSizes.height + \"px\";\n }\n };\n\n Layout.prototype.getSize = function () {\n this._sizes = [];\n var width = 0;\n var minWidth = 0;\n var maxWidth = 100000000000;\n var height = 0;\n var maxHeight = 100000000000;\n var minHeight = 0;\n\n for (var i = 0; i < this.$cells.length; i++) {\n var size = this._sizes[i] = this.$cells[i].getSize();\n\n if (this.$cells[i].$config.hidden) {\n continue;\n }\n\n if (this._xLayout) {\n if (!size.width && size.minWidth) {\n width += size.minWidth;\n } else {\n width += size.width;\n }\n\n maxWidth += size.maxWidth;\n minWidth += size.minWidth;\n height = Math.max(height, size.height);\n maxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\n\n minHeight = Math.max(minHeight, size.minHeight); // max of minHeight\n } else {\n if (!size.height && size.minHeight) {\n height += size.minHeight;\n } else {\n height += size.height;\n }\n\n maxHeight += size.maxHeight;\n minHeight += size.minHeight;\n width = Math.max(width, size.width);\n maxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\n\n minWidth = Math.max(minWidth, size.minWidth); // max of minWidth\n }\n }\n\n var self = _super.prototype.getSize.call(this); // maxWidth\n\n\n if (self.maxWidth >= 100000) {\n self.maxWidth = maxWidth;\n } // maxHeight\n\n\n if (self.maxHeight >= 100000) {\n self.maxHeight = maxHeight;\n } // minWidth\n\n\n self.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth; // || self.width || Math.max(minWidth, width);\n // minHeight\n\n self.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight; //self.minHeight || self.height || Math.max(minHeight, height);\n // sizes with paddings and margins\n\n if (this._xLayout) {\n self.minWidth += this.$config.margin * this.$cells.length || 0;\n self.minWidth += this.$config.padding * 2 || 0;\n self.minHeight += this.$config.padding * 2 || 0;\n } else {\n self.minHeight += this.$config.margin * this.$cells.length || 0;\n self.minHeight += this.$config.padding * 2 || 0;\n }\n\n return self;\n }; // calc total gravity and free space\n\n\n Layout.prototype._calcFreeSpace = function (s, cell, xLayout) {\n var min = xLayout ? cell.minWidth : cell.minHeight;\n var max = xLayout ? cell.maxWidth : cell.maxWidth;\n var side = s;\n\n if (!side) {\n side = Math.floor(this._free / this._gravity * cell.gravity);\n\n if (side > max) {\n side = max;\n this._free -= side;\n this._gravity -= cell.gravity;\n }\n\n if (side < min) {\n side = min;\n this._free -= side;\n this._gravity -= cell.gravity;\n }\n } else {\n if (side > max) {\n side = max;\n }\n\n if (side < min) {\n side = min;\n }\n\n this._free -= side;\n }\n\n return side;\n };\n\n Layout.prototype._calcSize = function (s, size, xLayout) {\n var side = s;\n var min = xLayout ? size.minWidth : size.minHeight;\n var max = xLayout ? size.maxWidth : size.maxHeight;\n\n if (!side) {\n side = Math.floor(this._free / this._gravity * size.gravity);\n }\n\n if (side > max) {\n side = max;\n }\n\n if (side < min) {\n side = min;\n }\n\n return side;\n };\n\n Layout.prototype._configureBorders = function () {\n if (this.$root) {\n this._setBorders([this._borders.left, this._borders.top, this._borders.right, this._borders.bottom], this);\n }\n\n var borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\n var cells = this.$cells;\n var lastVisibleIndex = cells.length - 1;\n\n for (var i = lastVisibleIndex; i >= 0; i--) {\n if (!cells[i].$config.hidden) {\n lastVisibleIndex = i;\n break;\n }\n }\n\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].$config.hidden) {\n continue;\n }\n\n var lastCell = i >= lastVisibleIndex;\n var borderColorClass = \"\";\n\n if (!lastCell && cells[i + 1]) {\n if (cells[i + 1].$config.view == \"scrollbar\") {\n if (this._xLayout) {\n lastCell = true;\n } else {\n borderColorClass = \"gantt_layout_cell_border_transparent\";\n }\n }\n }\n\n this._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\n }\n };\n\n Layout.prototype._updateCellVisibility = function () {\n var oldVisibleCells = this._visibleCells || {};\n var firstCall = !this._visibleCells;\n var visibleCells = {};\n var cell = null;\n var parentVisibility = [];\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hide_empty) {\n parentVisibility.push(cell);\n }\n\n if (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n cell._hide(true);\n } else if (!cell.$config.hidden && !oldVisibleCells[cell.$id]) {\n cell._hide(false);\n }\n\n if (!cell.$config.hidden) {\n visibleCells[cell.$id] = true;\n }\n }\n\n this._visibleCells = visibleCells; // GS-27. A way to hide the whole cell if all its children are hidden\n\n for (var i = 0; i < parentVisibility.length; i++) {\n var cell = parentVisibility[i];\n var children = cell.$cells;\n var hideCell = true;\n children.forEach(function (child) {\n if (!child.$config.hidden && !child.$config.resizer) {\n hideCell = false;\n }\n });\n cell.$config.hidden = hideCell;\n }\n };\n\n Layout.prototype.setSize = function (x, y) {\n this._configureBorders();\n\n _super.prototype.setSize.call(this, x, y);\n\n y = this.$lastSize.contentY;\n x = this.$lastSize.contentX;\n var padding = this.$config.padding || 0;\n this.$view.style.padding = padding + \"px\";\n this._gravity = 0;\n this._free = this._xLayout ? x : y;\n this._free -= padding * 2; // calc all gravity\n\n var cell, size;\n\n this._updateCellVisibility();\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n var margin = this.$config.margin || 0;\n\n if (cell.$name == \"resizer\" && !margin) {\n margin = -1;\n } // set margins to child cell\n\n\n var cellView = cell.$view;\n var marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\n if (i !== this.$cells.length - 1) {\n cellView.style[marginSide] = margin + \"px\";\n this._free -= margin; // calc free space without margin\n }\n\n size = this._sizes[i];\n\n if (this._xLayout) {\n if (!size.width) {\n this._gravity += size.gravity;\n }\n } else {\n if (!size.height) {\n this._gravity += size.gravity;\n }\n }\n }\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var width = size.width;\n var height = size.height;\n\n if (this._xLayout) {\n this._calcFreeSpace(width, size, true);\n } else {\n this._calcFreeSpace(height, size, false);\n }\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var dx = void 0;\n var dy = void 0;\n\n if (this._xLayout) {\n dx = this._calcSize(size.width, size, true);\n dy = y - padding * 2; // layout height without paddings\n } else {\n dx = x - padding * 2; // layout width without paddings\n\n dy = this._calcSize(size.height, size, false);\n }\n\n cell.setSize(dx, dy);\n }\n };\n\n return Layout;\n}(Cell);\n\nmodule.exports = Layout;","// optimized checker for links smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isLinkInViewPort(item, viewport, view, config, gantt) {\n var source = view.$gantt.getTask(item.source);\n var target = view.$gantt.getTask(item.target); // check vertical visibility first since it's a lighter check\n\n var sourceTop = view.getItemTop(source.id);\n var sourceHeight = view.getItemHeight(source.id);\n var targetTop = view.getItemTop(target.id);\n var targetHeight = view.getItemHeight(target.id);\n\n if (viewport.y > sourceTop + sourceHeight && viewport.y > targetTop + targetHeight) {\n return false;\n }\n\n if (viewport.y_end < targetTop && viewport.y_end < sourceTop) {\n return false;\n }\n\n var padding = 100;\n var sourceLeft = view.posFromDate(source.start_date);\n var sourceRight = view.posFromDate(source.end_date);\n var targetLeft = view.posFromDate(target.start_date);\n var targetRight = view.posFromDate(target.end_date);\n\n if (sourceLeft > sourceRight) {\n // rtl\n var tmp = sourceRight;\n sourceRight = sourceLeft;\n sourceLeft = tmp;\n }\n\n if (targetLeft > targetRight) {\n // rtl\n var tmp = targetRight;\n targetRight = targetLeft;\n targetLeft = tmp;\n }\n\n sourceLeft += -padding; // add buffer for custom elements\n\n sourceRight += padding;\n targetLeft += -padding; // add buffer for custom elements\n\n targetRight += padding;\n\n if (viewport.x > sourceRight && viewport.x > targetRight) {\n return false;\n }\n\n if (viewport.x_end < sourceLeft && viewport.x_end < targetLeft) {\n return false;\n }\n\n return true;\n};","var getLinkRectangle = require(\"../get_link_rectangle\");\n\nmodule.exports = function () {\n var coordinates = [];\n var calculated = false;\n\n function clearCache() {\n coordinates = [];\n calculated = false;\n }\n\n function buildCache(datastore, view, gantt) {\n var config = view.$getConfig();\n var visibleItems = datastore.getVisibleItems(); //datastore.eachItem(function(link){\n\n visibleItems.forEach(function (link) {\n var rec = getLinkRectangle(link, view, config, gantt);\n\n if (!rec) {\n return;\n }\n\n coordinates.push({\n id: link.id,\n rec: rec\n });\n });\n coordinates.sort(function (a, b) {\n if (a.rec.right < b.rec.right) {\n return -1;\n } else {\n return 1;\n }\n });\n calculated = true;\n }\n\n var initialized = false;\n\n function init(datastore) {\n if (initialized) {\n return;\n }\n\n initialized = true;\n datastore.attachEvent(\"onPreFilter\", clearCache);\n datastore.attachEvent(\"onStoreUpdated\", clearCache);\n datastore.attachEvent(\"onClearAll\", clearCache);\n datastore.attachEvent(\"onBeforeStoreUpdate\", clearCache);\n }\n\n return function getVisibleLinksRange(gantt, view, config, datastore, viewport) {\n init(datastore);\n\n if (!calculated) {\n buildCache(datastore, view, gantt);\n }\n\n var visibleBoxes = [];\n\n for (var i = 0; i < coordinates.length; i++) {\n var item = coordinates[i];\n var box = item.rec;\n\n if (box.right < viewport.x) {\n continue;\n }\n\n if (box.left < viewport.x_end && box.right > viewport.x && box.top < viewport.y_end && box.bottom > viewport.y) {\n visibleBoxes.push(item.id);\n }\n }\n\n return {\n ids: visibleBoxes\n };\n };\n};","import { IWorkUnitCache } from \"./workunit_cache_interface\";\r\nimport { WorkUnitsMapCache } from \"./workunit_map_cache\";\r\nimport { WorkUnitsObjectCache } from \"./workunit_object_cache\";\r\nexport { LargerUnitsCache } from \"./larger_units_helper\";\r\n\r\nexport function createCacheObject(): IWorkUnitCache {\r\n\r\n\t// worktime hash is on the hot path,\r\n\t// Map seems to work faster than plain array, use it whenever possible\r\n\tif (typeof Map !== \"undefined\") {\r\n\t\treturn new WorkUnitsMapCache();\r\n\t} else {\r\n\t\treturn new WorkUnitsObjectCache();\r\n\t}\r\n}\r\n","var utils = require(\"../../utils/utils\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nfunction IsWorkTimeArgument(date, unit, task, id, calendar) {\n this.date = date;\n this.unit = unit;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar) {\n this.date = date;\n this.dir = dir;\n this.unit = unit;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar) {\n this.start_date = start_date;\n this.duration = duration;\n this.unit = unit;\n this.step = step;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction GetDurationArgument(start, end, task, calendar) {\n this.start_date = start;\n this.end_date = end;\n this.task = task;\n this.calendar = calendar;\n this.unit = null;\n this.step = null;\n return this;\n}\n\nvar calendarArgumentsHelper = function calendarArgumentsHelper(gantt) {\n return {\n getWorkHoursArguments: function getWorkHoursArguments() {\n var config = arguments[0];\n\n if (helpers.isDate(config)) {\n config = {\n date: config\n };\n } else {\n config = utils.mixin({}, config);\n }\n\n if (!helpers.isValidDate(config.date)) {\n gantt.assert(false, \"Invalid date argument for getWorkHours method\");\n throw new Error(\"Invalid date argument for getWorkHours method\");\n }\n\n return config;\n },\n setWorkTimeArguments: function setWorkTimeArguments() {\n return arguments[0];\n },\n unsetWorkTimeArguments: function unsetWorkTimeArguments() {\n return arguments[0];\n },\n isWorkTimeArguments: function isWorkTimeArguments() {\n var config = arguments[0];\n\n if (config instanceof IsWorkTimeArgument) {\n return config;\n }\n\n var processedConfig;\n\n if (!config.date) {\n //IsWorkTimeArgument(date, unit, task, id, calendar)\n processedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\n } else {\n processedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\n }\n\n processedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\n if (!helpers.isValidDate(processedConfig.date)) {\n gantt.assert(false, \"Invalid date argument for isWorkTime method\");\n throw new Error(\"Invalid date argument for isWorkTime method\");\n }\n\n return processedConfig;\n },\n getClosestWorkTimeArguments: function getClosestWorkTimeArguments(arg) {\n var config = arguments[0];\n if (config instanceof ClosestWorkTimeArgument) return config;\n var processedConfig;\n\n if (helpers.isDate(config)) {\n processedConfig = new ClosestWorkTimeArgument(config);\n } else {\n processedConfig = new ClosestWorkTimeArgument(config.date, config.dir, config.unit, config.task, null, //config.id,\n config.calendar);\n }\n\n if (config.id) {\n processedConfig.task = config;\n }\n\n processedConfig.dir = config.dir || 'any';\n processedConfig.unit = config.unit || gantt.config.duration_unit;\n\n if (!helpers.isValidDate(processedConfig.date)) {\n gantt.assert(false, \"Invalid date argument for getClosestWorkTime method\");\n throw new Error(\"Invalid date argument for getClosestWorkTime method\");\n }\n\n return processedConfig;\n },\n _getStartEndConfig: function _getStartEndConfig(param) {\n var argumentType = GetDurationArgument;\n var config;\n if (param instanceof argumentType) return param;\n\n if (helpers.isDate(param)) {\n config = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n config = new argumentType(param.start_date, param.end_date, param.task);\n\n if (param.id !== null && param.id !== undefined) {\n config.task = param;\n }\n }\n\n config.unit = config.unit || gantt.config.duration_unit;\n config.step = config.step || gantt.config.duration_step;\n config.start_date = config.start_date || config.start || config.date;\n\n if (!helpers.isValidDate(config.start_date)) {\n gantt.assert(false, \"Invalid start_date argument for getDuration method\");\n throw new Error(\"Invalid start_date argument for getDuration method\");\n }\n\n if (!helpers.isValidDate(config.end_date)) {\n gantt.assert(false, \"Invalid end_date argument for getDuration method\");\n throw new Error(\"Invalid end_date argument for getDuration method\");\n }\n\n return config;\n },\n getDurationArguments: function getDurationArguments(start, end, unit, step) {\n return this._getStartEndConfig.apply(this, arguments);\n },\n hasDurationArguments: function hasDurationArguments(start, end, unit, step) {\n return this._getStartEndConfig.apply(this, arguments);\n },\n calculateEndDateArguments: function calculateEndDateArguments(start, duration, unit, step) {\n var config = arguments[0];\n if (config instanceof CalculateEndDateArgument) return config;\n var processedConfig; //CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\n\n if (helpers.isDate(config)) {\n processedConfig = new CalculateEndDateArgument(arguments[0], arguments[1], arguments[2], undefined, arguments[3], undefined, arguments[4]);\n } else {\n processedConfig = new CalculateEndDateArgument(config.start_date, config.duration, config.unit, config.step, config.task, null, //config.id,\n config.calendar);\n }\n\n if (config.id !== null && config.id !== undefined) {\n processedConfig.task = config; // received a task object as an argument\n // ignore 'unit' and 'step' properties in this case, since it's likely a part of data model of a task\n\n processedConfig.unit = null;\n processedConfig.step = null;\n }\n\n processedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n processedConfig.step = processedConfig.step || gantt.config.duration_step;\n\n if (!helpers.isValidDate(processedConfig.start_date)) {\n gantt.assert(false, \"Invalid start_date argument for calculateEndDate method\");\n throw new Error(\"Invalid start_date argument for calculateEndDate method\");\n }\n\n return processedConfig;\n }\n };\n};\n\nmodule.exports = calendarArgumentsHelper;","var quickPositionHelperFactory = require(\"./row_position_fixed_height\");\n\nfunction createMixin(view) {\n var getItemTopCache = {};\n var getRowTopCache = {};\n var getItemHeightCache = null;\n var totalHeightCache = -1;\n var getItemHeightCacheState = null;\n var quickPosition = quickPositionHelperFactory(view);\n return {\n _resetTopPositionHeight: function _resetTopPositionHeight() {\n getItemTopCache = {};\n getRowTopCache = {};\n quickPosition.resetCache();\n },\n _resetHeight: function _resetHeight() {\n var store = this.$config.rowStore;\n var newState = this.getCacheStateTotalHeight(store);\n\n if (!getItemHeightCacheState) {\n getItemHeightCacheState = newState;\n } else if (this.shouldClearHeightCache(getItemHeightCacheState, newState)) {\n getItemHeightCacheState = newState;\n getItemHeightCache = null;\n }\n\n totalHeightCache = -1;\n quickPosition.resetCache();\n },\n\n /**\r\n * Get top coordinate by row index (order)\r\n * @param {number} index\r\n */\n getRowTop: function getRowTop(index) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getRowTop(index);\n }\n\n var store = this.$config.rowStore;\n\n if (!store) {\n return 0;\n }\n\n if (getRowTopCache[index] !== undefined) {\n return getRowTopCache[index];\n } else {\n var all = store.getIndexRange();\n var top = 0;\n var result = 0;\n\n for (var i = 0; i < all.length; i++) {\n getRowTopCache[i] = top;\n top += this.getItemHeight(all[i].id);\n\n if (i < index) {\n result = top;\n }\n }\n\n return result;\n }\n },\n\n /**\r\n * Get top coordinate by item id\r\n * @param {*} task_id\r\n */\n getItemTop: function getItemTop(taskId) {\n if (this.$config.rowStore) {\n if (getItemTopCache[taskId] !== undefined) {\n return getItemTopCache[taskId];\n }\n\n var store = this.$config.rowStore;\n if (!store) return 0;\n var itemIndex = store.getIndexById(taskId);\n\n if (itemIndex === -1 && store.getParent && store.exists(taskId)) {\n var parentId = store.getParent(taskId);\n\n if (store.exists(parentId)) {\n // if task is not found in list - maybe it's parent is a split task and we should use parents index instead\n var parent = store.getItem(parentId);\n\n if (this.$gantt.isSplitTask(parent)) {\n return this.getItemTop(parentId);\n }\n }\n }\n\n getItemTopCache[taskId] = this.getRowTop(itemIndex);\n return getItemTopCache[taskId];\n } else {\n return 0;\n }\n },\n\n /**\r\n * Get height of the item by item id\r\n * @param {*} itemId\r\n */\n getItemHeight: function getItemHeight(itemId) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getItemHeight(itemId);\n }\n\n if (!getItemHeightCache && this.$config.rowStore) {\n this._fillHeightCache(this.$config.rowStore);\n }\n\n if (getItemHeightCache[itemId] !== undefined) {\n return getItemHeightCache[itemId];\n }\n\n var defaultHeight = this.$getConfig().row_height;\n\n if (this.$config.rowStore) {\n var store = this.$config.rowStore;\n if (!store) return defaultHeight;\n var item = store.getItem(itemId);\n return getItemHeightCache[itemId] = item && item.row_height || defaultHeight;\n } else {\n return defaultHeight;\n }\n },\n _fillHeightCache: function _fillHeightCache(store) {\n if (!store) {\n return;\n }\n\n getItemHeightCache = {};\n var defaultHeight = this.$getConfig().row_height;\n store.eachItem(function (item) {\n return getItemHeightCache[item.id] = item && item.row_height || defaultHeight;\n });\n },\n getCacheStateTotalHeight: function getCacheStateTotalHeight(store) {\n var globalHeight = this.$getConfig().row_height;\n var itemHeightCache = {};\n var items = [];\n var sumHeight = 0;\n\n if (store) {\n store.eachItem(function (item) {\n items.push(item);\n itemHeightCache[item.id] = item.row_height;\n sumHeight += item.row_height || globalHeight;\n });\n }\n\n return {\n globalHeight: globalHeight,\n items: items,\n count: items.length,\n sumHeight: sumHeight\n };\n },\n shouldClearHeightCache: function shouldClearHeightCache(oldState, newState) {\n if (oldState.count != newState.count) {\n return true;\n }\n\n if (oldState.globalHeight != newState.globalHeight) {\n return true;\n }\n\n if (oldState.sumHeight != newState.sumHeight) {\n return true;\n }\n\n for (var i in oldState.items) {\n var newValue = newState.items[i];\n\n if (newValue !== undefined && newValue != oldState.items[i]) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\r\n * Get total height of items\r\n */\n getTotalHeight: function getTotalHeight() {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getTotalHeight();\n }\n\n if (totalHeightCache != -1) {\n return totalHeightCache;\n }\n\n if (this.$config.rowStore) {\n var store = this.$config.rowStore;\n\n this._fillHeightCache(store);\n\n var getHeight = this.getItemHeight.bind(this);\n var visibleItems = store.getVisibleItems();\n var totalHeight = 0;\n visibleItems.forEach(function (item) {\n totalHeight += getHeight(item.id);\n });\n totalHeightCache = totalHeight;\n return totalHeight;\n } else {\n return 0;\n }\n },\n\n /**\r\n * Get item by top position\r\n * @param {*} top\r\n */\n getItemIndexByTopPosition: function getItemIndexByTopPosition(top) {\n if (this.$config.rowStore) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getItemIndexByTopPosition(top);\n }\n\n var store = this.$config.rowStore;\n\n for (var i = 0; i < store.countVisible(); i++) {\n var current = this.getRowTop(i);\n var next = this.getRowTop(i + 1);\n\n if (!next) {\n var taskId = store.getIdByIndex(i);\n next = current + this.getItemHeight(taskId);\n }\n\n if (top >= current && top < next) {\n return i;\n }\n } // GS-1723: If we iterated all tasks and didn't find the position, the target is below all other tasks\n\n\n return store.countVisible() + 2;\n } else {\n return 0;\n }\n }\n };\n}\n\nmodule.exports = createMixin;","export default class DurationFormatterNumeric implements IDurationFormatter {\r\n\tstatic create = (settings: IDurationFormatterConfig = null): IDurationFormatter => {\r\n\t\treturn new DurationFormatterNumeric();\r\n\t}\r\n\tcanParse = (value: string) : boolean => {\r\n\t\treturn !isNaN(this.parse(value));\r\n\t}\r\n\tformat = (value: number) : string => {\r\n\t\treturn String(value);\r\n\t}\r\n\tparse = (value: string) : number => {\r\n\t\treturn parseInt(value, 10);\r\n\t}\r\n}","function copyLinkIdsArray(gantt, linkIds, targetHash) {\n for (var i = 0; i < linkIds.length; i++) {\n if (gantt.isLinkExists(linkIds[i])) {\n targetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\n }\n }\n}\n\nfunction copyLinkIds(gantt, task, targetHash) {\n copyLinkIdsArray(gantt, task.$source, targetHash);\n copyLinkIdsArray(gantt, task.$target, targetHash);\n}\n\nfunction getSubtreeLinks(gantt, rootId) {\n var res = {};\n\n if (gantt.isTaskExists(rootId)) {\n copyLinkIds(gantt, gantt.getTask(rootId), res);\n }\n\n gantt.eachTask(function (child) {\n copyLinkIds(gantt, child, res);\n }, rootId);\n return res;\n}\n\nfunction getSubtreeTasks(gantt, rootId) {\n var res = {};\n gantt.eachTask(function (child) {\n res[child.id] = child;\n }, rootId);\n return res;\n}\n\nmodule.exports = {\n getSubtreeLinks: getSubtreeLinks,\n getSubtreeTasks: getSubtreeTasks\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\n\nvar PrimaryScaleHelper = require(\"./ui/timeline/scales\");\n\nfunction resolveConfigRange(unit, gantt) {\n var range = {\n start_date: null,\n end_date: null\n };\n\n if (gantt.config.start_date && gantt.config.end_date) {\n range.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n var end = new Date(gantt.config.end_date);\n var start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\n if (+end != +start_interval) {\n end = gantt.date.add(start_interval, 1, unit);\n } else {\n end = start_interval;\n }\n\n range.end_date = end;\n }\n\n return range;\n}\n\nfunction _scale_range_unit(gantt) {\n var primaryScale = new PrimaryScaleHelper(gantt).primaryScale();\n var unit = primaryScale.unit;\n var step = primaryScale.step;\n\n if (gantt.config.scale_offset_minimal) {\n var helper = new ScaleHelper(gantt);\n var scales = [helper.primaryScale()].concat(helper.getSubScales());\n helper.sortScales(scales);\n unit = scales[scales.length - 1].unit;\n step = scales[scales.length - 1].step || 1;\n }\n\n return {\n unit: unit,\n step: step\n };\n}\n\nfunction _init_tasks_range(gantt) {\n var cfg = _scale_range_unit(gantt);\n\n var unit = cfg.unit,\n step = cfg.step;\n var range = resolveConfigRange(unit, gantt); // GS-1544: Show correct date range if we have tasks or only projects\n\n if (!(range.start_date && range.end_date)) {\n var onlyProjectTasks = true;\n var tasks = gantt.getTaskByTime();\n\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n\n if (task.type !== gantt.config.types.project) {\n onlyProjectTasks = false;\n break;\n }\n }\n\n if (tasks.length && onlyProjectTasks) {\n var start_date = tasks[0].start_date;\n var end_date = gantt.date.add(start_date, 1, gantt.config.duration_unit);\n range = {\n start_date: new Date(start_date),\n end_date: new Date(end_date)\n };\n } else {\n range = gantt.getSubtaskDates();\n }\n\n if (!range.start_date || !range.end_date) {\n range = {\n start_date: new Date(),\n end_date: new Date()\n };\n }\n\n range.start_date = gantt.date[unit + \"_start\"](range.start_date);\n range.start_date = gantt.calculateEndDate({\n start_date: gantt.date[unit + \"_start\"](range.start_date),\n duration: -1,\n unit: unit,\n step: step\n }); //one free column before first task\n\n range.end_date = gantt.date[unit + \"_start\"](range.end_date);\n range.end_date = gantt.calculateEndDate({\n start_date: range.end_date,\n duration: 2,\n unit: unit,\n step: step\n }); //one free column after last task\n }\n\n gantt._min_date = range.start_date;\n gantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n if (gantt.config.fit_tasks) {\n var old_min = +gantt._min_date,\n old_max = +gantt._max_date; //this._init_tasks_range();\n\n if (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = function updateTasksRange(gantt) {\n _init_tasks_range(gantt);\n\n _adjust_scales(gantt);\n};","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nvar DataStore = require(\"./datastore\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nvar TreeDataStore = function TreeDataStore(config) {\n DataStore.apply(this, [config]);\n this._branches = {};\n this.pull = {}; //GS-761 Update existing item instead of adding it to the new position\n\n this.$initItem = function (item) {\n var loadedItem = item;\n\n if (config.initItem) {\n loadedItem = config.initItem(loadedItem);\n }\n\n var existingItem = this.getItem(item.id);\n\n if (existingItem && existingItem.parent != loadedItem.parent) {\n this.move(loadedItem.id, loadedItem.$index || -1, loadedItem.parent || this._ganttConfig.root_id);\n }\n\n return loadedItem;\n };\n\n this.$parentProperty = config.parentProperty || \"parent\";\n\n if (typeof config.rootId !== \"function\") {\n this.$getRootId = function (val) {\n return function () {\n return val;\n };\n }(config.rootId || 0);\n } else {\n this.$getRootId = config.rootId;\n } // TODO: replace with live reference to gantt config\n\n\n this.$openInitially = config.openInitially;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n this._skip_refresh = false;\n this._ganttConfig = null;\n\n if (config.getConfig) {\n this._ganttConfig = config.getConfig();\n }\n\n var splitParents = {};\n var splitItems = {};\n var taskOpenState = {};\n var taskVisibility = {};\n var haveSplitItems = false;\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n return true;\n });\n\n this.attachEvent(\"onPreFilter\", function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n haveSplitItems = false;\n this.eachItem(function (item) {\n var parent = this.getParent(item.id);\n\n if (item.$open && taskOpenState[parent] !== false) {\n taskOpenState[item.id] = true;\n } else {\n taskOpenState[item.id] = false;\n }\n\n if (this._isSplitItem(item)) {\n haveSplitItems = true;\n splitParents[item.id] = true;\n splitItems[item.id] = true;\n }\n\n if (haveSplitItems && splitItems[parent]) {\n splitItems[item.id] = true;\n }\n\n if (taskOpenState[parent] || taskOpenState[parent] === undefined) {\n taskVisibility[item.id] = true;\n } else {\n taskVisibility[item.id] = false;\n }\n });\n });\n this.attachEvent(\"onFilterItem\", function (id, item) {\n var canOpenSplitTasks = false;\n\n if (this._ganttConfig) {\n var canOpenSplitTasks = this._ganttConfig.open_split_tasks;\n }\n\n var open = taskVisibility[item.id];\n\n if (haveSplitItems) {\n if (open && splitItems[item.id] && !splitParents[item.id]) {\n open = !!canOpenSplitTasks;\n }\n\n if (splitItems[item.id] && !splitParents[item.id]) {\n item.$split_subtask = true;\n }\n }\n\n item.$expanded_branch = !!taskVisibility[item.id];\n return !!open;\n });\n this.attachEvent(\"onFilter\", function () {\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n });\n return this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n _buildTree: function _buildTree(data) {\n var item = null;\n var rootId = this.$getRootId();\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n this.setParent(item, replaceValidZeroId(this.getParent(item), rootId) || rootId);\n } // calculating $level for each item\n\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n this._add_branch(item);\n\n item.$level = this.calculateItemLevel(item);\n item.$local_index = this.getBranchIndex(item.id);\n\n if (!utils.defined(item.$open)) {\n item.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n }\n }\n\n this._updateOrder();\n },\n _isSplitItem: function _isSplitItem(item) {\n return item.render == \"split\" && this.hasChild(item.id);\n },\n parse: function parse(data) {\n if (!this._skip_refresh) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n this._buildTree(loaded);\n\n this.filter();\n\n if (!this._skip_refresh) {\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n var parent = this.getParent(item);\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n this.setParent(item, parent);\n }\n\n var parentIndex = this.getIndexById(parent);\n var targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n if (targetIndex * 1 !== targetIndex) {\n targetIndex = undefined;\n }\n\n DataStore.prototype._addItemInner.call(this, item, targetIndex);\n\n this.setParent(item, parent);\n\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent);\n }\n\n this._add_branch(item, index);\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n var children = this.getChildren(oldId);\n var visibleOrder = this._searchVisibleOrder[oldId];\n\n DataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n var parent = this.getParent(newId);\n\n this._replace_branch_child(parent, oldId, newId);\n\n if (this._branches[oldId]) {\n this._branches[newId] = this._branches[oldId];\n }\n\n for (var i = 0; i < children.length; i++) {\n var child = this.getItem(children[i]);\n child[this.$parentProperty] = newId;\n child.$rendered_parent = newId;\n }\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._branches[oldId];\n },\n _traverseBranches: function _traverseBranches(code, parent) {\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var branch = this._branches[parent];\n\n if (branch) {\n for (var i = 0; i < branch.length; i++) {\n var itemId = branch[i];\n code.call(this, itemId);\n if (this._branches[itemId]) this._traverseBranches(code, itemId);\n }\n }\n },\n _updateOrder: function _updateOrder(code) {\n this.fullOrder = powerArray.$create();\n\n this._traverseBranches(function (taskId) {\n this.fullOrder.push(taskId);\n });\n\n if (code) DataStore.prototype._updateOrder.call(this, code);\n },\n _removeItemInner: function _removeItemInner(id) {\n var items = [];\n this.eachItem(function (child) {\n items.push(child);\n }, id);\n items.push(this.getItem(id));\n\n for (var i = 0; i < items.length; i++) {\n this._move_branch(items[i], this.getParent(items[i]), null);\n\n DataStore.prototype._removeItemInner.call(this, items[i].id);\n\n this._move_branch(items[i], this.getParent(items[i]), null);\n }\n },\n move: function move(sid, tindex, parent) {\n //target id as 4th parameter\n var id = arguments[3];\n var config = this._ganttConfig || {};\n var root_id = config.root_id || 0;\n id = replaceValidZeroId(id, root_id);\n\n if (id) {\n if (id === sid) return;\n parent = this.getParent(id);\n tindex = this.getBranchIndex(id);\n }\n\n if (sid == parent) {\n return;\n }\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var source = this.getItem(sid);\n var source_pid = this.getParent(source.id);\n var tbranch = this.getChildren(parent);\n if (tindex == -1) tindex = tbranch.length + 1;\n\n if (source_pid == parent) {\n var sindex = this.getBranchIndex(sid);\n if (sindex == tindex) return;\n }\n\n if (this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false) return false;\n var placeholderIds = [];\n\n for (var i = 0; i < tbranch.length; i++) {\n if (isPlaceholderTask(tbranch[i], null, this, this._ganttConfig)) {\n placeholderIds.push(tbranch[i]);\n tbranch.splice(i, 1);\n i--;\n }\n }\n\n this._replace_branch_child(source_pid, sid);\n\n tbranch = this.getChildren(parent);\n var tid = tbranch[tindex];\n tid = replaceValidZeroId(tid, root_id);\n if (!tid) //adding as last element\n tbranch.push(sid);else tbranch = tbranch.slice(0, tindex).concat([sid]).concat(tbranch.slice(tindex));\n\n if (placeholderIds.length) {\n tbranch = tbranch.concat(placeholderIds);\n }\n\n this.setParent(source, parent);\n this._branches[parent] = tbranch;\n var diff = this.calculateItemLevel(source) - source.$level;\n source.$level += diff;\n this.eachItem(function (item) {\n item.$level += diff;\n }, source.id, this);\n\n this._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n this.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n this.refresh();\n },\n getBranchIndex: function getBranchIndex(id) {\n var branch = this.getChildren(this.getParent(id));\n var index = branch.indexOf(id + \"\");\n\n if (index == -1) {\n index = branch.indexOf(+id);\n }\n\n return index;\n },\n hasChild: function hasChild(id) {\n var branch = this._branches[id];\n return branch && branch.length;\n },\n getChildren: function getChildren(id) {\n var branch = this._branches[id];\n return branch ? branch : powerArray.$create();\n },\n isChildOf: function isChildOf(childId, parentId) {\n if (!this.exists(childId)) return false;\n if (parentId === this.$getRootId()) return true;\n if (!this.hasChild(parentId)) return false;\n var item = this.getItem(childId);\n var pid = this.getParent(childId);\n var parent = this.getItem(parentId);\n\n if (parent.$level >= item.$level) {\n return false;\n }\n\n while (item && this.exists(pid)) {\n item = this.getItem(pid);\n if (item && item.id == parentId) return true;\n pid = this.getParent(item);\n }\n\n return false;\n },\n getSiblings: function getSiblings(id) {\n if (!this.exists(id)) {\n return powerArray.$create();\n }\n\n var parent = this.getParent(id);\n return this.getChildren(parent);\n },\n getNextSibling: function getNextSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var nextSibling = siblings[i + 1];\n\n if (nextSibling === 0 && i > 0) {\n nextSibling = \"0\";\n }\n\n return nextSibling || null;\n }\n }\n\n return null;\n },\n getPrevSibling: function getPrevSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var previousSibling = siblings[i - 1];\n\n if (previousSibling === 0 && i > 0) {\n previousSibling = \"0\";\n }\n\n return previousSibling || null;\n }\n }\n\n return null;\n },\n getParent: function getParent(id) {\n var item = null;\n\n if (id.id !== undefined) {\n item = id;\n } else {\n item = this.getItem(id);\n }\n\n var parent;\n\n if (item) {\n parent = item[this.$parentProperty];\n } else {\n parent = this.$getRootId();\n }\n\n return parent;\n },\n clearAll: function clearAll() {\n this._branches = {};\n DataStore.prototype.clearAll.call(this);\n },\n calculateItemLevel: function calculateItemLevel(item) {\n var level = 0;\n this.eachParent(function () {\n level++;\n }, item);\n return level;\n },\n _setParentInner: function _setParentInner(item, new_pid, silent) {\n if (!silent) {\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent, new_pid);\n } else {\n this._move_branch(item, item[this.$parentProperty], new_pid);\n }\n }\n },\n setParent: function setParent(item, new_pid, silent) {\n this._setParentInner(item, new_pid, silent);\n\n item[this.$parentProperty] = new_pid;\n },\n _eachItemCached: function _eachItemCached(code, cache) {\n for (var i = 0, len = cache.length; i < len; i++) {\n code.call(this, cache[i]);\n }\n },\n _eachItemIterate: function _eachItemIterate(code, startId, cache) {\n var itemsStack = this.getChildren(startId);\n\n if (itemsStack.length) {\n itemsStack = itemsStack.slice().reverse();\n }\n\n while (itemsStack.length) {\n var itemId = itemsStack.pop();\n var item = this.getItem(itemId);\n code.call(this, item);\n\n if (cache) {\n cache.push(item);\n }\n\n if (this.hasChild(item.id)) {\n var children = this.getChildren(item.id);\n var len = children.length;\n\n for (var i = len - 1; i >= 0; i--) {\n itemsStack.push(children[i]);\n }\n }\n }\n },\n eachItem: function eachItem(code, parent) {\n var rootId = this.$getRootId();\n\n if (!utils.defined(parent)) {\n parent = rootId;\n }\n\n var startId = replaceValidZeroId(parent, rootId) || rootId;\n var useCache = false;\n var buildCache = false;\n var cache = null;\n\n if (startId === rootId) {\n if (this._eachItemMainRangeCache) {\n useCache = true;\n cache = this._eachItemMainRangeCache;\n } else {\n buildCache = true;\n cache = this._eachItemMainRangeCache = [];\n }\n }\n\n if (useCache) {\n this._eachItemCached(code, cache);\n } else {\n this._eachItemIterate(code, startId, buildCache ? cache : null);\n }\n },\n eachParent: function eachParent(code, startItem) {\n var parentsHash = {};\n var item = startItem;\n var parent = this.getParent(item);\n\n while (this.exists(parent)) {\n if (parentsHash[parent]) {\n throw new Error(\"Invalid tasks tree. Cyclic reference has been detected on task \" + parent);\n }\n\n parentsHash[parent] = true;\n item = this.getItem(parent);\n code.call(this, item);\n parent = this.getParent(item);\n }\n },\n _add_branch: function _add_branch(item, index, parent) {\n var pid = parent === undefined ? this.getParent(item) : parent;\n if (!this.hasChild(pid)) this._branches[pid] = powerArray.$create();\n var branch = this.getChildren(pid);\n var added_already = branch.indexOf(item.id + \"\") > -1 || branch.indexOf(+item.id) > -1;\n\n if (!added_already) {\n if (index * 1 == index) {\n branch.splice(index, 0, item.id);\n } else {\n branch.push(item.id);\n }\n\n item.$rendered_parent = pid;\n }\n },\n _move_branch: function _move_branch(item, old_parent, new_parent) {\n this._eachItemMainRangeCache = null; //this.setParent(item, new_parent);\n //this._sync_parent(task);\n\n this._replace_branch_child(old_parent, item.id);\n\n if (this.exists(new_parent) || new_parent == this.$getRootId()) {\n this._add_branch(item, undefined, new_parent);\n } else {\n delete this._branches[item.id];\n }\n\n item.$level = this.calculateItemLevel(item);\n this.eachItem(function (child) {\n child.$level = this.calculateItemLevel(child);\n }, item.id);\n },\n _replace_branch_child: function _replace_branch_child(node, old_id, new_id) {\n var branch = this.getChildren(node);\n\n if (branch && node !== undefined) {\n var newbranch = powerArray.$create();\n var index = branch.indexOf(old_id + \"\");\n\n if (index == -1 && !isNaN(+old_id)) {\n index = branch.indexOf(+old_id);\n }\n\n if (index > -1) {\n if (new_id) {\n branch.splice(index, 1, new_id);\n } else {\n branch.splice(index, 1);\n }\n }\n\n newbranch = branch;\n this._branches[node] = newbranch;\n }\n },\n sort: function sort(field, desc, parent) {\n if (!this.exists(parent)) {\n parent = this.$getRootId();\n }\n\n if (!field) field = \"order\";\n var criteria = typeof field == \"string\" ? function (a, b) {\n if (a[field] == b[field] || helpers.isDate(a[field]) && helpers.isDate(b[field]) && a[field].valueOf() == b[field].valueOf()) {\n return 0;\n }\n\n var result = a[field] > b[field];\n return result ? 1 : -1;\n } : field;\n\n if (desc) {\n var original_criteria = criteria;\n\n criteria = function criteria(a, b) {\n return original_criteria(b, a);\n };\n }\n\n var els = this.getChildren(parent);\n\n if (els) {\n var temp = [];\n\n for (var i = els.length - 1; i >= 0; i--) {\n temp[i] = this.getItem(els[i]);\n }\n\n temp.sort(criteria);\n\n for (var i = 0; i < temp.length; i++) {\n els[i] = temp[i].id;\n this.sort(field, desc, els[i]);\n }\n }\n },\n filter: function filter(rule) {\n for (var i in this.pull) {\n var renderedParent = this.pull[i].$rendered_parent;\n var actualParent = this.getParent(this.pull[i]);\n\n if (renderedParent !== actualParent) {\n this._move_branch(this.pull[i], renderedParent, actualParent);\n }\n }\n\n return DataStore.prototype.filter.apply(this, arguments);\n },\n open: function open(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = true; // GS-2170. Do not recalculate the indexes and dates as they will be recalculated later\n\n this._skipTaskRecalculation = true;\n this.callEvent(\"onItemOpen\", [id]);\n }\n },\n close: function close(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = false; // GS-2170. Do not recalculate the indexes and dates as they will be recalculated later\n\n this._skipTaskRecalculation = true;\n this.callEvent(\"onItemClose\", [id]);\n }\n },\n destructor: function destructor() {\n DataStore.prototype.destructor.call(this);\n this._branches = null;\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n }\n}, DataStore.prototype);\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n $create: function $create(array) {\n return utils.mixin(array || [], this);\n },\n //remove element at specified position\n $removeAt: function $removeAt(pos, len) {\n if (pos >= 0) this.splice(pos, len || 1);\n },\n //find element in collection and remove it\n $remove: function $remove(value) {\n this.$removeAt(this.$find(value));\n },\n //add element to collection at specific position\n $insertAt: function $insertAt(data, pos) {\n if (!pos && pos !== 0) //add to the end by default\n this.push(data);else {\n var b = this.splice(pos, this.length - pos);\n this[pos] = data;\n this.push.apply(this, b); //reconstruct array without loosing this pointer\n }\n },\n //return index of element, -1 if it doesn't exists\n $find: function $find(data) {\n for (var i = 0; i < this.length; i++) {\n if (data == this[i]) return i;\n }\n\n return -1;\n },\n //execute some method for each element of array\n $each: function $each(functor, master) {\n for (var i = 0; i < this.length; i++) {\n functor.call(master || this, this[i]);\n }\n },\n //create new array from source, by using results of functor\n $map: function $map(functor, master) {\n for (var i = 0; i < this.length; i++) {\n this[i] = functor.call(master || this, this[i]);\n }\n\n return this;\n },\n $filter: function $filter(functor, master) {\n for (var i = 0; i < this.length; i++) {\n if (!functor.call(master || this, this[i])) {\n this.splice(i, 1);\n i--;\n }\n }\n\n return this;\n }\n};\nmodule.exports = $powerArray;","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar eventable = require(\"../../utils/eventable\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar DataStore = function DataStore(config) {\n this.pull = {};\n this.$initItem = config.initItem;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._skip_refresh = false;\n this._filterRule = null;\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._getItemsCache = null;\n this.$config = config;\n eventable(this);\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._getItemsCache = null;\n return true;\n });\n\n return this;\n};\n\nDataStore.prototype = {\n _attachDataChange: function _attachDataChange(callback) {\n this.attachEvent(\"onClearAll\", callback);\n this.attachEvent(\"onBeforeParse\", callback);\n this.attachEvent(\"onBeforeUpdate\", callback);\n this.attachEvent(\"onBeforeDelete\", callback);\n this.attachEvent(\"onBeforeAdd\", callback);\n this.attachEvent(\"onParse\", callback);\n this.attachEvent(\"onBeforeFilter\", callback);\n },\n _parseInner: function _parseInner(data) {\n var item = null,\n loaded = [];\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n if (this.$initItem) {\n if (this.$config.copyOnParse()) {\n item = utils.copy(item);\n }\n\n item = this.$initItem(item);\n }\n\n if (this.callEvent(\"onItemLoading\", [item])) {\n if (!this.pull.hasOwnProperty(item.id)) {\n this.fullOrder.push(item.id);\n }\n\n loaded.push(item);\n this.pull[item.id] = item;\n }\n }\n\n return loaded;\n },\n parse: function parse(data) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n if (!this.isSilent()) {\n this.refresh();\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n getItem: function getItem(id) {\n return this.pull[id];\n },\n _updateOrder: function _updateOrder(code) {\n code.call(this.visibleOrder);\n code.call(this.fullOrder);\n },\n updateItem: function updateItem(id, item) {\n if (!utils.defined(item)) item = this.getItem(id);\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeUpdate\", [item.id, item]) === false) return false;\n } // This is how it worked before updating the properties:\n // this.pull[id]=item;\n\n\n utils.mixin(this.pull[id], item, true);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterUpdate\", [item.id, item]);\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"update\"]);\n }\n },\n _removeItemInner: function _removeItemInner(id) {\n //clear from collections\n //this.visibleOrder.$remove(id);\n this._updateOrder(function () {\n this.$remove(id);\n });\n\n delete this.pull[id];\n },\n removeItem: function removeItem(id) {\n //utils.assert(this.exists(id), \"Not existing ID in remove command\"+id);\n var obj = this.getItem(id); //save for later event\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeDelete\", [obj.id, obj]) === false) return false;\n }\n\n this.callEvent(\"onAfterDeleteConfirmed\", [obj.id, obj]);\n\n this._removeItemInner(id);\n\n if (!this.isSilent()) {\n this.filter();\n this.callEvent(\"onAfterDelete\", [obj.id, obj]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"delete\"]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n //in case of treetable order is sent as 3rd parameter\n //var order = index;\n if (this.exists(item.id)) {\n this.silent(function () {\n this.updateItem(item.id, item);\n });\n } else {\n var order = this.visibleOrder; //by default item is added to the end of the list\n\n var data_size = order.length;\n if (!utils.defined(index) || index < 0) index = data_size; //check to prevent too big indexes\n\n if (index > data_size) {\n //dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n index = Math.min(order.length, index);\n }\n } //gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\n this.pull[item.id] = item;\n\n if (!this.isSilent()) {\n this._updateOrder(function () {\n if (this.$find(item.id) === -1) this.$insertAt(item.id, index);\n });\n }\n\n this.filter(); //order.$insertAt(item.id,index);\n },\n isVisible: function isVisible(id) {\n return this.visibleOrder.$find(id) > -1;\n },\n getVisibleItems: function getVisibleItems() {\n return this.getIndexRange();\n },\n addItem: function addItem(item, index) {\n if (!utils.defined(item.id)) item.id = utils.uid();\n\n if (this.$initItem) {\n item = this.$initItem(item);\n }\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n }\n\n this._addItemInner(item, index);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterAdd\", [item.id, item]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"add\"]);\n }\n\n return item.id;\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n if (this.pull[oldId]) this.pull[newId] = this.pull[oldId];\n var visibleOrder = this._searchVisibleOrder[oldId];\n this.pull[newId].id = newId;\n\n this._updateOrder(function () {\n this[this.$find(oldId)] = newId;\n });\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._searchVisibleOrder[oldId]; //this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\n delete this.pull[oldId];\n },\n changeId: function changeId(oldId, newId) {\n this._changeIdInner(oldId, newId);\n\n this.callEvent(\"onIdChange\", [oldId, newId]);\n },\n exists: function exists(id) {\n return !!this.pull[id];\n },\n _moveInner: function _moveInner(sindex, tindex) {\n var id = this.getIdByIndex(sindex);\n\n this._updateOrder(function () {\n this.$removeAt(sindex);\n this.$insertAt(id, Math.min(this.length, tindex));\n }); //this.visibleOrder.$removeAt(sindex);\t//remove at old position\n //if (sindex<tindex) tindex--;\t//correct shift, caused by element removing\n //this.visibleOrder.$insertAt(id,Math.min(this.visibleOrder.length, tindex));\t//insert at new position\n\n },\n move: function move(sindex, tindex) {\n //gantt.assert(sindex>=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n var id = this.getIdByIndex(sindex);\n var obj = this.getItem(id);\n\n this._moveInner(sindex, tindex);\n\n if (!this.isSilent()) {\n //repaint signal\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n }\n },\n clearAll: function clearAll() {\n if (this.$destroyed) {\n return;\n } // GS-956 We need to unselect the resource as its ID is cached\n\n\n this.silent(function () {\n this.unselect();\n });\n this.pull = {};\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n if (this.isSilent()) return;\n this.callEvent(\"onClearAll\", []);\n this.refresh();\n },\n silent: function silent(code, master) {\n var alreadySilent = false;\n\n if (this.isSilent()) {\n alreadySilent = true;\n }\n\n this._skip_refresh = true;\n code.call(master || this);\n\n if (!alreadySilent) {\n this._skip_refresh = false;\n }\n },\n isSilent: function isSilent() {\n return !!this._skip_refresh;\n },\n arraysEqual: function arraysEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) return false;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) return false;\n }\n\n return true;\n },\n refresh: function refresh(id, quick) {\n if (this.isSilent()) return;\n var item;\n\n if (id) {\n item = this.getItem(id);\n }\n\n var args;\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n if (this.callEvent(\"onBeforeStoreUpdate\", args) === false) {\n return;\n }\n\n var skipFilter = this._quick_refresh && !this._mark_recompute;\n this._mark_recompute = false;\n\n if (id) {\n // if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n if (!quick && !skipFilter) {\n var oldOrder = this.visibleOrder;\n this.filter();\n\n if (!this.arraysEqual(oldOrder, this.visibleOrder)) {\n id = undefined;\n }\n }\n } else if (!skipFilter) {\n this.filter();\n }\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n this.callEvent(\"onStoreUpdated\", args);\n },\n count: function count() {\n return this.fullOrder.length;\n },\n countVisible: function countVisible() {\n return this.visibleOrder.length;\n },\n sort: function sort(_sort) {},\n serialize: function serialize() {},\n eachItem: function eachItem(code) {\n for (var i = 0; i < this.fullOrder.length; i++) {\n var item = this.getItem(this.fullOrder[i]);\n code.call(this, item);\n }\n },\n find: function find(filter) {\n var result = [];\n this.eachItem(function (item) {\n if (filter(item)) {\n result.push(item);\n }\n });\n return result;\n },\n filter: function filter(rule) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeFilter\", []);\n }\n\n this.callEvent(\"onPreFilter\", []);\n var filteredOrder = powerArray.$create();\n var placeholderIds = [];\n this.eachItem(function (item) {\n if (this.callEvent(\"onFilterItem\", [item.id, item])) {\n if (isPlaceholderTask(item.id, null, this, this._ganttConfig)) {\n placeholderIds.push(item.id);\n } else {\n filteredOrder.push(item.id);\n }\n }\n });\n\n for (var i = 0; i < placeholderIds.length; i++) {\n filteredOrder.push(placeholderIds[i]);\n }\n\n this.visibleOrder = filteredOrder;\n this._searchVisibleOrder = {};\n\n for (var i = 0; i < this.visibleOrder.length; i++) {\n this._searchVisibleOrder[this.visibleOrder[i]] = i;\n }\n\n if (!this.isSilent()) {\n this.callEvent(\"onFilter\", []);\n }\n },\n getIndexRange: function getIndexRange(from, to) {\n var max = Math.min(to || Infinity, this.countVisible() - 1);\n var min = from || 0;\n var cacheKey = min + '-' + max;\n\n if (this._indexRangeCache[cacheKey]) {\n return this._indexRangeCache[cacheKey].slice();\n }\n\n var ret = [];\n\n for (var i = min; i <= max; i++) {\n ret.push(this.getItem(this.visibleOrder[i]));\n }\n\n this._indexRangeCache[cacheKey] = ret.slice();\n return ret;\n },\n getItems: function getItems() {\n if (this._getItemsCache) {\n return this._getItemsCache.slice();\n }\n\n var res = [];\n\n for (var i in this.pull) {\n res.push(this.pull[i]);\n }\n\n this._getItemsCache = res.slice();\n return res;\n },\n getIdByIndex: function getIdByIndex(index) {\n return this.visibleOrder[index];\n },\n getIndexById: function getIndexById(id) {\n var res = this._searchVisibleOrder[id];\n\n if (res === undefined) {\n res = -1;\n }\n\n return res;\n },\n _getNullIfUndefined: function _getNullIfUndefined(value) {\n if (value === undefined) {\n return null;\n } else {\n return value;\n }\n },\n getFirst: function getFirst() {\n return this._getNullIfUndefined(this.visibleOrder[0]);\n },\n getLast: function getLast() {\n return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length - 1]);\n },\n getNext: function getNext(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) + 1]);\n },\n getPrev: function getPrev(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) - 1]);\n },\n destructor: function destructor() {\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n this.$destroyed = true;\n this.pull = null;\n this.$initItem = null;\n this.visibleOrder = null;\n this.fullOrder = null;\n this._skip_refresh = null;\n this._filterRule = null;\n this._searchVisibleOrder = null;\n this._indexRangeCache = {};\n }\n};\nmodule.exports = DataStore;","function checkTimeout(host, updPerSecond) {\n if (!updPerSecond) return true;\n if (host._on_timeout) return false;\n var timeout = Math.ceil(1000 / updPerSecond);\n if (timeout < 2) return true;\n setTimeout(function () {\n delete host._on_timeout;\n }, timeout);\n host._on_timeout = true;\n return true;\n}\n\nmodule.exports = checkTimeout;","var utils = require(\"../../../utils/utils\");\n\nfunction createScope(addEvent, removeEvent) {\n addEvent = addEvent || utils.event;\n removeEvent = removeEvent || utils.eventRemove;\n var handlers = [];\n var eventScope = {\n attach: function attach(el, event, callback, capture) {\n handlers.push({\n element: el,\n event: event,\n callback: callback,\n capture: capture\n });\n addEvent(el, event, callback, capture);\n },\n detach: function detach(el, event, callback, capture) {\n removeEvent(el, event, callback, capture);\n\n for (var i = 0; i < handlers.length; i++) {\n var handler = handlers[i];\n\n if (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n handlers.splice(i, 1);\n i--;\n }\n }\n },\n detachAll: function detachAll() {\n var staticArray = handlers.slice(); // original handlers array can be spliced on every iteration\n\n for (var i = 0; i < staticArray.length; i++) {\n var handler = staticArray[i];\n eventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n eventScope.detach(handler.element, handler.event, handler.callback, undefined);\n eventScope.detach(handler.element, handler.event, handler.callback, false);\n eventScope.detach(handler.element, handler.event, handler.callback, true);\n }\n\n handlers.splice(0, handlers.length);\n },\n extend: function extend() {\n return createScope(this.event, this.eventRemove);\n }\n };\n return eventScope;\n}\n\nmodule.exports = createScope;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\nmodule.exports = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' ? self.FormData : window.FormData;","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar punycode = require('punycode');\n\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n} // Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\n\n\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\nsimplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\nunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\nautoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\nunsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that never have a hostname.\nhostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that always contain a // bit.\nslashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n},\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + _typeof(url));\n } // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n\n\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n var rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) hostEnd = rest.length;\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host; // strip [ and ] from the hostname\n // the host field still retains them, though\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n } // now rest is set to the post-host stuff.\n // chop off any delim chars.\n\n\n if (!unsafeProtocol[lowerProto]) {\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) continue;\n var esc = encodeURIComponent(ae);\n\n if (esc === ae) {\n esc = escape(ae);\n }\n\n rest = rest.split(ae).join(esc);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n\n if (rest) this.pathname = rest;\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n } //to support http.request\n\n\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n } // finally, reconstruct the href based on what has been validated.\n\n\n this.href = this.format();\n return this;\n}; // format a parsed object into a url string\n\n\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && util.isObject(this.query) && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || query && '?' + query || '';\n if (protocol && protocol.substr(-1) !== ':') protocol += ':'; // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n } // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n\n\n result.hash = relative.hash; // if the relative url is empty, then there's nothing left to do here.\n\n if (relative.href === '') {\n result.href = result.format();\n return result;\n } // hrefs like //foo/bar always cut to the protocol.\n\n\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') result[rkey] = relative[rkey];\n } //urlParse appends trailing / to urls like http://www.example.com\n\n\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n\n while (relPath.length && !(relative.host = relPath.shift())) {\n ;\n }\n\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port; // to support http.request\n\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol]; // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);\n }\n\n result.host = '';\n\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);\n }\n\n relative.host = null;\n }\n\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath; // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift(); //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n result.search = relative.search;\n result.query = relative.query; //to support http.request\n\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null; //to support http.request\n\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n\n result.href = result.format();\n return result;\n } // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n\n\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n\n var up = 0;\n\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/'; // put the host back\n\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || result.host && srcPath.length;\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n } //to support request.http\n\n\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) this.hostname = host;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n/*<replacement>*/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n\n case 'latin1':\n case 'binary':\n return 'latin1';\n\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n\n default:\n if (retried) return; // undefined\n\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n\n; // Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\n\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n} // StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\n\n\nexports.StringDecoder = StringDecoder;\n\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End; // Returns only complete characters in a Buffer\n\nStringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n}; // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\n\n\nfunction utf8CheckByte(_byte) {\n if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4;\n return _byte >> 6 === 0x02 ? -1 : -2;\n} // Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\n\n\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n\n return nb;\n }\n\n return 0;\n} // Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\n\n\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return \"\\uFFFD\";\n }\n }\n }\n} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\n\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n} // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\n\n\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n} // For UTF-8, a replacement character is added when ending on a partial\n// character.\n\n\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + \"\\uFFFD\";\n return r;\n} // UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\n\n\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n\n return r;\n }\n\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n} // For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\n\n\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\n\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n\nmodule.exports = Writable;\n/* <replacement> */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\n\n\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n/*<replacement>*/\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options[\"final\"] === 'function') this._final = options[\"final\"];\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n// undocumented cb() API, needed for core, not for public API\n\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\n\nmodule.exports = EventEmitter; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n\nEventEmitter.defaultMaxListeners = 10; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\nEventEmitter.prototype.setMaxListeners = function (n) {\n if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function (type) {\n var er, handler, len, args, i, listeners;\n if (!this._events) this._events = {}; // If there is no 'error' event listener then throw.\n\n if (type === 'error') {\n if (!this._events.error || isObject(this._events.error) && !this._events.error.length) {\n er = arguments[1];\n\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n if (isUndefined(handler)) return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n\n case 2:\n handler.call(this, arguments[1]);\n break;\n\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n\n for (i = 0; i < len; i++) {\n listeners[i].apply(this, args);\n }\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function (type, listener) {\n var m;\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n if (!this._events) this._events = {}; // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n\n if (this._events.newListener) this.emit('newListener', type, isFunction(listener.listener) ? listener.listener : listener);\n if (!this._events[type]) // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;else if (isObject(this._events[type])) // If we've already got an array, just append.\n this._events[type].push(listener);else // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener]; // Check for listener leak\n\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' + 'leak detected. %d listeners added. ' + 'Use emitter.setMaxListeners() to increase limit.', this._events[type].length);\n\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function (type, listener) {\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n return this;\n}; // emits a 'removeListener' event iff the listener was removed\n\n\nEventEmitter.prototype.removeListener = function (type, listener) {\n var list, position, length, i;\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n if (!this._events || !this._events[type]) return this;\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener || isFunction(list.listener) && list.listener === listener) {\n delete this._events[type];\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener || list[i].listener && list[i].listener === listener) {\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function (type) {\n var key, listeners;\n if (!this._events) return this; // not listening for removeListener, no need to emit\n\n if (!this._events.removeListener) {\n if (arguments.length === 0) this._events = {};else if (this._events[type]) delete this._events[type];\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length) {\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n }\n\n delete this._events[type];\n return this;\n};\n\nEventEmitter.prototype.listeners = function (type) {\n var ret;\n if (!this._events || !this._events[type]) ret = [];else if (isFunction(this._events[type])) ret = [this._events[type]];else ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function (type) {\n if (this._events) {\n var evlistener = this._events[type];\n if (isFunction(evlistener)) return 1;else if (evlistener) return evlistener.length;\n }\n\n return 0;\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n\nmodule.exports = Readable;\n/*<replacement>*/\n\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n/*<replacement>*/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar debugUtil = require('util');\n\nvar debug = void 0;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\n\nvar BufferList = require('./internal/streams/BufferList');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n return er;\n} // if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\n\n\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n}; // Don't raise the hwm > 8MB\n\n\nvar MAX_HWM = 0x800000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true; // emit 'readable' now to make sure it gets picked up.\n\n emitReadable(stream);\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n } // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n\n\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {}\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList; // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n} // Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n\n return ret;\n} // Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n} // Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState; // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');","var capability = require('./capability');\n\nvar inherits = require('inherits');\n\nvar stream = require('readable-stream');\n\nvar rStates = exports.readyStates = {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE: 4\n};\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n var self = this;\n stream.Readable.call(self);\n self._mode = mode;\n self.headers = {};\n self.rawHeaders = [];\n self.trailers = {};\n self.rawTrailers = []; // Fake the 'close' event, but only once 'end' fires\n\n self.on('end', function () {\n // The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n process.nextTick(function () {\n self.emit('close');\n });\n });\n\n if (mode === 'fetch') {\n var read = function read() {\n reader.read().then(function (result) {\n if (self._destroyed) return;\n\n if (result.done) {\n global.clearTimeout(fetchTimer);\n self.push(null);\n return;\n }\n\n self.push(new Buffer(result.value));\n read();\n })[\"catch\"](function (err) {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.emit('error', err);\n });\n };\n\n self._fetchResponse = response;\n self.url = response.url;\n self.statusCode = response.status;\n self.statusMessage = response.statusText;\n response.headers.forEach(function (header, key) {\n self.headers[key.toLowerCase()] = header;\n self.rawHeaders.push(key, header);\n });\n\n if (capability.writableStream) {\n var writable = new WritableStream({\n write: function write(chunk) {\n return new Promise(function (resolve, reject) {\n if (self._destroyed) {\n reject();\n } else if (self.push(new Buffer(chunk))) {\n resolve();\n } else {\n self._resumeFetch = resolve;\n }\n });\n },\n close: function close() {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.push(null);\n },\n abort: function abort(err) {\n if (!self._destroyed) self.emit('error', err);\n }\n });\n\n try {\n response.body.pipeTo(writable)[\"catch\"](function (err) {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.emit('error', err);\n });\n return;\n } catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\n } // fallback for when writableStream or pipeTo aren't available\n\n\n var reader = response.body.getReader();\n read();\n } else {\n self._xhr = xhr;\n self._pos = 0;\n self.url = xhr.responseURL;\n self.statusCode = xhr.status;\n self.statusMessage = xhr.statusText;\n var headers = xhr.getAllResponseHeaders().split(/\\r?\\n/);\n headers.forEach(function (header) {\n var matches = header.match(/^([^:]+):\\s*(.*)/);\n\n if (matches) {\n var key = matches[1].toLowerCase();\n\n if (key === 'set-cookie') {\n if (self.headers[key] === undefined) {\n self.headers[key] = [];\n }\n\n self.headers[key].push(matches[2]);\n } else if (self.headers[key] !== undefined) {\n self.headers[key] += ', ' + matches[2];\n } else {\n self.headers[key] = matches[2];\n }\n\n self.rawHeaders.push(matches[1], matches[2]);\n }\n });\n self._charset = 'x-user-defined';\n\n if (!capability.overrideMimeType) {\n var mimeType = self.rawHeaders['mime-type'];\n\n if (mimeType) {\n var charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/);\n\n if (charsetMatch) {\n self._charset = charsetMatch[1].toLowerCase();\n }\n }\n\n if (!self._charset) self._charset = 'utf-8'; // best guess\n }\n }\n};\n\ninherits(IncomingMessage, stream.Readable);\n\nIncomingMessage.prototype._read = function () {\n var self = this;\n var resolve = self._resumeFetch;\n\n if (resolve) {\n self._resumeFetch = null;\n resolve();\n }\n};\n\nIncomingMessage.prototype._onXHRProgress = function () {\n var self = this;\n var xhr = self._xhr;\n var response = null;\n\n switch (self._mode) {\n case 'text:vbarray':\n // For IE9\n if (xhr.readyState !== rStates.DONE) break;\n\n try {\n // This fails in IE8\n response = new global.VBArray(xhr.responseBody).toArray();\n } catch (e) {}\n\n if (response !== null) {\n self.push(new Buffer(response));\n break;\n }\n\n // Falls through in IE8\t\n\n case 'text':\n try {\n // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n response = xhr.responseText;\n } catch (e) {\n self._mode = 'text:vbarray';\n break;\n }\n\n if (response.length > self._pos) {\n var newData = response.substr(self._pos);\n\n if (self._charset === 'x-user-defined') {\n var buffer = new Buffer(newData.length);\n\n for (var i = 0; i < newData.length; i++) {\n buffer[i] = newData.charCodeAt(i) & 0xff;\n }\n\n self.push(buffer);\n } else {\n self.push(newData, self._charset);\n }\n\n self._pos = response.length;\n }\n\n break;\n\n case 'arraybuffer':\n if (xhr.readyState !== rStates.DONE || !xhr.response) break;\n response = xhr.response;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n\n case 'moz-chunked-arraybuffer':\n // take whole\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING || !response) break;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n\n case 'ms-stream':\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING) break;\n var reader = new global.MSStreamReader();\n\n reader.onprogress = function () {\n if (reader.result.byteLength > self._pos) {\n self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))));\n self._pos = reader.result.byteLength;\n }\n };\n\n reader.onload = function () {\n self.push(null);\n }; // reader.onerror = ??? // TODO: this\n\n\n reader.readAsArrayBuffer(response);\n break;\n } // The ms-stream case handles end separately in reader.onload()\n\n\n if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n self.push(null);\n }\n};","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream);\nexports.writableStream = isFunction(global.WritableStream);\nexports.abortController = isFunction(global.AbortController);\nexports.blobConstructor = false;\n\ntry {\n new Blob([new ArrayBuffer(1)]);\n exports.blobConstructor = true;\n} catch (e) {} // The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\n\n\nvar xhr;\n\nfunction getXHR() {\n // Cache the xhr value\n if (xhr !== undefined) return xhr;\n\n if (global.XMLHttpRequest) {\n xhr = new global.XMLHttpRequest(); // If XDomainRequest is available (ie only, where xhr might not work\n // cross domain), use the page location. Otherwise use example.com\n // Note: this doesn't actually make an http request.\n\n try {\n xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com');\n } catch (e) {\n xhr = null;\n }\n } else {\n // Service workers don't have XHR\n xhr = null;\n }\n\n return xhr;\n}\n\nfunction checkTypeSupport(type) {\n var xhr = getXHR();\n if (!xhr) return false;\n\n try {\n xhr.responseType = type;\n return xhr.responseType === type;\n } catch (e) {}\n\n return false;\n} // For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\n\n\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined';\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice); // If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\n\nexports.arraybuffer = exports.fetch || haveArrayBuffer && checkTypeSupport('arraybuffer'); // These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\n\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream');\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer && checkTypeSupport('moz-chunked-arraybuffer'); // If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\n\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false);\nexports.vbArray = isFunction(global.VBArray);\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nxhr = null; // Help gc","var ClientRequest = require('./lib/request');\n\nvar response = require('./lib/response');\n\nvar extend = require('xtend');\n\nvar statusCodes = require('builtin-status-codes');\n\nvar url = require('url');\n\nvar http = exports;\n\nhttp.request = function (opts, cb) {\n if (typeof opts === 'string') opts = url.parse(opts);else opts = extend(opts); // Normally, the page is loaded from http or https, so not specifying a protocol\n // will result in a (valid) protocol-relative url. However, this won't work if\n // the protocol is something else, like 'file:'\n\n var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '';\n var protocol = opts.protocol || defaultProtocol;\n var host = opts.hostname || opts.host;\n var port = opts.port;\n var path = opts.path || '/'; // Necessary for IPv6 addresses\n\n if (host && host.indexOf(':') !== -1) host = '[' + host + ']'; // This may be a relative url. The browser should always be able to interpret it correctly.\n\n opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path;\n opts.method = (opts.method || 'GET').toUpperCase();\n opts.headers = opts.headers || {}; // Also valid opts.auth, opts.mode\n\n var req = new ClientRequest(opts);\n if (cb) req.on('response', cb);\n return req;\n};\n\nhttp.get = function get(opts, cb) {\n var req = http.request(opts, cb);\n req.end();\n return req;\n};\n\nhttp.ClientRequest = ClientRequest;\nhttp.IncomingMessage = response.IncomingMessage;\n\nhttp.Agent = function () {};\n\nhttp.Agent.defaultMaxSockets = 4;\nhttp.globalAgent = new http.Agent();\nhttp.STATUS_CODES = statusCodes;\nhttp.METHODS = ['CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNLOCK', 'UNSUBSCRIBE'];","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","module.exports = function (gantt) {\n // TODO: why eslint fails on regexp?\n // eslint-disable-next-line no-control-regex\n var htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n var extraSpaces = new RegExp(\" +\", \"gm\");\n\n function stripHTMLLite(htmlText) {\n return (htmlText + \"\").replace(htmlTags, \" \").replace(extraSpaces, \" \");\n }\n\n var singleQuotes = new RegExp(\"'\", \"gm\");\n\n function escapeQuotes(text) {\n return (text + \"\").replace(singleQuotes, \"'\");\n }\n\n gantt._waiAria = {\n getAttributeString: function getAttributeString(attr) {\n var attributes = [\" \"];\n\n for (var i in attr) {\n var text = escapeQuotes(stripHTMLLite(attr[i]));\n attributes.push(i + \"='\" + text + \"'\");\n }\n\n attributes.push(\" \");\n return attributes.join(\" \");\n },\n getTimelineCellAttr: function getTimelineCellAttr(dateString) {\n return gantt._waiAria.getAttributeString({\n \"aria-label\": dateString\n });\n },\n _taskCommonAttr: function _taskCommonAttr(task, div) {\n if (!(task.start_date && task.end_date)) return;\n div.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n if (task.$dataprocessor_class) {\n div.setAttribute(\"aria-busy\", true);\n }\n },\n setTaskBarAttr: function setTaskBarAttr(task, div) {\n this._taskCommonAttr(task, div); // task bars are complex elements that should be treated as a single element\n\n\n div.setAttribute(\"role\", \"img\");\n\n if (!gantt.isReadonly(task) && gantt.config.drag_move) {\n if (task.id != gantt.getState(\"tasksDnd\").drag_id) {\n div.setAttribute(\"aria-grabbed\", false);\n } else {\n div.setAttribute(\"aria-grabbed\", true);\n }\n }\n },\n taskRowAttr: function taskRowAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.order_branch) {\n div.setAttribute(\"aria-grabbed\", false);\n }\n\n div.setAttribute(\"role\", \"row\"); // selected attribute should be added only to the grid because\n // other parts don't have the keyboard navigation\n\n div.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\"); // allowed values start from 1, set 1 for non-tree datastores\n\n div.setAttribute(\"aria-level\", task.$level + 1 || 1);\n\n if (gantt.hasChild(task.id)) {\n div.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n }\n },\n linkAttr: function linkAttr(link, div) {\n var linkTypes = gantt.config.links;\n var toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n var fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n var content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart); // links are complex elements that should be treated as a single element\n\n div.setAttribute(\"role\", \"img\");\n div.setAttribute(\"aria-label\", stripHTMLLite(content));\n\n if (gantt.isReadonly(link)) {\n div.setAttribute(\"aria-readonly\", true);\n }\n },\n gridSeparatorAttr: function gridSeparatorAttr(div) {\n // the only valid role for the grid header\n div.setAttribute(\"role\", \"columnheader\");\n },\n rowResizerAttr: function rowResizerAttr(div) {\n // the only valid role for the grid header\n div.setAttribute(\"role\", \"row\");\n },\n lightboxHiddenAttr: function lightboxHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n },\n lightboxVisibleAttr: function lightboxVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n lightboxAttr: function lightboxAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n div.setAttribute(\"aria-hidden\", \"true\");\n div.firstChild.setAttribute(\"role\", \"heading\");\n div.firstChild.setAttribute(\"aria-level\", \"1\");\n },\n lightboxButtonAttrString: function lightboxButtonAttrString(buttonName) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels[buttonName],\n \"tabindex\": \"0\"\n });\n },\n lightboxHeader: function lightboxHeader(div, headerText) {\n div.setAttribute(\"aria-label\", headerText);\n },\n lightboxSelectAttrString: function lightboxSelectAttrString(time_option) {\n var label = \"\";\n\n switch (time_option) {\n case \"%Y\":\n label = gantt.locale.labels.years;\n break;\n\n case \"%m\":\n label = gantt.locale.labels.months;\n break;\n\n case \"%d\":\n label = gantt.locale.labels.days;\n break;\n\n case \"%H:%i\":\n label = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n break;\n\n default:\n break;\n }\n\n return gantt._waiAria.getAttributeString({\n \"aria-label\": label\n });\n },\n lightboxDurationInputAttrString: function lightboxDurationInputAttrString(section) {\n return this.getAttributeString({\n \"aria-label\": gantt.locale.labels.column_duration,\n \"aria-valuemin\": \"0\",\n \"role\": \"spinbutton\"\n });\n },\n inlineEditorAttr: function inlineEditorAttr(div) {\n div.setAttribute(\"role\", \"row\");\n },\n gridAttrString: function gridAttrString() {\n return [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n },\n gridScaleRowAttrString: function gridScaleRowAttrString() {\n return \"role='row'\";\n },\n gridScaleCellAttrString: function gridScaleCellAttrString(column, label) {\n var attrs = \"\";\n\n if (column.name == \"add\") {\n // a more precise role is button, but it is not valid for the grid header\n attrs = this.getAttributeString({\n \"role\": \"columnheader\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n } else {\n var attributes = {\n \"role\": \"columnheader\",\n \"aria-label\": label\n };\n\n if (gantt._sort && gantt._sort.name == column.name) {\n if (gantt._sort.direction == \"asc\") {\n attributes[\"aria-sort\"] = \"ascending\";\n } else {\n attributes[\"aria-sort\"] = \"descending\";\n }\n }\n\n attrs = this.getAttributeString(attributes);\n }\n\n return attrs;\n },\n gridDataAttrString: function gridDataAttrString() {\n return \"role='rowgroup'\";\n },\n reorderMarkerAttr: function reorderMarkerAttr(div) {\n div.setAttribute(\"role\", \"grid\");\n div.firstChild.removeAttribute(\"aria-level\");\n div.firstChild.setAttribute(\"aria-grabbed\", \"true\");\n },\n gridCellAttrString: function gridCellAttrString(column, textValue, task) {\n var attributes = {\n \"role\": \"gridcell\",\n \"aria-label\": textValue\n };\n\n if (!column.editor || gantt.isReadonly(task)) {\n attributes[\"aria-readonly\"] = true;\n }\n\n return this.getAttributeString(attributes);\n },\n gridAddButtonAttrString: function gridAddButtonAttrString(column) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n },\n messageButtonAttrString: function messageButtonAttrString(buttonLabel) {\n return \"tabindex='0' role='button' aria-label='\" + buttonLabel + \"'\";\n },\n messageInfoAttr: function messageInfoAttr(div) {\n div.setAttribute(\"role\", \"alert\"); //div.setAttribute(\"tabindex\", \"-1\");\n },\n messageModalAttr: function messageModalAttr(div, uid) {\n div.setAttribute(\"role\", \"dialog\");\n\n if (uid) {\n div.setAttribute(\"aria-labelledby\", uid);\n } //\tdiv.setAttribute(\"tabindex\", \"-1\");\n\n },\n quickInfoAttr: function quickInfoAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n },\n quickInfoHeaderAttrString: function quickInfoHeaderAttrString() {\n return \" role='heading' aria-level='1' \";\n },\n quickInfoHeader: function quickInfoHeader(div, header) {\n div.setAttribute(\"aria-label\", header);\n },\n quickInfoButtonAttrString: function quickInfoButtonAttrString(label) {\n return gantt._waiAria.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": label,\n \"tabindex\": \"0\"\n });\n },\n tooltipAttr: function tooltipAttr(div) {\n div.setAttribute(\"role\", \"tooltip\");\n },\n tooltipVisibleAttr: function tooltipVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n tooltipHiddenAttr: function tooltipHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n }\n };\n\n function isDisabled() {\n return !gantt.config.wai_aria_attributes;\n }\n\n for (var i in gantt._waiAria) {\n gantt._waiAria[i] = function (payload) {\n return function () {\n if (isDisabled()) {\n return \"\";\n }\n\n return payload.apply(this, arguments);\n };\n }(gantt._waiAria[i]);\n }\n};","module.exports = function (gantt) {\n gantt._extend_to_optional = function (lightbox_block) {\n var duration = lightbox_block;\n var optional_time = {\n render: duration.render,\n focus: duration.focus,\n set_value: function set_value(node, value, task, section) {\n var mapping = gantt._resolve_default_mapping(section);\n\n if (!task[mapping.start_date] || mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task)) {\n optional_time.disable(node, section);\n var val = {};\n\n for (var i in mapping) {\n //take default values from the time control from task start/end dates\n val[mapping[i]] = task[i];\n }\n\n return duration.set_value.call(gantt, node, value, val, section); //set default value\n } else {\n optional_time.enable(node, section);\n return duration.set_value.call(gantt, node, value, task, section);\n }\n },\n get_value: function get_value(node, task, section) {\n if (section.disabled) {\n return {\n start_date: null\n };\n } else {\n return duration.get_value.call(gantt, node, task, section);\n }\n },\n update_block: function update_block(node, section) {\n gantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n node.style.display = section.disabled ? \"none\" : \"block\";\n\n if (section.button) {\n var button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n labels = gantt.locale.labels;\n var button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n button.innerHTML = button_text;\n }\n\n gantt.resizeLightbox();\n },\n disable: function disable(node, section) {\n section.disabled = true;\n optional_time.update_block(node, section);\n },\n enable: function enable(node, section) {\n section.disabled = false;\n optional_time.update_block(node, section);\n },\n button_click: function button_click(index, el, section, container) {\n if (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n return;\n }\n\n var config = gantt._get_typed_lightbox_config()[index];\n\n if (config.disabled) {\n optional_time.enable(container, config);\n } else {\n optional_time.disable(container, config);\n }\n }\n };\n return optional_time;\n };\n\n gantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n gantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function TypeselectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TypeselectControl, _super);\n\n TypeselectControl.prototype.render = function (sns) {\n var types = gantt.config.types,\n locale = gantt.locale.labels,\n options = [];\n\n var filter = sns.filter || function (typeKey, typeValue) {\n if (!types.placeholder || typeValue !== types.placeholder) {\n return true;\n }\n\n return false;\n };\n\n for (var i in types) {\n if (!filter(i, types[i]) === false) {\n options.push({\n key: types[i],\n label: locale[\"type_\" + i]\n });\n }\n }\n\n sns.options = options;\n var oldOnChange = sns.onchange;\n\n sns.onchange = function () {\n gantt.changeLightboxType(this.value);\n\n if (this.value === gantt.config.types.task) {\n gantt._lightbox_new_type = \"task\";\n }\n\n if (typeof oldOnChange == 'function') {\n oldOnChange.apply(this, arguments);\n }\n };\n\n return _super.prototype.render.apply(this, arguments);\n };\n\n return TypeselectControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function ConstraintControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ConstraintControl, _super);\n\n function isNonTimedConstraint(value) {\n if (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n return true;\n } else {\n return false;\n }\n }\n\n function toggleTimeSelect(timeSelects, typeValue) {\n var isNonTimed = isNonTimedConstraint(typeValue);\n\n for (var i = 0; i < timeSelects.length; i++) {\n timeSelects[i].disabled = isNonTimed;\n }\n }\n\n ConstraintControl.prototype.render = function (sns) {\n var height = (sns.height || 30) + \"px\";\n var html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n var options = [];\n\n for (var i in gantt.config.constraint_types) {\n options.push({\n key: gantt.config.constraint_types[i],\n label: gantt.locale.labels[gantt.config.constraint_types[i]]\n });\n }\n\n sns.options = sns.options || options;\n html += \"<span data-constraint-type-select>\" + htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"data-type\",\n value: \"constraint-type\"\n }]) + \"</span>\";\n var timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\n html += \"<label data-constraint-time-select>\" + timeLabel + \": \" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</label>\";\n html += \"</div>\";\n return html;\n };\n\n ConstraintControl.prototype.set_value = function (node, value, task, config) {\n var typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n var timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n var map = config._time_format_order;\n\n var mapping = gantt._resolve_default_mapping(config);\n\n if (!typeSelect._eventsInitialized) {\n typeSelect.addEventListener(\"change\", function (e) {\n toggleTimeSelect(timeSelects, e.target.value);\n });\n typeSelect._eventsInitialized = true;\n }\n\n var constraintDate = task[mapping.constraint_date] || new Date();\n\n gantt.form_blocks._fill_lightbox_select(timeSelects, 0, constraintDate, map, config);\n\n var constraintType = task[mapping.constraint_type] || gantt.getConstraintType(task);\n typeSelect.value = constraintType;\n toggleTimeSelect(timeSelects, constraintType);\n };\n\n ConstraintControl.prototype.get_value = function (node, task, config) {\n var typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n var timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n var constraintType = typeSelect.value;\n var constraintDate = null;\n\n if (!isNonTimedConstraint(constraintType)) {\n constraintDate = gantt.form_blocks.getTimePickerValue(timeSelects, config);\n }\n\n return {\n constraint_type: constraintType,\n constraint_date: constraintDate\n };\n };\n\n ConstraintControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"select\"));\n };\n\n return ConstraintControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function ParentControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ParentControl, _super);\n\n ParentControl.prototype.render = function (sns) {\n return _display(sns, false);\n };\n\n ParentControl.prototype.set_value = function (node, value, ev, config) {\n // GS-1051. If the value is `0`, the set_value function in the select control won't select \n // the first child because (0 || '') = '';\n if (value === 0) value = \"0\";\n var tmpDom = document.createElement(\"div\");\n tmpDom.innerHTML = _display(config, ev.id);\n var newOptions = tmpDom.removeChild(tmpDom.firstChild);\n node.onselect = null;\n node.parentNode.replaceChild(newOptions, node);\n return gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\n };\n\n function _display(config, item_id) {\n var tasks = [],\n options = [];\n\n if (item_id) {\n tasks = gantt.getTaskByTime();\n\n if (config.allow_root) {\n tasks.unshift({\n id: gantt.config.root_id,\n text: config.root_label || \"\"\n });\n }\n\n tasks = _filter(tasks, config, item_id);\n\n if (config.sort) {\n tasks.sort(config.sort);\n }\n }\n\n var text = config.template || gantt.templates.task_text;\n\n for (var i = 0; i < tasks.length; i++) {\n var label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\n\n if (label === undefined) {\n label = \"\";\n }\n\n options.push({\n key: tasks[i].id,\n label: label\n });\n }\n\n config.options = options;\n config.map_to = config.map_to || \"parent\";\n return gantt.form_blocks.select.render.apply(this, arguments);\n }\n\n function _filter(options, config, item_id) {\n var filter = config.filter || function () {\n return true;\n };\n\n options = options.slice(0);\n\n for (var i = 0; i < options.length; i++) {\n var task = options[i];\n\n if (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\n options.splice(i, 1);\n i--;\n }\n }\n\n return options;\n }\n\n return ParentControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar DurationFormatterNumeric = require(\"../../../common/duration_formatter_numeric\")[\"default\"];\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function DurationControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n function getFormatter(config) {\n return config.formatter || new DurationFormatterNumeric();\n }\n\n __extends(DurationControl, _super);\n\n DurationControl.prototype.render = function (sns) {\n var time = \"<div class='gantt_time_selects'>\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</div>\";\n var label = \" \" + gantt.locale.labels[gantt.config.duration_unit + \"s\"] + \" \";\n var singleDate = sns.single_date ? \" style='display:none'\" : \"\";\n var readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\n\n var ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\n\n var durationInputClass = \"gantt_duration_value\";\n\n if (sns.formatter) {\n label = \"\";\n durationInputClass += \" gantt_duration_value_formatted\";\n }\n\n var duration = \"<div class='gantt_duration' \" + singleDate + \">\" + \"<input type='button' class='gantt_duration_dec' value='−'\" + readonly + \">\" + \"<input type='text' value='5days' class='\" + durationInputClass + \"'\" + readonly + \" \" + ariaAttr + \">\" + \"<input type='button' class='gantt_duration_inc' value='+'\" + readonly + \">\" + label + \"<span></span>\" + \"</div>\";\n var sectionClassName = \"gantt_section_time\";\n\n if (sns.name !== \"time\") {\n sectionClassName += \" gantt_section_\" + sns.name;\n }\n\n var html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;' class='\" + sectionClassName + \"'>\" + time + \" \" + duration + \"</div>\";\n return html;\n };\n\n DurationControl.prototype.set_value = function (node, value, ev, config) {\n var s = node.getElementsByTagName(\"select\");\n var inps = node.getElementsByTagName(\"input\");\n var duration = inps[1];\n var btns = [inps[0], inps[2]];\n var endspan = node.getElementsByTagName(\"span\")[0];\n var map = config._time_format_order;\n var mapping;\n var start_date;\n var end_date;\n var duration_val;\n\n function _calc_date() {\n var start_date = _getStartDate.call(gantt, node, config);\n\n var duration = _getDuration.call(gantt, node, config);\n\n var end_date = gantt.calculateEndDate({\n start_date: start_date,\n duration: duration,\n task: ev\n });\n var template = gantt.templates.task_end_date || gantt.templates.task_date;\n endspan.innerHTML = template(end_date);\n }\n\n function _change_duration(step) {\n var value = duration.value;\n value = getFormatter(config).parse(value);\n if (window.isNaN(value)) value = 0;\n value += step;\n if (value < 1) value = 1;\n duration.value = getFormatter(config).format(value);\n\n _calc_date();\n }\n\n btns[0].onclick = gantt.bind(function () {\n _change_duration(-1 * gantt.config.duration_step);\n }, this);\n btns[1].onclick = gantt.bind(function () {\n _change_duration(1 * gantt.config.duration_step);\n }, this);\n s[0].onchange = _calc_date;\n s[1].onchange = _calc_date;\n s[2].onchange = _calc_date;\n if (s[3]) s[3].onchange = _calc_date;\n duration.onkeydown = gantt.bind(function (e) {\n var code;\n e = e || window.event;\n code = e.charCode || e.keyCode || e.which;\n\n if (code == gantt.constants.KEY_CODES.DOWN) {\n _change_duration(-1 * gantt.config.duration_step);\n\n return false;\n }\n\n if (code == gantt.constants.KEY_CODES.UP) {\n _change_duration(1 * gantt.config.duration_step);\n\n return false;\n }\n\n window.setTimeout(_calc_date, 1);\n }, this);\n duration.onchange = gantt.bind(_calc_date, this);\n mapping = gantt._resolve_default_mapping(config);\n if (typeof mapping === \"string\") mapping = {\n start_date: mapping\n };\n start_date = ev[mapping.start_date] || new Date();\n end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n duration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\n start_date: start_date,\n end_date: end_date,\n task: ev\n });\n duration_val = getFormatter(config).format(duration_val);\n\n gantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, config);\n\n duration.value = duration_val;\n\n _calc_date();\n };\n\n DurationControl.prototype.get_value = function (node, ev, config) {\n var startDate = _getStartDate(node, config);\n\n var duration = _getDuration(node, config);\n\n var endDate = gantt.calculateEndDate({\n start_date: startDate,\n duration: duration,\n task: ev\n });\n\n if (typeof gantt._resolve_default_mapping(config) == \"string\") {\n return startDate;\n }\n\n return {\n start_date: startDate,\n end_date: endDate,\n duration: duration\n };\n };\n\n DurationControl.prototype.focus = function (node) {\n gantt._focus(node.getElementsByTagName(\"select\")[0]);\n };\n\n function _getStartDate(node, config) {\n var s = node.getElementsByTagName(\"select\");\n var map = config._time_format_order;\n var hours = 0;\n var minutes = 0;\n\n if (gantt.defined(map[3])) {\n var input = s[map[3]];\n var time = parseInt(input.value, 10);\n\n if (isNaN(time) && input.hasAttribute(\"data-value\")) {\n time = parseInt(input.getAttribute(\"data-value\"), 10);\n }\n\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\n }\n\n function _getDuration(node, config) {\n var duration = node.getElementsByTagName(\"input\")[1];\n duration = getFormatter(config).parse(duration.value);\n if (!duration || window.isNaN(duration)) duration = 1;\n if (duration < 0) duration *= -1;\n return duration;\n }\n\n return DurationControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function RadioControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(RadioControl, _super);\n\n RadioControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"<label><input type='radio' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n }\n }\n\n html += \"</div>\";\n return html;\n };\n\n RadioControl.prototype.set_value = function (node, value, ev, sns) {\n var radio;\n if (!sns.options || !sns.options.length) return;\n radio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") || node.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\n if (!radio) return;\n\n if (!node._dhx_onchange && sns.onchange) {\n node.onchange = sns.onchange;\n node._dhx_onchange = true;\n }\n\n radio.checked = true;\n };\n\n RadioControl.prototype.get_value = function (node, ev) {\n var result = node.querySelector(\"input[type=radio]:checked\");\n return result ? result.value : \"\";\n };\n\n RadioControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"input[type=radio]\"));\n };\n\n return RadioControl;\n};","var helpers = require(\"../../../../utils/helpers\");\n\nvar __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function CheckboxControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(CheckboxControl, _super);\n\n CheckboxControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"<label><input type='checkbox' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n }\n } else {\n sns.single_value = true;\n html += \"<label><input type='checkbox' name='\" + sns.name + \"'></label>\";\n }\n\n html += \"</div>\";\n return html;\n };\n\n CheckboxControl.prototype.set_value = function (node, value, ev, sns) {\n var checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\n\n if (!node._dhx_onchange && sns.onchange) {\n node.onchange = sns.onchange;\n node._dhx_onchange = true;\n }\n\n if (sns.single_value) {\n var box = checkboxes[0];\n box.checked = !!value;\n } else {\n helpers.forEach(checkboxes, function (entry) {\n entry.checked = value ? value.indexOf(entry.value) >= 0 : false;\n });\n }\n };\n\n CheckboxControl.prototype.get_value = function (node, task, sns) {\n if (sns.single_value) {\n var box = node.querySelector(\"input[type=checkbox]\");\n return box.checked;\n } else {\n return helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function (entry) {\n return entry.value;\n });\n }\n };\n\n CheckboxControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"input[type=checkbox]\"));\n };\n\n return CheckboxControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TimeControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TimeControl, _super);\n\n TimeControl.prototype.render = function (sns) {\n var time = gantt.form_blocks.getTimePicker.call(this, sns);\n var sectionClassName = \"gantt_section_time\";\n\n if (sns.name !== \"time\") {\n sectionClassName += \" gantt_section_\" + sns.name;\n }\n\n var html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;text-align:center;' class='\" + sectionClassName + \"'>\";\n html += time;\n\n if (sns.single_date) {\n time = gantt.form_blocks.getTimePicker.call(this, sns, true);\n html += \"<span></span>\";\n } else {\n html += \"<span style='font-weight:normal; font-size:10pt;'> – </span>\";\n }\n\n html += time;\n html += \"</div>\";\n return html;\n };\n\n TimeControl.prototype.set_value = function (node, value, ev, config) {\n var cfg = config;\n var s = node.getElementsByTagName(\"select\");\n var map = config._time_format_order;\n\n if (cfg.auto_end_date) {\n var _update_lightbox_select = function _update_lightbox_select() {\n start_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\n end_date = gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n\n gantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n };\n\n for (var i = 0; i < 4; i++) {\n s[i].onchange = _update_lightbox_select;\n }\n }\n\n var mapping = gantt._resolve_default_mapping(config);\n\n if (typeof mapping === \"string\") mapping = {\n start_date: mapping\n };\n var start_date = ev[mapping.start_date] || new Date();\n var end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n\n gantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\n gantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n };\n\n TimeControl.prototype.get_value = function (node, ev, config) {\n var selects = node.getElementsByTagName(\"select\");\n var startDate;\n var map = config._time_format_order;\n\n function _getEndDate(selects, map, startDate) {\n var endDate = gantt.form_blocks.getTimePickerValue(selects, config, map.size); // GS-1010: We need to add a way to obtain exact end_date for validation\n\n if (endDate <= startDate) {\n // when end date seems wrong\n if (config.autofix_end !== false || config.single_date) {\n // auto correct it in two cases - when the auto correction is not disabled, or when we have 'single date' control and the user don't have the UI to specify the end date\n return gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\n }\n }\n\n return endDate;\n }\n\n startDate = gantt.form_blocks.getTimePickerValue(selects, config);\n\n if (typeof gantt._resolve_default_mapping(config) === \"string\") {\n return startDate;\n }\n\n return {\n start_date: startDate,\n end_date: _getEndDate(selects, map, startDate)\n };\n };\n\n TimeControl.prototype.focus = function (node) {\n gantt._focus(node.getElementsByTagName(\"select\")[0]);\n };\n\n return TimeControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TextareaControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextareaControl, _super);\n\n TextareaControl.prototype.render = function (sns) {\n var height = (sns.height || \"130\") + \"px\";\n return \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'><textarea></textarea></div>\";\n };\n\n TextareaControl.prototype.set_value = function (node, value) {\n gantt.form_blocks.textarea._get_input(node).value = value || \"\";\n };\n\n TextareaControl.prototype.get_value = function (node) {\n return gantt.form_blocks.textarea._get_input(node).value;\n };\n\n TextareaControl.prototype.focus = function (node) {\n var a = gantt.form_blocks.textarea._get_input(node);\n\n gantt._focus(a, true);\n };\n\n TextareaControl.prototype._get_input = function (node) {\n return node.querySelector(\"textarea\");\n };\n\n return TextareaControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TemplateControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TemplateControl, _super);\n\n TemplateControl.prototype.render = function (sns) {\n var height = (sns.height || \"30\") + \"px\";\n return \"<div class='gantt_cal_ltext gantt_cal_template gantt_section_\" + sns.name + \"' style='height:\" + height + \";'></div>\";\n };\n\n TemplateControl.prototype.set_value = function (node, value) {\n node.innerHTML = value || \"\";\n };\n\n TemplateControl.prototype.get_value = function (node) {\n return node.innerHTML || \"\";\n };\n\n TemplateControl.prototype.focus = function () {};\n\n return TemplateControl;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (gantt) {\n var domHelpers = require(\"../utils/dom_helpers\");\n\n var helpers = require(\"../../../utils/helpers\");\n\n var TemplateControl = require(\"./controls/template_control\")(gantt);\n\n var TextareaControl = require(\"./controls/textarea_control\")(gantt);\n\n var TimeControl = require(\"./controls/time_control\")(gantt);\n\n var SelectControl = require(\"./controls/select_control\")(gantt);\n\n var CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\n\n var RadioControl = require(\"./controls/radio_control\")(gantt);\n\n var DurationControl = require(\"./controls/duration_control\")(gantt);\n\n var ParentControl = require(\"./controls/parent_control\")(gantt);\n\n var ResourcesControl = require(\"./controls/resources_control\")(gantt);\n\n var ConstraintControl = require(\"./controls/constraint_control\")(gantt);\n\n var TypeselectControl = require(\"./controls/typeselect_control\")(gantt);\n\n gantt._lightbox_methods = {};\n gantt._lightbox_template = \"<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span></div><div class='gantt_cal_larea'></div>\"; // GS-1952. Attaching the lightbox to the BODY element is not considered secure.\n // Attach it to Gantt container for Salesforce and other secure environments\n\n gantt._lightbox_root = gantt.$root;\n\n function setParentNode() {\n var cspEnvironment = gantt.config.csp === true;\n var salesforceEnvironment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"] || '$shadowResolver$' in document.body;\n\n if (cspEnvironment || salesforceEnvironment) {\n gantt._lightbox_root = gantt.$root;\n } else {\n gantt._lightbox_root = document.body;\n }\n } //TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"lightbox\", function () {\n return {\n lightbox: gantt._lightbox_id\n };\n });\n\n gantt.showLightbox = function (id) {\n if (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n var task = this.getTask(id);\n var box = this.getLightbox(this.getTaskType(task.type));\n\n this._center_lightbox(box);\n\n this.showCover();\n\n this._fill_lightbox(id, box);\n\n this._waiAria.lightboxVisibleAttr(box);\n\n this.callEvent(\"onLightbox\", [id]);\n };\n\n function _is_chart_visible(gantt) {\n var timeline = gantt.$ui.getView(\"timeline\");\n\n if (timeline && timeline.isVisible()) {\n return true;\n } else {\n return false;\n }\n }\n\n gantt._get_timepicker_step = function () {\n if (this.config.round_dnd_dates) {\n var step;\n\n if (_is_chart_visible(this)) {\n var scale = gantt.getScale();\n step = helpers.getSecondsInUnit(scale.unit) * scale.step / 60; //timepicker step is measured in minutes\n }\n\n if (!step || step >= 60 * 24) {\n step = this.config.time_step;\n }\n\n return step;\n }\n\n return this.config.time_step;\n };\n\n gantt.getLabel = function (property, key) {\n var sections = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sections.length; i++) {\n if (sections[i].map_to == property) {\n var options = sections[i].options;\n\n for (var j = 0; j < options.length; j++) {\n if (options[j].key == key) {\n return options[j].label;\n }\n }\n }\n }\n\n return \"\";\n };\n\n gantt.updateCollection = function (list_name, collection) {\n collection = collection.slice(0);\n var list = gantt.serverList(list_name);\n if (!list) return false;\n list.splice(0, list.length);\n list.push.apply(list, collection || []);\n gantt.resetLightbox();\n };\n\n gantt.getLightboxType = function () {\n return this.getTaskType(this._lightbox_type);\n };\n\n gantt.getLightbox = function (type) {\n var lightboxDiv;\n var fullWidth;\n var html;\n var sns;\n var ds;\n var classNames = \"\";\n setParentNode();\n if (type === undefined) type = this.getLightboxType();\n\n if (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n this._lightbox_type = this.getTaskType(type);\n lightboxDiv = document.createElement(\"div\");\n classNames = \"gantt_cal_light\";\n fullWidth = this._is_lightbox_timepicker();\n if (gantt.config.wide_form || fullWidth) classNames += \" gantt_cal_light_wide\";\n\n if (fullWidth) {\n gantt.config.wide_form = true;\n classNames += \" gantt_cal_light_full\";\n }\n\n lightboxDiv.className = classNames;\n lightboxDiv.style.visibility = \"hidden\";\n html = this._lightbox_template;\n html += getHtmlButtons(this.config.buttons_left);\n html += getHtmlButtons(this.config.buttons_right, true);\n lightboxDiv.innerHTML = html;\n\n gantt._waiAria.lightboxAttr(lightboxDiv);\n\n if (gantt.config.drag_lightbox) {\n lightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\n lightboxDiv.firstChild.ontouchstart = function (e) {\n gantt._ready_to_dnd(e.touches[0]);\n };\n\n lightboxDiv.firstChild.onselectstart = function () {\n return false;\n };\n\n lightboxDiv.firstChild.style.cursor = \"pointer\";\n\n gantt._init_dnd_events();\n } // GS-1428: If there is lightbox node, we need to remove it from the DOM\n\n\n if (this._lightbox) {\n this.resetLightbox();\n }\n\n gantt._lightbox_root.insertBefore(lightboxDiv, gantt._lightbox_root.firstChild);\n\n this._lightbox = lightboxDiv;\n sns = this._get_typed_lightbox_config(type);\n html = this._render_sections(sns);\n ds = lightboxDiv.querySelector(\"div.gantt_cal_larea\"); //GS-1131. If gantt_cal_larea is displayed, Firefox renders buttons incorrectly;\n\n var backup_overflow = ds.style.overflow;\n ds.style.overflow = 'hidden';\n ds.innerHTML = html;\n bindLabelsToInputs(sns); //sizes\n\n this.resizeLightbox();\n ds.style.overflow = backup_overflow;\n\n this._init_lightbox_events(this);\n\n lightboxDiv.style.display = \"none\";\n lightboxDiv.style.visibility = \"visible\";\n }\n\n return this._lightbox;\n };\n\n gantt._render_sections = function (sns) {\n var html = \"\";\n\n for (var i = 0; i < sns.length; i++) {\n var block = this.form_blocks[sns[i].type];\n if (!block) continue; //ignore incorrect blocks\n\n sns[i].id = \"area_\" + this.uid();\n var display = sns[i].hidden ? \" style='display:none'\" : \"\";\n var button = \"\";\n\n if (sns[i].button) {\n button = \"<div class='gantt_custom_button' data-index='\" + i + \"'><div class='gantt_custom_button_\" + sns[i].button + \"'></div><div class='gantt_custom_button_label'>\" + this.locale.labels[\"button_\" + sns[i].button] + \"</div></div>\";\n }\n\n if (this.config.wide_form) {\n html += \"<div class='gantt_wrap_section' \" + display + \">\";\n }\n\n html += \"<div id='\" + sns[i].id + \"' class='gantt_cal_lsection'><label>\" + button + this.locale.labels[\"section_\" + sns[i].name] + \"</label></div>\" + block.render.call(this, sns[i]);\n html += \"</div>\";\n }\n\n return html;\n };\n\n gantt.resizeLightbox = function () {\n if (!this._lightbox) return;\n\n var con = this._lightbox.querySelector(\".gantt_cal_larea\");\n\n con.style.height = \"0px\";\n con.style.height = con.scrollHeight + \"px\";\n this._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n con.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n };\n\n gantt._center_lightbox = function (box) {\n if (box) {\n box.style.display = \"block\";\n var scroll_top = window.pageYOffset || gantt._lightbox_root.scrollTop || document.documentElement.scrollTop;\n var scroll_left = window.pageXOffset || gantt._lightbox_root.scrollLeft || document.documentElement.scrollLeft;\n var view_height = window.innerHeight || document.documentElement.clientHeight;\n if (scroll_top) // if vertical scroll on window\n box.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";else // vertical scroll on body\n box.style.top = Math.round(Math.max((view_height - box.offsetHeight) / 2, 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n // not quite accurate but used for compatibility reasons\n\n if (document.documentElement.scrollWidth > gantt._lightbox_root.offsetWidth) // if horizontal scroll on the window\n box.style.left = Math.round(scroll_left + (gantt._lightbox_root.offsetWidth - box.offsetWidth) / 2) + \"px\";else // horizontal scroll on the body\n box.style.left = Math.round((gantt._lightbox_root.offsetWidth - box.offsetWidth) / 2) + \"px\";\n }\n };\n\n gantt.showCover = function () {\n if (this._cover) return;\n this._cover = document.createElement(\"DIV\");\n this._cover.className = \"gantt_cal_cover\";\n var rootElement = gantt._lightbox_root || gantt.$root;\n rootElement.appendChild(this._cover);\n };\n\n gantt.event(window, \"deviceorientation\", function () {\n if (gantt.getState().lightbox) {\n gantt._center_lightbox(gantt.getLightbox());\n }\n });\n\n gantt._init_lightbox_events = function () {\n gantt.lightbox_events = {};\n\n gantt.lightbox_events.gantt_save_btn = function () {\n gantt._save_lightbox();\n };\n\n gantt.lightbox_events.gantt_delete_btn = function () {\n gantt._lightbox_new_type = null;\n if (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id])) return;\n\n if (gantt.isTaskExists(gantt._lightbox_id)) {\n gantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n } else {\n gantt.hideLightbox();\n }\n };\n\n gantt.lightbox_events.gantt_cancel_btn = function () {\n gantt._cancel_lightbox();\n };\n\n gantt.lightbox_events[\"default\"] = function (e, src) {\n if (src.getAttribute(\"data-dhx-button\")) {\n gantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n } else {\n var index, block, sec;\n var className = domHelpers.getClassName(src);\n\n if (className.indexOf(\"gantt_custom_button\") != -1) {\n if (className.indexOf(\"gantt_custom_button_\") != -1) {\n index = src.parentNode.getAttribute(\"data-index\");\n sec = src;\n\n while (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n sec = sec.parentNode;\n }\n } else {\n index = src.getAttribute(\"data-index\");\n sec = src.parentNode;\n src = src.firstChild;\n }\n }\n\n var sections = gantt._get_typed_lightbox_config();\n\n if (index) {\n index = index * 1;\n block = gantt.form_blocks[sections[index * 1].type];\n block.button_click(index, src, sec, sec.nextSibling);\n }\n }\n };\n\n this.event(gantt.getLightbox(), \"click\", function (e) {\n e = e || window.event;\n var src = domHelpers.getTargetNode(e);\n var className = domHelpers.getClassName(src);\n\n if (!className) {\n src = src.previousSibling;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n src = src.firstChild;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className) {\n var func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n return func(e, src);\n }\n\n return false;\n });\n\n gantt.getLightbox().onkeydown = function (e) {\n var event = e || window.event;\n var target = e.target || e.srcElement;\n var buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n switch ((e || event).keyCode) {\n case gantt.constants.KEY_CODES.SPACE:\n {\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n }\n\n break;\n }\n\n case gantt.keys.edit_save:\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n } else {\n gantt._save_lightbox();\n }\n\n break;\n\n case gantt.keys.edit_cancel:\n gantt._cancel_lightbox();\n\n break;\n\n default:\n break;\n }\n };\n };\n\n gantt._cancel_lightbox = function () {\n var task = this.getLightboxValues();\n this.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\n if (gantt.isTaskExists(task.id) && task.$new) {\n this.silent(function () {\n gantt.$data.tasksStore.removeItem(task.id);\n\n gantt._update_flags(task.id, null);\n });\n this.refreshData();\n }\n\n this.hideLightbox();\n };\n\n gantt._save_lightbox = function () {\n var task = this.getLightboxValues();\n if (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new])) return; // GS-2170. Do not recalculate the indexes and dates of other tasks\n // as they will be recalculated in the `refreshData`\n\n gantt.$data.tasksStore._skipTaskRecalculation = \"lightbox\";\n\n if (task.$new) {\n delete task.$new;\n this.addTask(task, task.parent, this.getTaskIndex(task.id));\n } else if (this.isTaskExists(task.id)) {\n this.mixin(this.getTask(task.id), task, true);\n this.refreshTask(task.id);\n this.updateTask(task.id);\n }\n\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n this.refreshData(); // TODO: do we need any blockable events here to prevent closing lightbox?\n\n this.hideLightbox();\n };\n\n gantt._resolve_default_mapping = function (section) {\n var mapping = section.map_to;\n var time_controls = {\n \"time\": true,\n \"time_optional\": true,\n \"duration\": true,\n \"duration_optional\": true\n };\n\n if (time_controls[section.type]) {\n if (section.map_to == \"auto\") {\n mapping = {\n start_date: \"start_date\",\n end_date: \"end_date\",\n duration: \"duration\"\n };\n } else if (typeof section.map_to === \"string\") {\n mapping = {\n start_date: section.map_to\n };\n }\n } else if (section.type === \"constraint\") {\n if (!section.map_to || typeof section.map_to === \"string\") {\n mapping = {\n constraint_type: \"constraint_type\",\n constraint_date: \"constraint_date\"\n };\n }\n }\n\n return mapping;\n };\n\n gantt.getLightboxValues = function () {\n var task = {};\n\n if (gantt.isTaskExists(this._lightbox_id)) {\n task = this.mixin({}, this.getTask(this._lightbox_id));\n }\n\n var sns = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sns.length; i++) {\n var node = gantt._lightbox_root.querySelector(\"#\" + sns[i].id);\n\n node = node ? node.nextSibling : node;\n var block = this.form_blocks[sns[i].type];\n if (!block) continue;\n var res = block.get_value.call(this, node, task, sns[i]);\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n if (typeof map_to == \"string\" && map_to != \"auto\") {\n task[map_to] = res;\n } else if (_typeof(map_to) == \"object\") {\n for (var property in map_to) {\n if (map_to[property]) task[map_to[property]] = res[property];\n }\n }\n } // GS-1282 We need to preserve the task type even if the lightbox doesn't have the typeselect section\n\n\n if (gantt._lightbox_new_type == \"task\") {\n task.type = gantt.config.types.task;\n gantt._lightbox_new_type = null;\n }\n\n return task;\n };\n\n gantt.hideLightbox = function () {\n var box = this.getLightbox();\n if (box) box.style.display = \"none\";\n\n this._waiAria.lightboxHiddenAttr(box);\n\n this._lightbox_id = null;\n this.hideCover();\n this.callEvent(\"onAfterLightbox\", []);\n };\n\n gantt.hideCover = function () {\n if (this._cover) this._cover.parentNode.removeChild(this._cover);\n this._cover = null;\n };\n\n gantt.resetLightbox = function () {\n if (gantt._lightbox && !gantt._custom_lightbox) gantt._lightbox.parentNode.removeChild(gantt._lightbox);\n gantt._lightbox = null;\n gantt.hideCover();\n };\n\n gantt._set_lightbox_values = function (data, box) {\n var task = data;\n var s = box.getElementsByTagName(\"span\");\n var lightboxHeader = [];\n\n if (gantt.templates.lightbox_header) {\n lightboxHeader.push(\"\");\n lightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n s[1].innerHTML = \"\";\n s[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n } else {\n lightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n lightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\n s[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n s[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n }\n\n s[1].innerHTML = lightboxHeader[0];\n s[2].innerHTML = lightboxHeader[1];\n\n gantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n var sns = this._get_typed_lightbox_config(this.getLightboxType());\n\n for (var i = 0; i < sns.length; i++) {\n var section = sns[i];\n\n if (!this.form_blocks[section.type]) {\n continue; //skip incorrect sections, same check is done during rendering\n }\n\n var node = gantt._lightbox_root.querySelector(\"#\" + section.id).nextSibling;\n\n var block = this.form_blocks[section.type];\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n var value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n block.set_value.call(gantt, node, value, task, section);\n if (section.focus) block.focus.call(gantt, node);\n }\n\n if (gantt.isTaskExists(data.id)) {\n gantt._lightbox_id = data.id;\n }\n };\n\n gantt._fill_lightbox = function (id, box) {\n var task = this.getTask(id);\n\n this._set_lightbox_values(task, box);\n };\n\n gantt.getLightboxSection = function (name) {\n var config = this._get_typed_lightbox_config();\n\n var i = 0;\n\n for (i; i < config.length; i++) {\n if (config[i].name == name) break;\n }\n\n var section = config[i];\n if (!section) return null;\n if (!this._lightbox) this.getLightbox();\n\n var header = gantt._lightbox_root.querySelector(\"#\" + section.id);\n\n var node = header.nextSibling;\n var result = {\n section: section,\n header: header,\n node: node,\n getValue: function getValue(ev) {\n return gantt.form_blocks[section.type].get_value.call(gantt, node, ev || {}, section);\n },\n setValue: function setValue(value, ev) {\n return gantt.form_blocks[section.type].set_value.call(gantt, node, value, ev || {}, section);\n }\n };\n var handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n return handler ? handler(result) : result;\n };\n\n gantt._lightbox_methods.get_template_control = function (result) {\n result.control = result.node;\n return result;\n };\n\n gantt._lightbox_methods.get_select_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_textarea_control = function (result) {\n result.control = result.node.getElementsByTagName(\"textarea\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_time_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\"); // array\n\n return result;\n };\n\n gantt._init_dnd_events = function () {\n var eventElement = gantt._lightbox_root;\n this.event(eventElement, \"mousemove\", gantt._move_while_dnd);\n this.event(eventElement, \"mouseup\", gantt._finish_dnd);\n this.event(eventElement, \"touchmove\", function (e) {\n gantt._move_while_dnd(e.touches[0]);\n });\n this.event(eventElement, \"touchend\", function (e) {\n gantt._finish_dnd(e.touches[0]);\n }); // GS-1952: In Salesforce environment, the lightbox is attached to the Gantt container. \n // So when Gantt is reinitialized, the events are no longer attached to the Gantt container.\n // gantt._init_dnd_events = function () {\n // };\n };\n\n gantt._move_while_dnd = function (event) {\n if (gantt._dnd_start_lb) {\n if (!document.gantt_unselectable) {\n gantt._lightbox_root.className += \" gantt_unselectable\";\n document.gantt_unselectable = true;\n }\n\n var lb = gantt.getLightbox();\n var now = [event.pageX, event.pageY];\n lb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n lb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n }\n };\n\n gantt._ready_to_dnd = function (event) {\n var lb = gantt.getLightbox();\n gantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n gantt._dnd_start_lb = [event.pageX, event.pageY];\n };\n\n gantt._finish_dnd = function () {\n if (gantt._lb_start) {\n gantt._lb_start = gantt._dnd_start_lb = false;\n gantt._lightbox_root.className = gantt._lightbox_root.className.replace(\" gantt_unselectable\", \"\");\n document.gantt_unselectable = false;\n }\n };\n\n gantt._focus = function (node, select) {\n if (node && node.focus) {\n if (gantt.config.touch) {//do not focus editor, to prevent auto-zoom\n } else {\n try {\n if (select && node.select) node.select();\n node.focus();\n } catch (e) {// silent errors\n }\n }\n }\n };\n\n gantt.form_blocks = {\n getTimePicker: function getTimePicker(sns, hidden) {\n var html = \"\";\n var cfg = this.config;\n var i;\n var options;\n var ariaAttrs;\n var readonly;\n var display;\n var settings = {\n first: 0,\n last: 24 * 60,\n date: this.date.date_part(new Date(gantt._min_date.valueOf())),\n timeFormat: getTimeFormat(sns)\n }; // map: default order => real one\n\n sns._time_format_order = {\n size: 0\n };\n\n if (gantt.config.limit_time_select) {\n settings.first = 60 * cfg.first_hour;\n settings.last = 60 * cfg.last_hour + 1;\n settings.date.setHours(cfg.first_hour);\n }\n\n for (i = 0; i < settings.timeFormat.length; i++) {\n // adding spaces between selects\n if (i > 0) {\n html += \" \";\n }\n\n options = getHtmlTimePickerOptions(sns, i, settings);\n\n if (options) {\n ariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n display = hidden ? \" style='display:none' \" : \"\";\n html += \"<select \" + readonly + display + ariaAttrs + \">\" + options + \"</select>\";\n }\n }\n\n return html;\n },\n getTimePickerValue: function getTimePickerValue(selects, config, offset) {\n var map = config._time_format_order;\n var needSetTime = gantt.defined(map[3]);\n var time;\n var hours = 0;\n var minutes = 0;\n var mapOffset = offset || 0;\n\n if (needSetTime) {\n time = parseInt(selects[map[3] + mapOffset].value, 10);\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n },\n _fill_lightbox_select: function _fill_lightbox_select(s, i, d, map) {\n s[i + map[0]].value = d.getDate();\n s[i + map[1]].value = d.getMonth();\n s[i + map[2]].value = d.getFullYear();\n\n if (gantt.defined(map[3])) {\n var v = d.getHours() * 60 + d.getMinutes();\n v = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n var input = s[i + map[3]];\n input.value = v; //in case option not shown\n\n input.setAttribute(\"data-value\", v);\n }\n },\n template: new TemplateControl(),\n textarea: new TextareaControl(),\n select: new SelectControl(),\n time: new TimeControl(),\n duration: new DurationControl(),\n parent: new ParentControl(),\n radio: new RadioControl(),\n checkbox: new CheckboxControl(),\n resources: new ResourcesControl(),\n constraint: new ConstraintControl(),\n typeselect: new TypeselectControl()\n };\n\n gantt._is_lightbox_timepicker = function () {\n var s = this._get_typed_lightbox_config();\n\n for (var i = 0; i < s.length; i++) {\n if (s[i].name == \"time\" && s[i].type == \"time\") return true;\n }\n\n return false;\n };\n\n gantt._simple_confirm = function (message, title, callback, ok) {\n if (!message) return callback();\n var opts = {\n text: message\n };\n if (title) opts.title = title;\n\n if (ok) {\n opts.ok = ok;\n }\n\n if (callback) {\n opts.callback = function (result) {\n if (result) callback();\n };\n }\n\n gantt.confirm(opts);\n };\n\n function _get_type_name(type_value) {\n for (var i in this.config.types) {\n if (this.config.types[i] == type_value) {\n return i;\n }\n }\n\n return \"task\";\n }\n\n gantt._get_typed_lightbox_config = function (type) {\n if (type === undefined) {\n type = this.getLightboxType();\n }\n\n var field = _get_type_name.call(this, type);\n\n if (gantt.config.lightbox[field + \"_sections\"]) {\n return gantt.config.lightbox[field + \"_sections\"];\n } else {\n return gantt.config.lightbox.sections;\n }\n };\n\n gantt._silent_redraw_lightbox = function (type) {\n var oldType = this.getLightboxType();\n\n if (this.getState().lightbox) {\n var taskId = this.getState().lightbox;\n var formData = this.getLightboxValues(),\n task = this.copy(this.getTask(taskId));\n this.resetLightbox();\n var updTask = this.mixin(task, formData, true);\n var box = this.getLightbox(type ? type : undefined);\n\n this._center_lightbox(this.getLightbox());\n\n this._set_lightbox_values(updTask, box);\n\n this.showCover();\n } else {\n this.resetLightbox();\n this.getLightbox(type ? type : undefined);\n }\n\n this.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n };\n\n function bindLabelsToInputs(sns) {\n var section;\n var label;\n var labelBlock;\n var inputBlock;\n var input;\n var i;\n\n for (i = 0; i < sns.length; i++) {\n section = sns[i];\n labelBlock = gantt._lightbox_root.querySelector(\"#\" + section.id);\n if (!section.id || !labelBlock) continue;\n label = labelBlock.querySelector(\"label\");\n inputBlock = labelBlock.nextSibling;\n if (!inputBlock) continue;\n input = inputBlock.querySelector(\"input, select, textarea\");\n\n if (input) {\n input.id = input.id || \"input_\" + gantt.uid();\n section.inputId = input.id;\n label.setAttribute(\"for\", section.inputId);\n }\n }\n }\n\n function getHtmlButtons(buttons, floatRight) {\n var button;\n var ariaAttr;\n var html = \"\";\n var i;\n\n for (i = 0; i < buttons.length; i++) {\n // needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n button = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n ariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n html += \"<div \" + ariaAttr + \" class='gantt_btn_set gantt_left_btn_set \" + button + \"_set'\" + (floatRight ? \" style='float:right;'\" : \"\") + \"><div dhx_button='1' data-dhx-button='1' class='\" + button + \"'></div><div>\" + gantt.locale.labels[button] + \"</div></div>\";\n }\n\n return html;\n }\n\n function getTimeFormat(sns) {\n var scale;\n var unit;\n var result;\n if (sns.time_format) return sns.time_format; // default order\n\n result = [\"%d\", \"%m\", \"%Y\"];\n scale = gantt.getScale();\n unit = scale ? scale.unit : gantt.config.duration_unit;\n\n if (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n result.push(\"%H:%i\");\n }\n\n return result;\n }\n\n function getHtmlTimePickerOptions(sns, index, settings) {\n var range;\n var offset;\n var start_year;\n var end_year;\n var i;\n var time;\n var diff;\n var tdate;\n var html = \"\";\n\n switch (settings.timeFormat[index]) {\n case \"%Y\":\n sns._time_format_order[2] = index;\n sns._time_format_order.size++; //year\n\n if (sns.year_range) {\n if (!isNaN(sns.year_range)) {\n range = sns.year_range;\n } else if (sns.year_range.push) {\n // if\n start_year = sns.year_range[0];\n end_year = sns.year_range[1];\n }\n }\n\n range = range || 10;\n offset = offset || Math.floor(range / 2);\n start_year = start_year || settings.date.getFullYear() - offset;\n end_year = end_year || gantt.getState().max_date.getFullYear() + offset;\n\n for (i = start_year; i < end_year; i++) {\n html += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n }\n\n break;\n\n case \"%m\":\n sns._time_format_order[1] = index;\n sns._time_format_order.size++; //month\n\n for (i = 0; i < 12; i++) {\n html += \"<option value='\" + i + \"'>\" + gantt.locale.date.month_full[i] + \"</option>\";\n }\n\n break;\n\n case \"%d\":\n sns._time_format_order[0] = index;\n sns._time_format_order.size++; //days\n\n for (i = 1; i < 32; i++) {\n html += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n }\n\n break;\n\n case \"%H:%i\":\n // var last = 24*60, first = 0;\n sns._time_format_order[3] = index;\n sns._time_format_order.size++; //hours\n\n i = settings.first;\n tdate = settings.date.getDate();\n sns._time_values = [];\n\n while (i < settings.last) {\n time = gantt.templates.time_picker(settings.date);\n html += \"<option value='\" + i + \"'>\" + time + \"</option>\";\n\n sns._time_values.push(i);\n\n settings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\n diff = settings.date.getDate() != tdate ? 1 : 0; // moved or not to the next day\n\n i = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\n }\n\n break;\n\n default:\n break;\n }\n\n return html;\n }\n};","module.exports = function (gantt) {\n gantt.config.touch_drag = 500; //nearly immediate dnd\n\n gantt.config.touch = true;\n gantt.config.touch_feedback = true;\n gantt.config.touch_feedback_duration = 1;\n gantt._prevent_touch_scroll = false;\n\n gantt._touch_feedback = function () {\n if (gantt.config.touch_feedback) {\n if (navigator.vibrate) navigator.vibrate(gantt.config.touch_feedback_duration);\n }\n };\n\n gantt.attachEvent(\"onGanttReady\", addTouchEvents);\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n if (gantt.$container) {\n gantt.attachEvent(\"onGanttRender\", addTouchEvents, {\n once: true\n });\n }\n });\n\n function addTouchEvents() {\n if (gantt.config.touch != \"force\") gantt.config.touch = gantt.config.touch && (navigator.userAgent.indexOf(\"Mobile\") != -1 || navigator.userAgent.indexOf(\"iPad\") != -1 || navigator.userAgent.indexOf(\"Android\") != -1 || navigator.userAgent.indexOf(\"Touch\") != -1) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (gantt.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n gantt._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: ev.target,\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }, function () {\n return false;\n });\n } else if (window.navigator.pointerEnabled) {\n gantt._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }, function (ev) {\n return !ev || ev.pointerType == \"mouse\";\n });\n } else if (window.navigator.msPointerEnabled) {\n gantt._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }, function (ev) {\n return !ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE;\n });\n }\n }\n }\n\n function findTargetView(event) {\n var allViews = gantt.$layout.getCellsByType(\"viewCell\");\n\n for (var i = 0; i < allViews.length; i++) {\n var box = allViews[i].$view.getBoundingClientRect();\n\n if (event.clientX >= box.left && event.clientX <= box.right && event.clientY <= box.bottom && event.clientY >= box.top) {\n return allViews[i];\n }\n }\n }\n\n function getScrollState(view) {\n var scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n var scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n var scrollState = {\n x: null,\n y: null\n };\n\n if (scrollX) {\n var state = scrollX.getScrollState();\n\n if (state.visible) {\n scrollState.x = scrollX.$view.scrollLeft;\n }\n }\n\n if (scrollY) {\n var state = scrollY.getScrollState();\n\n if (state.visible) {\n scrollState.y = scrollY.$view.scrollTop;\n }\n }\n\n return scrollState;\n }\n\n function scrollView(view, left, top) {\n var scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n var scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n\n if (scrollX) {\n scrollX.scrollTo(left, null);\n }\n\n if (scrollY) {\n scrollY.scrollTo(null, top);\n }\n }\n\n function getTaskDND() {\n var tasksDnD;\n\n if (gantt.$ui.getView(\"timeline\")) {\n tasksDnD = gantt.$ui.getView(\"timeline\")._tasks_dnd;\n }\n\n return tasksDnD;\n }\n\n var touchHandlers = []; //we can't use native scrolling, as we need to sync momentum between different parts\n //so we will block native scroll and use the custom one\n //in future we can add custom momentum\n\n gantt._touch_events = function (names, accessor, ignore) {\n //webkit on android need to be handled separately\n var dblclicktime = 0;\n var actionMode = false;\n var scrollMode = false;\n var actionStart = null;\n var scrollState;\n var longTapTimer = null;\n var currentDndId = null;\n var dndNodes = [];\n var targetView = null;\n var multiTouchEvents = {};\n\n for (var i = 0; i < touchHandlers.length; i++) {\n gantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n }\n\n touchHandlers = []; //touch move\n\n touchHandlers.push([gantt.$container, names[0], function (e) {\n var tasksDnD = getTaskDND();\n if (ignore(e)) return; //ignore common and scrolling moves\n\n if (!actionMode) return;\n if (longTapTimer) clearTimeout(longTapTimer);\n var source = accessor(e);\n\n if (tasksDnD && (tasksDnD.drag.id || tasksDnD.drag.start_drag)) {\n tasksDnD.on_mouse_move(source);\n if (e.preventDefault) e.preventDefault();\n e.cancelBubble = true;\n return false;\n }\n\n if (!gantt._prevent_touch_scroll) {\n if (source && actionStart) {\n var dx = actionStart.pageX - source.pageX;\n var dy = actionStart.pageY - source.pageY;\n\n if (!scrollMode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\n scrollMode = true; //gantt._touch_scroll_active = scroll_mode = true;\n\n dblclicktime = 0;\n\n if (targetView) {\n scrollState = getScrollState(targetView);\n } else {\n scrollState = gantt.getScrollState();\n }\n }\n\n if (scrollMode) {\n var newScrollState;\n var scrollX = scrollState.x + dx;\n var scrollY = scrollState.y + dy;\n\n if (targetView) {\n scrollView(targetView, scrollX, scrollY);\n newScrollState = getScrollState(targetView);\n } else {\n gantt.scrollTo(scrollX, scrollY);\n newScrollState = gantt.getScrollState();\n }\n\n if (scrollState.x != newScrollState.x && dy > 2 * dx || scrollState.y != newScrollState.y && dx > 2 * dy) {\n return block_action(e);\n }\n }\n }\n\n return block_action(e);\n }\n\n return true;\n }]); // prevent page drag on touch move\n\n try {\n document.addEventListener('touchmove', function (e) {\n if (gantt._touch_drag) {\n block_action(e);\n }\n }, {\n passive: false\n });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(\"Cannot prevent touch event for the page drag\");\n } //block touch context menu in IE10\n\n\n touchHandlers.push([this.$container, \"contextmenu\", function (e) {\n if (actionMode) return block_action(e);\n }]); //touch start\n\n touchHandlers.push([this.$container, names[1], function (e) {\n multiTouchEvents = e.touches.length; // block pull-to-refresh\n\n if (document && document.body) {\n document.body.classList.add(\"gantt_touch_active\");\n }\n\n if (ignore(e)) return;\n\n if (e.touches && e.touches.length > 1) {\n actionMode = false;\n return;\n }\n\n actionStart = accessor(e);\n targetView = findTargetView(actionStart);\n\n if (!gantt._locate_css(actionStart, \"gantt_hor_scroll\") && !gantt._locate_css(actionStart, \"gantt_ver_scroll\")) {\n actionMode = true;\n }\n\n var tasksDnD = getTaskDND(); //long tap\n\n longTapTimer = setTimeout(function () {\n var taskId = gantt.locate(actionStart);\n\n if (tasksDnD && taskId && !gantt._locate_css(actionStart, \"gantt_link_control\") && !gantt._locate_css(actionStart, \"gantt_grid_data\")) {\n tasksDnD.on_mouse_down(actionStart);\n\n if (tasksDnD.drag && tasksDnD.drag.start_drag) {\n // we need that as touch events break if the target node is removed from the DOM\n cloneTaskRendered(taskId);\n\n tasksDnD._start_dnd(actionStart);\n\n gantt._touch_drag = true;\n gantt.refreshTask(taskId);\n\n gantt._touch_feedback();\n }\n }\n\n longTapTimer = null;\n }, gantt.config.touch_drag);\n }]); //touch end\n\n touchHandlers.push([this.$container, names[2], function (e) {\n if (document && document.body) {\n document.body.classList.remove(\"gantt_touch_active\");\n }\n\n if (ignore(e)) return;\n if (longTapTimer) clearTimeout(longTapTimer);\n gantt._touch_drag = false;\n actionMode = false;\n var source = accessor(e);\n var tasksDnD = getTaskDND();\n if (tasksDnD) tasksDnD.on_mouse_up(source);\n\n if (currentDndId && gantt.isTaskExists(currentDndId)) {\n gantt.refreshTask(currentDndId);\n\n if (dndNodes.length) {\n dndNodes.forEach(function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n\n gantt._touch_feedback();\n }\n } //gantt._touch_scroll_active = action_mode = scroll_mode = false;\n\n\n actionMode = scrollMode = false;\n dndNodes = [];\n currentDndId = null; //dbl-tap handling\n\n if (actionStart && dblclicktime) {\n var now = new Date(); // doubletap shouldn't happen with multitouch\n\n if (now - dblclicktime < 500 && multiTouchEvents <= 1) {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.onDoubleClick(actionStart);\n block_action(e);\n } else dblclicktime = now;\n } else {\n dblclicktime = new Date();\n }\n }]);\n\n for (var i = 0; i < touchHandlers.length; i++) {\n gantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n } //common helper, prevents event\n\n\n function block_action(e) {\n if (e && e.preventDefault && e.cancelable) {\n e.preventDefault();\n }\n\n e.cancelBubble = true;\n return false;\n }\n\n function cloneTaskRendered(taskId) {\n var renders = gantt._getTaskLayers();\n\n var task = gantt.getTask(taskId);\n\n if (task) {\n var visible = gantt.isTaskVisible(taskId);\n\n if (visible) {\n currentDndId = taskId;\n\n for (var _i = 0; _i < renders.length; _i++) {\n task = renders[_i].rendered[taskId];\n\n if (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\n var copy = task.cloneNode(true);\n dndNodes.push(task);\n renders[_i].rendered[taskId] = copy;\n task.style.display = \"none\";\n copy.className += \" gantt_drag_move \";\n task.parentNode.appendChild(copy); //return copy;\n }\n }\n } else if (task.$split_subtask) {\n var renderedParent = task.$rendered_parent;\n visible = gantt.isTaskVisible(renderedParent);\n\n if (!visible) {\n return;\n }\n\n currentDndId = taskId;\n\n for (var _i2 = 0; _i2 < renders.length; _i2++) {\n var parent = renders[_i2].rendered[renderedParent];\n var taskNode = void 0;\n\n if (parent && parent.childNodes) {\n taskNode = parent.querySelector(\"[\".concat(gantt.config.task_attribute, \"=\\\"\").concat(task.id, \"\\\"]\"));\n }\n\n if (taskNode) {\n // move the child node to a different parent as the task bar will be repainted\n // and the initial node will be lost\n var _copy = taskNode.cloneNode(true);\n\n taskNode.parentNode.appendChild(_copy);\n gantt.$task_bars.appendChild(taskNode);\n taskNode.style.display = \"none\"; // don't add the node as rendered otherwise it will be lost:\n // renders[i].rendered[taskId] = taskNode;\n // instead, add it to dndNodes as its elements will be removed after drag\n\n dndNodes.push(taskNode);\n taskNode = null;\n }\n }\n }\n }\n }\n };\n};","import * as env from \"../../../utils/env\";\r\nimport * as eventable from \"../../../utils/eventable\";\r\nimport { IScale, TModifierKeys } from \"../../common/config\";\r\n\r\ninterface ITimelineZoomConfig {\r\n\thandler?: (e: Event) => {};\r\n\tstartDate?: Date;\r\n\tendDate?: Date;\r\n\tlevels: IZoomLevel[];\r\n\tactiveLevelIndex?: number;\r\n\twidthStep?: number;\r\n\tminColumnWidth?: number;\r\n\tmaxColumnWidth?: number;\r\n\tuseKey?: \"ctrlKey\" | \"altKey\" | \"shiftKey\";\r\n\ttrigger?: \"wheel\" | null | undefined;\r\n\telement?: Element | (() => Element);\r\n}\r\n\r\nconst USE_KEY = [\"ctrlKey\", \"altKey\", \"shiftKey\", \"metaKey\"];\r\n\r\ninterface IZoomLevel {\r\n\tname?: string;\r\n\tscale_height?: number;\r\n\tmin_column_width: number;\r\n\tscales: IScale[];\r\n}\r\n\r\nconst _defaultScales = [\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"month\",\r\n\t\t\tdate: \"%M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d\",\r\n\t\t\tstep: 1\r\n\t\t}\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t}\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"hour\",\r\n\t\t\tdate: \"%H:00\",\r\n\t\t\tstep: 8\r\n\t\t},\r\n\t],\r\n\t[\r\n\t\t{\r\n\t\t\tunit: \"day\",\r\n\t\t\tdate: \"%d %M\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\tunit: \"hour\",\r\n\t\t\tdate: \"%H:00\",\r\n\t\t\tstep: 1\r\n\t\t},\r\n\t],\r\n];\r\n\r\nexport default class TimelineZoom {\r\n\tpublic attachEvent: (eventName: string, handler: () => void) => string;\r\n\tpublic callEvent: (eventName: string, args: any[]) => any;\r\n\tpublic detachEvent: (eventName: string) => any;\r\n\tprotected _initialStartDate: Date;\r\n\tprotected _initialEndDate: Date;\r\n\tprotected _activeLevelIndex: number;\r\n\tprotected _levels: IZoomLevel[];\r\n\tprotected _handler: (e: any) => void;\r\n\tprotected $gantt;\r\n\tprotected _widthStep: number;\r\n\tprotected _minColumnWidth: number;\r\n\tprotected _maxColumnWidth: number;\r\n\tprotected _useKey: TModifierKeys;\r\n\tprotected _visibleDate: Date;\r\n\tprotected _initialized: boolean;\r\n\tprotected _domEvents: any;\r\n\r\n\tconstructor(gantt) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis._domEvents = this.$gantt._createDomEventScope();\r\n\t}\r\n\r\n\tpublic init(config: ITimelineZoomConfig) {\r\n\t\t// GS-1354 and GS-1318. If we check the headless mode using the function,\r\n\t\t// it will return false when Gantt is not initialized, but we may want to do it later\r\n\t\tif(this.$gantt.env.isNode){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._initialStartDate = config.startDate;\r\n\t\tthis._initialEndDate = config.endDate;\r\n\t\tthis._activeLevelIndex = config.activeLevelIndex ? config.activeLevelIndex : 0;\r\n\t\tthis._levels = this._mapScales(config.levels || _defaultScales);\r\n\t\tthis._handler = config.handler || this._defaultHandler;\r\n\t\tthis._minColumnWidth = config.minColumnWidth || 60;\r\n\t\tthis._maxColumnWidth = config.maxColumnWidth || 240;\r\n\t\tthis._widthStep = config.widthStep || 3/8 * config.minColumnWidth;\r\n\t\tthis._useKey = config.useKey;\r\n\r\n\t\tif(!this._initialized){\r\n\t\t\teventable(this);\r\n\t\t\tthis.$gantt.attachEvent(\"onGanttScroll\", () => {\r\n\t\t\t\tthis._getVisibleDate();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\r\n\t\tif(config.trigger === \"wheel\"){\r\n\t\t\tif(this.$gantt.$root){\r\n\t\t\t\tthis._attachWheelEvent(config);\r\n\t\t\t}else{\r\n\t\t\t\tthis.$gantt.attachEvent(\"onGanttReady\", () => {\r\n\t\t\t\t\tthis._attachWheelEvent(config);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initialized = true;\r\n\t\tthis.setLevel(this._activeLevelIndex);\r\n\t}\r\n\r\n\tpublic zoomIn = () => {\r\n\t\tconst index = this.getCurrentLevel() - 1;\r\n\t\tif(index < 0){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setLevel(index);\r\n\t}\r\n\r\n\tpublic zoomOut = () => {\r\n\t\tconst index = this.getCurrentLevel() + 1;\r\n\t\tif(index > this._levels.length - 1){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setLevel(index);\r\n\t}\r\n\r\n\tpublic getCurrentLevel = () => {\r\n\t\treturn this._activeLevelIndex;\r\n\t}\r\n\r\n\tpublic getLevels = () => {\r\n\t\treturn this._levels;\r\n\t}\r\n\r\n\tpublic setLevel = (level: number|string) => {\r\n\t\tconst zoomLevel = this._getZoomIndexByName(level);\r\n\r\n\t\tif(zoomLevel === -1){\r\n\t\t\tthis.$gantt.assert(zoomLevel !== -1, \"Invalid zoom level for gantt.ext.zoom.setLevel. \" + level + \" is not an expected value.\");\r\n\t\t}\r\n\t\tthis._setLevel(zoomLevel, 0);\r\n\t}\r\n\r\n\tprotected _getZoomIndexByName = (levelName: number|string) => {\r\n\t\tlet zoomLevel:number = -1;\r\n\t\tif(typeof levelName === \"string\"){\r\n\t\t\tif(!isNaN(Number(levelName)) && this._levels[Number(levelName)]){\r\n\t\t\t\tzoomLevel = Number(levelName);\r\n\t\t\t}else{\r\n\t\t\t\tfor(let i = 0; i < this._levels.length; i++){\r\n\t\t\t\t\tif(this._levels[i].name === levelName){\r\n\t\t\t\t\t\tzoomLevel = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tzoomLevel = levelName;\r\n\t\t}\r\n\t\treturn zoomLevel;\r\n\t}\r\n\r\n\tprotected _mapScales(levels: IScale[][] | any): IZoomLevel[]{\r\n\t\treturn levels.map((l) => {\r\n\t\t\tif(Array.isArray(l)){\r\n\t\t\t\treturn {\r\n\t\t\t\t\tscales: l\r\n\t\t\t\t};\r\n\t\t\t}else{\r\n\t\t\t\treturn l;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected _getVisibleDate = () => {\r\n\t\t// GS-1450. Don't try to get the visible date if there is no timeline\r\n\t\tif (!this.$gantt.$task){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst scrollPos = this.$gantt.getScrollState().x;\r\n\t\tconst viewPort = this.$gantt.$task.offsetWidth;\r\n\t\tthis._visibleDate = this.$gantt.dateFromPos(scrollPos + viewPort/2);\r\n\t}\r\n\r\n\tprotected _setLevel = (level: number, cursorOffset: number) => {\r\n\t\tthis._activeLevelIndex = level;\r\n\r\n\t\tconst gantt = this.$gantt;\r\n\t\tconst nextConfig = gantt.copy(this._levels[this._activeLevelIndex]);\r\n\t\tconst chartConfig = gantt.copy(nextConfig);\r\n\t\tdelete chartConfig.name;\r\n\r\n\t\tgantt.mixin(gantt.config, chartConfig, true);\r\n\r\n\t\tconst isRendered = !!gantt.$root && !!gantt.$task;\r\n\r\n\t\tif(isRendered){\r\n\t\t\tif(cursorOffset){\r\n\t\t\t\tconst cursorDate = this.$gantt.dateFromPos(cursorOffset + this.$gantt.getScrollState().x);\r\n\t\t\t\tthis.$gantt.render();\r\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(cursorDate);\r\n\t\t\t\tthis.$gantt.scrollTo(newPosition - cursorOffset);\r\n\t\t\t}else{\r\n\t\t\t\tconst viewPort = this.$gantt.$task.offsetWidth;\r\n\t\t\t\tif(!this._visibleDate){\r\n\t\t\t\t\tthis._getVisibleDate();\r\n\t\t\t\t}\r\n\t\t\t\tconst middleDate = this._visibleDate;\r\n\t\t\t\tthis.$gantt.render();\r\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(middleDate);\r\n\t\t\t\tthis.$gantt.scrollTo(newPosition - viewPort/2);\r\n\t\t\t}\r\n\r\n\t\t\tthis.callEvent(\"onAfterZoom\", [this._activeLevelIndex, nextConfig]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _attachWheelEvent = (config) => {\r\n\t\tconst event = env.isFF ? \"wheel\" : \"mousewheel\";\r\n\t\tlet el: Element;\r\n\t\tif(typeof config.element === \"function\"){\r\n\t\t\tel = config.element();\r\n\t\t}else{\r\n\t\t\tel = config.element as Element;\r\n\t\t}\r\n\t\tif (!el){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(el, event, this.$gantt.bind(function(e) {\r\n\t\t\tif (this._useKey) {\r\n\t\t\t\tif (USE_KEY.indexOf(this._useKey) < 0) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!e[this._useKey]) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (typeof this._handler === \"function\") {\r\n\t\t\t\tthis._handler.apply(this, [e]);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}, this), {passive: false});\r\n\t}\r\n\r\n\tprivate _defaultHandler = (e: any):void => {\r\n\t\tconst timelineOffset = this.$gantt.$task.getBoundingClientRect().x;\r\n\t\tconst cursorOffset = e.clientX - timelineOffset;\r\n\t\tconst wheelY = this.$gantt.env.isFF ? (e.deltaY*-40) : e.wheelDelta;\r\n\t\tlet wheelUp = false;\r\n\t\tif (wheelY > 0) {\r\n\t\t\twheelUp = true;\r\n\t\t}\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tthis._setScaleSettings(wheelUp, cursorOffset);\r\n\t}\r\n\r\n\tprivate _setScaleSettings(wheelUp: boolean, cursorOffset: number) {\r\n\t\tif (wheelUp) {\r\n\t\t\tthis._stepUp(cursorOffset);\r\n\t\t} else {\r\n\t\t\tthis._stepDown(cursorOffset);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setScaleDates = () => {\r\n\t\tif(this._initialStartDate && this._initialEndDate){\r\n\t\t\tthis.$gantt.config.start_date = this._initialStartDate;\r\n\t\t\tthis.$gantt.config.end_date = this._initialEndDate;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _stepUp(cursorOffset) {\r\n\t\tif (this._activeLevelIndex >= this._levels.length - 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextLevel = this._activeLevelIndex;\r\n\t\tthis._setScaleDates();\r\n\r\n\t\tif(this._widthStep){\r\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width + this._widthStep;\r\n\t\t\tif (newColumnWidth > this._maxColumnWidth) {\r\n\t\t\t\tnewColumnWidth = this._minColumnWidth;\r\n\t\t\t\tnextLevel++;\r\n\t\t\t}\r\n\r\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\r\n\t\t}else{\r\n\t\t\tnextLevel++;\r\n\t\t}\r\n\t\tthis._setLevel(nextLevel, cursorOffset);\r\n\t}\r\n\tprivate _stepDown(cursorOffset) {\r\n\t\tif (this._activeLevelIndex < 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextLevel = this._activeLevelIndex;\r\n\t\tthis._setScaleDates();\r\n\r\n\t\tif(this._widthStep){\r\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width - this._widthStep;\r\n\t\t\tif (newColumnWidth < this._minColumnWidth) {\r\n\t\t\t\tnewColumnWidth = this._maxColumnWidth;\r\n\t\t\t\tnextLevel--;\r\n\t\t\t}\r\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\r\n\t\t}else{\r\n\t\t\tnextLevel--;\r\n\t\t}\r\n\t\tthis._setLevel(nextLevel, cursorOffset);\r\n\t}\r\n}","if (window.dhtmlx) {\n if (!window.dhtmlx.attaches) window.dhtmlx.attaches = {};\n\n window.dhtmlx.attaches.attachGantt = function (start, end, gantt) {\n var obj = document.createElement(\"DIV\");\n gantt = gantt || window.gantt;\n obj.id = \"gantt_\" + gantt.uid();\n obj.style.width = \"100%\";\n obj.style.height = \"100%\";\n obj.cmp = \"grid\";\n document.body.appendChild(obj);\n this.attachObject(obj.id);\n this.dataType = \"gantt\";\n this.dataObj = gantt;\n var that = this.vs[this.av];\n that.grid = gantt;\n gantt.init(obj.id, start, end);\n obj.firstChild.style.border = \"none\";\n that.gridId = obj.id;\n that.gridObj = obj;\n var method_name = \"_viewRestore\";\n return this.vs[this[method_name]()].grid;\n };\n}\n\nif (typeof window.dhtmlXCellObject != \"undefined\") {\n window.dhtmlXCellObject.prototype.attachGantt = function (start, end, gantt) {\n gantt = gantt || window.gantt;\n var obj = document.createElement(\"DIV\");\n obj.id = \"gantt_\" + gantt.uid();\n obj.style.width = \"100%\";\n obj.style.height = \"100%\";\n obj.cmp = \"grid\";\n document.body.appendChild(obj);\n this.attachObject(obj.id);\n this.dataType = \"gantt\";\n this.dataObj = gantt;\n gantt.init(obj.id, start, end);\n obj.firstChild.style.border = \"none\";\n obj = null;\n this.callEvent(\"_onContentAttach\", []);\n return this.dataObj;\n };\n}\n\nmodule.exports = null;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nif (window.jQuery) {\n (function ($) {\n var methods = [];\n\n $.fn.dhx_gantt = function (config) {\n config = config || {};\n\n if (typeof config === 'string') {\n if (methods[config]) {\n return methods[config].apply(this, []);\n } else {\n $.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\n }\n } else {\n var views = [];\n this.each(function () {\n if (this && this.getAttribute) {\n if (!this.gantt && !(window.gantt.$root == this)) {\n var newgantt = window.gantt.$container && window.Gantt ? window.Gantt.getGanttInstance() : window.gantt;\n\n for (var key in config) {\n if (key != \"data\") newgantt.config[key] = config[key];\n }\n\n newgantt.init(this);\n if (config.data) newgantt.parse(config.data);\n views.push(newgantt);\n } else views.push(_typeof(this.gantt) == \"object\" ? this.gantt : window.gantt);\n }\n });\n if (views.length === 1) return views[0];\n return views;\n }\n };\n })(window.jQuery);\n}\n\nmodule.exports = null;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isHeadless = require(\"../../../utils/is_headless\");\n\nmodule.exports = function (gantt) {\n var scrollRange = 50,\n scrollStep = 30,\n scrollDelay = 10,\n scrollSpeed = 50;\n var interval = null,\n isMove = false,\n delayTimeout = null,\n startPos = {\n started: false\n },\n eventPos = {};\n\n function isDisplayed(element) {\n return element && domHelpers.isChildOf(element, gantt.$root) && element.offsetHeight;\n }\n\n function getAutoscrollContainer() {\n var element;\n\n if (isDisplayed(gantt.$task)) {\n element = gantt.$task;\n } else if (isDisplayed(gantt.$grid)) {\n element = gantt.$grid;\n } else {\n element = gantt.$root;\n }\n\n return element;\n }\n\n function isScrollState() {\n var dragMarker = !!document.querySelector(\".gantt_drag_marker\");\n var isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\") || !!document.querySelector(\".gantt_drag_marker.gantt_row_grid_resize_area\");\n var isLink = !!document.querySelector(\".gantt_link_direction\");\n var state = gantt.getState();\n var isClickDrag = state.autoscroll;\n isMove = dragMarker && !isResize && !isLink;\n return !(!state.drag_mode && !dragMarker || isResize) || isClickDrag;\n }\n\n function defineDelayTimeout(state) {\n if (delayTimeout) {\n clearTimeout(delayTimeout);\n delayTimeout = null;\n }\n\n if (state) {\n var speed = gantt.config.autoscroll_speed;\n if (speed && speed < 10) // limit speed value to 10\n speed = 10;\n delayTimeout = setTimeout(function () {\n interval = setInterval(tick, speed || scrollSpeed);\n }, gantt.config.autoscroll_delay || scrollDelay);\n }\n }\n\n function defineScrollInterval(state) {\n if (state) {\n defineDelayTimeout(true);\n\n if (!startPos.started) {\n startPos.x = eventPos.x;\n startPos.y = eventPos.y;\n startPos.started = true;\n }\n } else {\n if (interval) {\n clearInterval(interval);\n interval = null;\n }\n\n defineDelayTimeout(false);\n startPos.started = false;\n }\n }\n\n function autoscrollInterval(event) {\n var isScroll = isScrollState();\n\n if ((interval || delayTimeout) && !isScroll) {\n defineScrollInterval(false);\n }\n\n if (!gantt.config.autoscroll || !isScroll) {\n return false;\n }\n\n eventPos = {\n x: event.clientX,\n y: event.clientY\n }; // if it is a mobile device, we need to detect the touch event coords\n\n if (event.type == \"touchmove\") {\n eventPos.x = event.targetTouches[0].clientX;\n eventPos.y = event.targetTouches[0].clientY;\n }\n\n if (!interval && isScroll) {\n defineScrollInterval(true);\n }\n }\n\n function tick() {\n if (!isScrollState()) {\n defineScrollInterval(false);\n return false;\n }\n\n var container = getAutoscrollContainer();\n\n if (!container) {\n return;\n } // GS-1150: if we reorder or resize something in the grid, we should obtain the grid container\n\n\n var gridDrag = false;\n var gridMarkers = [\".gantt_drag_marker.gantt_grid_resize_area\", \".gantt_drag_marker .gantt_row.gantt_row_task\", \".gantt_drag_marker.gantt_grid_dnd_marker\"];\n gridMarkers.forEach(function (selector) {\n gridDrag = gridDrag || !!document.querySelector(selector);\n });\n\n if (gridDrag) {\n container = gantt.$grid;\n }\n\n var box = domHelpers.getNodePosition(container);\n var posX = eventPos.x - box.x;\n var posY = eventPos.y - box.y + window.scrollY; // GS-1315: window.scrollY here and below for the elements above Gantt\n\n var scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n var scrollTop = need_scroll(posY, box.height, startPos.y - box.y + window.scrollY);\n var scrollState = gantt.getScrollState();\n var currentScrollTop = scrollState.y,\n scrollOuterHeight = scrollState.inner_height,\n scrollInnerHeight = scrollState.height,\n currentScrollLeft = scrollState.x,\n scrollOuterWidth = scrollState.inner_width,\n scrollInnerWidth = scrollState.width; // do scrolling only if we have scrollable area to do so\n\n if (scrollTop && !scrollOuterHeight) {\n scrollTop = 0;\n } else if (scrollTop < 0 && !currentScrollTop) {\n scrollTop = 0;\n } else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n scrollTop = 0;\n }\n\n if (scrollLeft && !scrollOuterWidth) {\n scrollLeft = 0;\n } else if (scrollLeft < 0 && !currentScrollLeft) {\n scrollLeft = 0;\n } else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n scrollLeft = 0;\n }\n\n var step = gantt.config.autoscroll_step;\n if (step && step < 2) // limit step value to 2\n step = 2;\n scrollLeft = scrollLeft * (step || scrollStep);\n scrollTop = scrollTop * (step || scrollStep);\n\n if (scrollLeft || scrollTop) {\n scroll(scrollLeft, scrollTop);\n }\n }\n\n function need_scroll(pos, boxSize, startCoord) {\n if (pos - scrollRange < 0 && pos < startCoord) return -1;else if (pos > boxSize - scrollRange && pos > startCoord) return 1;\n return 0;\n }\n\n function scroll(left, top) {\n var scrollState = gantt.getScrollState();\n var scrollLeft = null,\n scrollTop = null;\n\n if (left) {\n scrollLeft = scrollState.x + left;\n scrollLeft = Math.min(scrollState.width, scrollLeft);\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (top) {\n scrollTop = scrollState.y + top;\n scrollTop = Math.min(scrollState.height, scrollTop);\n scrollTop = Math.max(0, scrollTop);\n }\n\n gantt.scrollTo(scrollLeft, scrollTop);\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\n gantt.eventRemove(eventElement, \"mousemove\", autoscrollInterval);\n gantt.event(eventElement, \"mousemove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"touchmove\", autoscrollInterval);\n gantt.event(eventElement, \"touchmove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"pointermove\", autoscrollInterval);\n gantt.event(eventElement, \"pointermove\", autoscrollInterval);\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n defineScrollInterval(false);\n });\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./autoscroll\"), require(\"./jquery_hooks\"), require(\"./dhtmlx_hooks\")];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n\n var TimelineZoom = require(\"./timeline_zoom\")[\"default\"];\n\n gantt.ext.zoom = new TimelineZoom(gantt);\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_white\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_black\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.material = {\n config: {\n grid_width: 411,\n row_height: 34,\n task_height_offset: 6,\n scale_height: 36,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 80\n },\n _second_column_width: 110,\n _third_column_width: 75,\n _redefine_lightbox_buttons: {\n \"buttons_left\": [\"dhx_delete_btn\"],\n \"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n }\n };\n gantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n var t = gantt.getTaskNode(id);\n\n if (t) {\n t.className += \" gantt_drag_animation\";\n setTimeout(function () {\n var indx = t.className.indexOf(\" gantt_drag_animation\");\n\n if (indx > -1) {\n t.className = t.className.slice(0, indx);\n }\n }, 200);\n }\n });\n};","module.exports = function (gantt) {\n gantt.skins.broadway = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 1,\n link_arrow_size: 7,\n lightbox_additional_height: 86\n },\n _second_column_width: 90,\n _third_column_width: 80,\n _lightbox_template: \"<div class='gantt_cal_ltitle'><span class='gantt_mark'> </span><span class='gantt_time'></span><span class='gantt_title'></span><div class='gantt_cancel_btn'></div></div><div class='gantt_cal_larea'></div>\",\n _config_buttons_left: {},\n _config_buttons_right: {\n \"gantt_delete_btn\": \"icon_delete\",\n \"gantt_save_btn\": \"icon_save\"\n }\n };\n};","module.exports = function (gantt) {\n gantt.skins.terrace = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 90,\n _third_column_width: 70\n };\n};","module.exports = function (gantt) {\n gantt.skins.meadow = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 30,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 72\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.skyblue = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 27,\n link_line_width: 1,\n link_arrow_size: 8,\n lightbox_additional_height: 75\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","function _configure(col, data, force) {\n for (var key in data) {\n if (typeof col[key] == \"undefined\" || force) col[key] = data[key];\n }\n}\n\nfunction _get_skin(force, gantt) {\n var skin = gantt.skin;\n\n if (!skin || force) {\n var links = document.getElementsByTagName(\"link\");\n\n for (var i = 0; i < links.length; i++) {\n var res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\n\n if (res) {\n if (gantt.skins[res[1]] || !skin) {\n skin = res[1];\n break;\n }\n }\n }\n }\n\n gantt.skin = skin || \"terrace\";\n var skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"]; //apply skin related settings\n\n _configure(gantt.config, skinset.config, force);\n\n var config = gantt.getGridColumns();\n if (config[1] && !gantt.defined(config[1].width)) config[1].width = skinset._second_column_width;\n if (config[2] && !gantt.defined(config[2].width)) config[2].width = skinset._third_column_width;\n\n for (var i = 0; i < config.length; i++) {\n var column = config[i];\n\n if (column.name == \"add\") {\n if (!column.width) {\n column.width = 44;\n }\n\n if (!(gantt.defined(column.min_width) && gantt.defined(column.max_width))) {\n column.min_width = column.min_width || column.width;\n column.max_width = column.max_width || column.width;\n }\n\n if (column.min_width) column.min_width = +column.min_width;\n if (column.max_width) column.max_width = +column.max_width;\n\n if (column.width) {\n column.width = +column.width;\n column.width = column.min_width && column.min_width > column.width ? column.min_width : column.width;\n column.width = column.max_width && column.max_width < column.width ? column.max_width : column.width;\n }\n }\n }\n\n if (skinset.config.task_height) {\n gantt.config.task_height = skinset.config.task_height || \"full\";\n }\n\n if (skinset.config.bar_height) {\n gantt.config.bar_height = skinset.config.bar_height || \"full\";\n }\n\n if (skinset._lightbox_template) gantt._lightbox_template = skinset._lightbox_template;\n\n if (skinset._redefine_lightbox_buttons) {\n gantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n gantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n }\n\n gantt.resetLightbox();\n}\n\nmodule.exports = function (gantt) {\n if (!gantt.resetSkin) {\n gantt.resetSkin = function () {\n this.skin = \"\";\n\n _get_skin(true, this);\n };\n\n gantt.skins = {};\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n _get_skin(false, this);\n });\n }\n};","function createLayoutFacade() {\n function getTimeline(gantt) {\n return gantt.$ui.getView(\"timeline\");\n }\n\n function getGrid(gantt) {\n return gantt.$ui.getView(\"grid\");\n }\n\n function getBaseCell(gantt) {\n var timeline = getTimeline(gantt);\n\n if (timeline && !timeline.$config.hidden) {\n return timeline;\n } else {\n var grid = getGrid(gantt);\n\n if (grid && !grid.$config.hidden) {\n return grid;\n } else {\n return null;\n }\n }\n }\n\n function getVerticalScrollbar(gantt) {\n var baseCell = null; // GS-1150: if we reorder or resize something in the grid, we should obtain the grid container\n\n var gridDrag = false;\n var gridMarkers = [\".gantt_drag_marker.gantt_grid_resize_area\", \".gantt_drag_marker .gantt_row.gantt_row_task\", \".gantt_drag_marker.gantt_grid_dnd_marker\"];\n gridMarkers.forEach(function (selector) {\n gridDrag = gridDrag || !!document.querySelector(selector);\n });\n\n if (gridDrag) {\n baseCell = getGrid(gantt);\n } else {\n baseCell = getBaseCell(gantt);\n } // GS-1827. If there is no grid and timeline, there is no scrollbar for them\n\n\n if (!baseCell) {\n return null;\n }\n\n var verticalScrollbar = getAttachedScrollbar(gantt, baseCell, \"scrollY\");\n return verticalScrollbar;\n }\n\n function getHorizontalScrollbar(gantt) {\n var baseCell = getBaseCell(gantt);\n\n if (!baseCell || baseCell.id == \"grid\") {\n return null; // if the timeline is not displayed, do not return the scrollbar\n }\n\n var horizontalScrollbar = getAttachedScrollbar(gantt, baseCell, \"scrollX\");\n return horizontalScrollbar;\n }\n\n function getAttachedScrollbar(gantt, cell, type) {\n var attachedScrollbar = cell.$config[type];\n var scrollbarView = gantt.$ui.getView(attachedScrollbar);\n return scrollbarView;\n }\n\n var DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n function tryCall(getView, method, args, fallback) {\n var view = getView(this);\n\n if (!(view && view.isVisible())) {\n if (fallback) {\n return fallback();\n } else {\n return DEFAULT_VALUE;\n }\n } else {\n return view[method].apply(view, args);\n }\n }\n\n return {\n getColumnIndex: function getColumnIndex(name) {\n var res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n dateFromPos: function dateFromPos(x) {\n var res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\n if (res === DEFAULT_VALUE) {\n return this.getState().min_date;\n } else {\n return res;\n }\n },\n posFromDate: function posFromDate(date) {\n var res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getRowTop: function getRowTop(index) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getRowTop\", [index], function () {\n return tryCall.call(self, getGrid, \"getRowTop\", [index]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskTop: function getTaskTop(id) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemTop\", [id], function () {\n return tryCall.call(self, getGrid, \"getItemTop\", [id]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskPosition: function getTaskPosition(task, start_date, end_date) {\n var res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n if (res === DEFAULT_VALUE) {\n var top = this.getTaskTop(task.id);\n var height = this.getTaskBarHeight(task.id);\n return {\n left: 0,\n top: top,\n height: height,\n width: 0\n };\n } else {\n return res;\n }\n },\n getTaskBarHeight: function getTaskBarHeight(taskId, isMilestoneRender) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getBarHeight\", [taskId, isMilestoneRender], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskHeight: function getTaskHeight(taskId) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemHeight\", [taskId], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n roundTaskDates: function roundTaskDates() {\n tryCall.call(this, getTimeline, \"roundTaskDates\", []);\n },\n getScale: function getScale() {\n var res = tryCall.call(this, getTimeline, \"getScale\", []);\n\n if (res === DEFAULT_VALUE) {\n return null;\n } else {\n return res;\n }\n },\n getTaskNode: function getTaskNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline || !timeline.isVisible()) {\n return null;\n } else {\n var node = timeline._taskRenderer.rendered[id];\n\n if (!node) {\n var domAttr = timeline.$config.item_attribute;\n node = timeline.$task_bars.querySelector(\"[\" + domAttr + \"='\" + id + \"']\");\n }\n\n return node || null;\n }\n },\n getLinkNode: function getLinkNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline.isVisible()) {\n return null;\n } else {\n return timeline._linkRenderer.rendered[id];\n }\n },\n scrollTo: function scrollTo(left, top) {\n var vertical = getVerticalScrollbar(this);\n var horizontal = getHorizontalScrollbar(this);\n var oldH = {\n position: 0\n },\n oldV = {\n position: 0\n };\n\n if (vertical) {\n oldV = vertical.getScrollState();\n }\n\n if (horizontal) {\n oldH = horizontal.getScrollState();\n }\n\n var scrollHorizontal = horizontal && left * 1 == left;\n var scrollVertical = vertical && top * 1 == top;\n var scrollBoth = scrollHorizontal && scrollVertical;\n\n if (scrollBoth) {\n // some views will be scrolled both horizontally and vertically and smart rendering can be called twice\n // set flag in order not to invoke smart rendering at the horizontal scroll stage\n // so it will repaint only once when the scroll is completed\n var verticalViews = vertical._getLinkedViews();\n\n var horizontalViews = horizontal._getLinkedViews();\n\n var commonViews = [];\n\n for (var i = 0; i < verticalViews.length; i++) {\n for (var j = 0; j < horizontalViews.length; j++) {\n if (verticalViews[i].$config.id && horizontalViews[j].$config.id && verticalViews[i].$config.id === horizontalViews[j].$config.id) {\n commonViews.push(verticalViews[i].$config.id);\n }\n }\n }\n }\n\n if (scrollHorizontal) {\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = true;\n }.bind(this));\n }\n\n horizontal.scroll(left);\n\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = false;\n }.bind(this));\n }\n }\n\n if (scrollVertical) {\n vertical.scroll(top);\n }\n\n var newV = {\n position: 0\n },\n newH = {\n position: 0\n };\n\n if (vertical) {\n newV = vertical.getScrollState();\n }\n\n if (horizontal) {\n newH = horizontal.getScrollState();\n }\n\n this.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n },\n showDate: function showDate(date) {\n var date_x = this.posFromDate(date);\n var scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n this.scrollTo(scroll_to);\n },\n showTask: function showTask(id) {\n var pos = this.getTaskPosition(this.getTask(id)); // GS-1261: we need to show the start_date even in the RTL mode\n\n var leftPos = pos.left;\n if (this.config.rtl) leftPos = pos.left + pos.width;\n var left = Math.max(leftPos - this.config.task_scroll_offset, 0);\n\n var dataHeight = this._scroll_state().y;\n\n var top;\n\n if (!dataHeight) {\n top = pos.top;\n } else {\n top = pos.top - (dataHeight - this.getTaskBarHeight(id)) / 2;\n }\n\n this.scrollTo(left, top); // GS-1150: if the grid and timeline have different scrollbars, we need to scroll thegrid to show the task\n\n var gridCell = getGrid(this);\n var timelineCell = getTimeline(this);\n\n if (gridCell && timelineCell && gridCell.$config.scrollY != timelineCell.$config.scrollY) {\n var gridScrollbar = getAttachedScrollbar(this, gridCell, \"scrollY\");\n gridScrollbar.scrollTo(null, top);\n }\n },\n _scroll_state: function _scroll_state() {\n var result = {\n x: false,\n y: false,\n x_pos: 0,\n y_pos: 0,\n scroll_size: this.config.scroll_size + 1,\n //1px for inner content\n x_inner: 0,\n y_inner: 0\n };\n var scrollVer = getVerticalScrollbar(this),\n scrollHor = getHorizontalScrollbar(this);\n\n if (scrollHor) {\n var horState = scrollHor.getScrollState();\n\n if (horState.visible) {\n result.x = horState.size;\n result.x_inner = horState.scrollSize;\n }\n\n result.x_pos = horState.position || 0;\n }\n\n if (scrollVer) {\n var verState = scrollVer.getScrollState();\n\n if (verState.visible) {\n result.y = verState.size;\n result.y_inner = verState.scrollSize;\n }\n\n result.y_pos = verState.position || 0;\n }\n\n return result;\n },\n getScrollState: function getScrollState() {\n var state = this._scroll_state();\n\n return {\n x: state.x_pos,\n y: state.y_pos,\n inner_width: state.x,\n inner_height: state.y,\n width: state.x_inner,\n height: state.y_inner\n };\n },\n getLayoutView: function getLayoutView(cellName) {\n return this.$ui.getView(cellName);\n },\n scrollLayoutCell: function scrollLayoutCell(cellName, left, top) {\n var cell = this.$ui.getView(cellName);\n\n if (!cell) {\n return false;\n }\n\n if (left !== null) {\n var horizontalScroll = this.$ui.getView(cell.$config.scrollX);\n\n if (horizontalScroll) {\n horizontalScroll.scrollTo(left, null);\n }\n }\n\n if (top !== null) {\n var verticalScroll = this.$ui.getView(cell.$config.scrollY);\n\n if (verticalScroll) {\n verticalScroll.scrollTo(null, top);\n }\n }\n }\n };\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function (gantt) {\n delete gantt.addTaskLayer;\n delete gantt.addLinkLayer;\n};","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n getVerticalScrollbar: function getVerticalScrollbar() {\n return gantt.$ui.getView(\"scrollVer\");\n },\n getHorizontalScrollbar: function getHorizontalScrollbar() {\n return gantt.$ui.getView(\"scrollHor\");\n },\n _legacyGridResizerClass: function _legacyGridResizerClass(layout) {\n var resizers = layout.getCellsByType(\"resizer\");\n\n for (var i = 0; i < resizers.length; i++) {\n var r = resizers[i];\n var gridResizer = false;\n var prev = r.$parent.getPrevSibling(r.$id);\n\n if (prev && prev.$config && prev.$config.id === \"grid\") {\n gridResizer = true;\n } else {\n var next = r.$parent.getNextSibling(r.$id);\n\n if (next && next.$config && next.$config.id === \"grid\") {\n gridResizer = true;\n }\n }\n\n if (gridResizer) {\n r.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n }\n }\n },\n onCreated: function onCreated(layout) {\n var first = true;\n\n this._legacyGridResizerClass(layout);\n\n layout.attachEvent(\"onBeforeResize\", function () {\n var mainTimeline = gantt.$ui.getView(\"timeline\");\n if (mainTimeline) mainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n var mainGrid = gantt.$ui.getView(\"grid\");\n if (!mainGrid) return;\n\n var colsWidth = mainGrid._getColsTotalWidth();\n\n var hideGrid = !gantt.config.show_grid || !gantt.config.grid_width || colsWidth === 0;\n\n if (first && !hideGrid && colsWidth !== false) {\n gantt.config.grid_width = colsWidth;\n }\n\n mainGrid.$config.hidden = mainGrid.$parent.$config.hidden = hideGrid;\n\n if (!mainGrid.$config.hidden) {\n /* restrict grid width due to min_width, max_width, min_grid_column_width */\n var grid_limits = mainGrid._getGridWidthLimits();\n\n if (grid_limits[0] && gantt.config.grid_width < grid_limits[0]) gantt.config.grid_width = grid_limits[0];\n if (grid_limits[1] && gantt.config.grid_width > grid_limits[1]) gantt.config.grid_width = grid_limits[1];\n\n if (mainTimeline && gantt.config.show_chart) {\n mainGrid.$config.width = gantt.config.grid_width - 1; // GS-1314: Don't let the non-scrollable grid to be larger than the container with the correct width\n\n if (!mainGrid.$config.scrollable && mainGrid.$config.scrollY && gantt.$root.offsetWidth) {\n var ganttContainerWidth = mainGrid.$gantt.$layout.$container.offsetWidth;\n var verticalScrollbar = gantt.$ui.getView(mainGrid.$config.scrollY);\n var verticalScrollbarWidth = verticalScrollbar.$config.width;\n var gridOverflow = ganttContainerWidth - (mainGrid.$config.width + verticalScrollbarWidth);\n\n if (gridOverflow < 0) {\n mainGrid.$config.width += gridOverflow;\n gantt.config.grid_width += gridOverflow;\n }\n }\n\n if (!first) {\n if (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // timeline is being displayed after being not visible, reset grid with from full screen\n if (!mainGrid.$config.original_grid_width) {\n var skinSettings = gantt.skins[gantt.skin];\n\n if (skinSettings && skinSettings.config && skinSettings.config.grid_width) {\n mainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n } else {\n mainGrid.$config.original_grid_width = 0;\n }\n }\n\n gantt.config.grid_width = mainGrid.$config.original_grid_width;\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n } else {\n mainGrid.$parent._setContentSize(mainGrid.$config.width, null);\n\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: gantt.config.grid_width,\n isGravity: false\n });\n }\n } else {\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n\n if (mainGrid.$parent.$config.group) {\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: mainGrid.$parent.$config.width,\n isGravity: false\n });\n }\n }\n } else {\n if (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // hiding timeline, remember grid with to restore it when timeline is displayed again\n mainGrid.$config.original_grid_width = gantt.config.grid_width;\n }\n\n if (!first) {\n mainGrid.$parent.$config.width = 0;\n }\n }\n }\n\n first = false;\n });\n\n this._initScrollStateEvents(layout);\n },\n _initScrollStateEvents: function _initScrollStateEvents(layout) {\n gantt._getVerticalScrollbar = this.getVerticalScrollbar;\n gantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n var vertical = this.getVerticalScrollbar();\n var horizontal = this.getHorizontalScrollbar();\n\n if (vertical) {\n vertical.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n });\n }\n\n if (horizontal) {\n horizontal.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]); // if the grid doesn't fit the width, scroll the row container\n\n var grid = gantt.$ui.getView(\"grid\");\n\n if (grid && grid.$grid_data && !grid.$config.scrollable) {\n grid.$grid_data.style.left = grid.$grid.scrollLeft + \"px\";\n grid.$grid_data.scrollLeft = grid.$grid.scrollLeft;\n }\n });\n }\n\n layout.attachEvent(\"onResize\", function () {\n if (vertical && !gantt.$scroll_ver) {\n gantt.$scroll_ver = vertical.$scroll_ver;\n }\n\n if (horizontal && !gantt.$scroll_hor) {\n gantt.$scroll_hor = horizontal.$scroll_hor;\n }\n });\n },\n _findGridResizer: function _findGridResizer(layout, grid) {\n var resizers = layout.getCellsByType(\"resizer\");\n var gridFirst = true;\n var gridResizer;\n\n for (var i = 0; i < resizers.length; i++) {\n var res = resizers[i];\n\n res._getSiblings();\n\n var prev = res._behind;\n var next = res._front;\n\n if (prev && prev.$content === grid || prev.isChild && prev.isChild(grid)) {\n gridResizer = res;\n gridFirst = true;\n break;\n } else if (next && next.$content === grid || next.isChild && next.isChild(grid)) {\n gridResizer = res;\n gridFirst = false;\n break;\n }\n }\n\n return {\n resizer: gridResizer,\n gridFirst: gridFirst\n };\n },\n onInitialized: function onInitialized(layout) {\n var grid = gantt.$ui.getView(\"grid\");\n\n var resizeInfo = this._findGridResizer(layout, grid); // expose grid resize events\n\n\n if (resizeInfo.resizer) {\n var gridFirst = resizeInfo.gridFirst,\n next = resizeInfo.resizer;\n\n if (next.$config.mode !== \"x\") {\n return; // track only horizontal resize\n }\n\n var initialWidth;\n next.attachEvent(\"onResizeStart\", function (prevCellWidth, nextCellWidth) {\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n var limits = grid._getGridWidthLimits(); // min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\n\n if (!grid.$config.scrollable) viewCell.$config.minWidth = limits[0];\n viewCell.$config.maxWidth = limits[1];\n }\n\n initialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n return gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n });\n next.attachEvent(\"onResize\", function (newBehindSize, newFrontSize) {\n var newSize = gridFirst ? newBehindSize : newFrontSize;\n return gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n });\n next.attachEvent(\"onResizeEnd\", function (oldBackSize, oldFrontSize, newBackSize, newFrontSize) {\n var oldSize = gridFirst ? oldBackSize : oldFrontSize;\n var newSize = gridFirst ? newBackSize : newFrontSize;\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n viewCell.$config.minWidth = undefined;\n }\n\n var res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\n if (res && newSize !== 0) {\n // new size may be numeric zero when cell size is defined by 'gravity', actual size will be calculated by layout later\n gantt.config.grid_width = newSize;\n }\n\n return res;\n });\n }\n },\n onDestroyed: function onDestroyed(timeline) {}\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar initLinksDND = function initLinksDND(timeline, gantt) {\n var _link_landing,\n _link_target_task,\n _link_target_task_start,\n _link_source_task,\n _link_source_task_start,\n markerDefaultOffset = 10,\n scrollDefaultSize = 18;\n\n function getVisibleMilestoneWidth(taskId) {\n var origWidth = timeline.getBarHeight(taskId, true); //m-s have square shape\n\n return Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n }\n\n function isMilestone(task) {\n return gantt.getTaskType(task.type) == gantt.config.types.milestone;\n }\n\n function getDndState() {\n return {\n link_source_id: _link_source_task,\n link_target_id: _link_target_task,\n link_from_start: _link_source_task_start,\n link_to_start: _link_target_task_start,\n link_landing_area: _link_landing\n };\n }\n\n var services = gantt.$services;\n var state = services.getService(\"state\");\n var DnD = services.getService(\"dnd\");\n state.registerProvider(\"linksDnD\", getDndState);\n var start_marker = \"task_start_date\",\n end_marker = \"task_end_date\",\n link_edge_marker = \"gantt_link_point\",\n link_landing_hover_area = \"gantt_link_control\";\n var dnd = new DnD(timeline.$task_bars, {\n sensitivity: 0,\n updates_per_second: 60,\n mousemoveContainer: gantt.$root,\n selector: \".\" + link_edge_marker,\n preventDefault: true\n });\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var target = e.target || e.srcElement;\n resetDndState();\n if (gantt.getState(\"tasksDnd\").drag_id) return false;\n\n if (domHelpers.locateClassName(target, link_edge_marker)) {\n if (domHelpers.locateClassName(target, start_marker)) _link_source_task_start = true;\n var sid = gantt.locate(e);\n _link_source_task = sid;\n var t = gantt.getTask(sid);\n\n if (gantt.isReadonly(t)) {\n resetDndState();\n return false;\n }\n\n var shift = 0;\n this._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n return true;\n } else {\n return false;\n }\n }, this));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n if (gantt.config.touch) {\n gantt.refreshData();\n }\n\n updateMarkedHtml(dnd.config.marker);\n }, this));\n\n function getLinePos(task, to_start, shift, cfg, isStart) {\n var taskPos = getMilestonePosition(task, function (task) {\n return gantt.getTaskPosition(task);\n }, cfg);\n var pos = {\n x: taskPos.x,\n y: taskPos.y\n };\n\n if (!to_start) {\n pos.x = taskPos.xEnd;\n } //var pos = gantt._get_task_pos(task, !!to_start);\n\n\n pos.y += gantt.getTaskHeight(task.id) / 2;\n var offset = isMilestone(task) && isStart ? 2 : 0;\n shift = shift || 0;\n if (cfg.rtl) shift = shift * -1;\n pos.x += (to_start ? -1 : 1) * shift - offset;\n return pos;\n }\n\n function getMilestonePosition(task, getTaskPosition, cfg) {\n var pos = getTaskPosition(task);\n var res = {\n x: pos.left,\n y: pos.top,\n width: pos.width,\n height: pos.height\n };\n\n if (cfg.rtl) {\n res.xEnd = res.x;\n res.x = res.xEnd + res.width;\n } else {\n res.xEnd = res.x + res.width;\n }\n\n res.yEnd = res.y + res.height;\n\n if (gantt.getTaskType(task.type) == gantt.config.types.milestone) {\n var milestoneWidth = getVisibleMilestoneWidth(task.id);\n res.x += (!cfg.rtl ? -1 : 1) * (milestoneWidth / 2);\n res.xEnd += (!cfg.rtl ? 1 : -1) * (milestoneWidth / 2); //pos.x -= milestoneWidth / 2;\n //pos.xEnd += milestoneWidth / 2;\n\n res.width = pos.xEnd - pos.x;\n }\n\n return res;\n }\n\n function getVieportSize() {\n var root = gantt.$root;\n return {\n right: root.offsetWidth,\n bottom: root.offsetHeight\n };\n }\n\n function getMarkerSize(marker) {\n var width = 0,\n height = 0;\n\n if (marker) {\n width = marker.offsetWidth || 0;\n height = marker.offsetHeight || 0;\n }\n\n return {\n width: width,\n height: height\n };\n }\n\n function getPosition(e, marker) {\n var oldPos = dnd.getPosition(e);\n var markerSize = getMarkerSize(marker);\n var viewportSize = getVieportSize();\n var offsetX = gantt.config.tooltip_offset_x || markerDefaultOffset;\n var offsetY = gantt.config.tooltip_offset_y || markerDefaultOffset;\n var scrollSize = gantt.config.scroll_size || scrollDefaultSize; // GS-1315: Add offset if there are elements above Gantt\n\n var ganttOffsetY = gantt.$container.getBoundingClientRect().y + window.scrollY;\n var position = {\n y: oldPos.y + offsetY,\n x: oldPos.x + offsetX,\n bottom: oldPos.y + markerSize.height + offsetY + scrollSize,\n right: oldPos.x + markerSize.width + offsetX + scrollSize\n };\n\n if (position.bottom > viewportSize.bottom + ganttOffsetY) {\n position.y = viewportSize.bottom + ganttOffsetY - markerSize.height - offsetY;\n }\n\n if (position.right > viewportSize.right) {\n position.x = viewportSize.right - markerSize.width - offsetX;\n }\n\n return position;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var dd = dnd.config;\n var pos = getPosition(e, dd.marker);\n advanceMarker(dd.marker, pos);\n var landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n var prevTarget = _link_target_task;\n var prevLanding = _link_landing;\n var prevToStart = _link_target_task_start;\n var targ = gantt.locate(e),\n to_start = true; // can drag and drop link to another gantt on the page, such links are not supported\n\n var eventTarget = domHelpers.getTargetNode(e);\n var sameGantt = domHelpers.isChildOf(eventTarget, gantt.$root);\n\n if (!sameGantt) {\n landing = false;\n targ = null;\n }\n\n if (landing) {\n //refreshTask\n to_start = !domHelpers.locateClassName(e, end_marker);\n landing = !!targ;\n }\n\n _link_target_task = targ;\n _link_landing = landing;\n _link_target_task_start = to_start;\n\n if (landing) {\n var t = gantt.getTask(targ);\n var config = timeline.$getConfig();\n var node = domHelpers.locateClassName(e, link_landing_hover_area);\n var shift = 0;\n\n if (node) {\n shift = Math.floor(node.offsetWidth / 2);\n }\n\n this._dir_end = getLinePos(t, !!_link_target_task_start, shift, config);\n } else {\n this._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\n if (gantt.env.isEdge) {\n // to fix margin collapsing\n this._dir_end.y += window.scrollY;\n }\n }\n\n var targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\n if (targetChanged) {\n if (prevTarget) gantt.refreshTask(prevTarget, false);\n if (targ) gantt.refreshTask(targ, false);\n }\n\n if (targetChanged) {\n updateMarkedHtml(dd.marker);\n }\n\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n return true;\n }, this));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var drag = getDndState();\n\n if (drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id) {\n var type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n var link = {\n source: drag.link_source_id,\n target: drag.link_target_id,\n type: type\n };\n\n if (link.type && gantt.isLinkAllowed(link)) {\n if (gantt.callEvent(\"onLinkCreated\", [link])) {\n gantt.addLink(link);\n }\n }\n }\n\n resetDndState();\n\n if (gantt.config.touch) {\n gantt.refreshData();\n } else {\n if (drag.link_source_id) gantt.refreshTask(drag.link_source_id, false);\n if (drag.link_target_id) gantt.refreshTask(drag.link_target_id, false);\n }\n\n removeDirectionLine();\n }, this));\n\n function updateMarkedHtml(marker) {\n var link = getDndState();\n var css = [\"gantt_link_tooltip\"];\n\n if (link.link_source_id && link.link_target_id) {\n if (gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)) {\n css.push(\"gantt_allowed_link\");\n } else {\n css.push(\"gantt_invalid_link\");\n }\n }\n\n var className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n if (className) css.push(className);\n var html = \"<div class='\" + className + \"'>\" + gantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) + \"</div>\";\n marker.innerHTML = html;\n }\n\n function advanceMarker(marker, pos) {\n marker.style.left = pos.x + \"px\";\n marker.style.top = pos.y + \"px\";\n }\n\n function resetDndState() {\n _link_source_task = _link_source_task_start = _link_target_task = null;\n _link_target_task_start = true;\n }\n\n function showDirectingLine(s_x, s_y, e_x, e_y) {\n var div = getDirectionLine();\n var link = getDndState();\n var css = [\"gantt_link_direction\"];\n\n if (gantt.templates.link_direction_class) {\n css.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n }\n\n var dist = Math.sqrt(Math.pow(e_x - s_x, 2) + Math.pow(e_y - s_y, 2));\n dist = Math.max(0, dist - 3);\n if (!dist) return;\n div.className = css.join(\" \");\n var tan = (e_y - s_y) / (e_x - s_x),\n angle = Math.atan(tan);\n\n if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2) {\n angle += Math.PI;\n } else if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3) {\n angle -= Math.PI;\n }\n\n var sin = Math.sin(angle),\n cos = Math.cos(angle),\n top = Math.round(s_y),\n left = Math.round(s_x);\n var style = [\"-webkit-transform: rotate(\" + angle + \"rad)\", \"-moz-transform: rotate(\" + angle + \"rad)\", \"-ms-transform: rotate(\" + angle + \"rad)\", \"-o-transform: rotate(\" + angle + \"rad)\", \"transform: rotate(\" + angle + \"rad)\", \"width:\" + Math.round(dist) + \"px\"];\n\n if (window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1) {\n //ms-filter breaks styles in ie9, so add it only for 8th\n style.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n var shiftLeft = Math.abs(Math.round(s_x - e_x)),\n shiftTop = Math.abs(Math.round(e_y - s_y)); //fix rotation axis\n\n switch (coordinateCircleQuarter(s_x, e_x, s_y, e_y)) {\n case 1:\n top -= shiftTop;\n break;\n\n case 2:\n left -= shiftLeft;\n top -= shiftTop;\n break;\n\n case 3:\n left -= shiftLeft;\n break;\n\n default:\n break;\n }\n }\n\n style.push(\"top:\" + top + \"px\");\n style.push(\"left:\" + left + \"px\");\n div.style.cssText = style.join(\";\");\n }\n\n function ieTransform(sin, cos) {\n return \"progid:DXImageTransform.Microsoft.Matrix(\" + \"M11 = \" + cos + \",\" + \"M12 = -\" + sin + \",\" + \"M21 = \" + sin + \",\" + \"M22 = \" + cos + \",\" + \"SizingMethod = 'auto expand'\" + \")\";\n }\n\n function coordinateCircleQuarter(sX, eX, sY, eY) {\n if (eX >= sX) {\n if (eY <= sY) {\n return 1;\n } else {\n return 4;\n }\n } else {\n if (eY <= sY) {\n return 2;\n } else {\n return 3;\n }\n }\n }\n\n function getDirectionLine() {\n if (!dnd._direction || !dnd._direction.parentNode) {\n dnd._direction = document.createElement(\"div\");\n timeline.$task_links.appendChild(dnd._direction);\n }\n\n return dnd._direction;\n }\n\n function removeDirectionLine() {\n if (dnd._direction) {\n if (dnd._direction.parentNode) //the event line can be detached because of data refresh\n dnd._direction.parentNode.removeChild(dnd._direction);\n dnd._direction = null;\n }\n }\n\n gantt.attachEvent(\"onGanttRender\", gantt.bind(function () {\n if (dnd._direction) {\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n }\n }, this));\n};\n\nmodule.exports = {\n createLinkDND: function createLinkDND() {\n return {\n init: initLinksDND\n };\n }\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar timeout = require(\"../../../utils/timeout\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nfunction createTaskDND(timeline, gantt) {\n var services = gantt.$services;\n return {\n drag: null,\n dragMultiple: {},\n _events: {\n before_start: {},\n before_finish: {},\n after_finish: {}\n },\n _handlers: {},\n init: function init() {\n this._domEvents = gantt._createDomEventScope();\n this.clear_drag_state();\n var drag = gantt.config.drag_mode;\n this.set_actions();\n var stateService = services.getService(\"state\");\n stateService.registerProvider(\"tasksDnd\", utils.bind(function () {\n return {\n drag_id: this.drag ? this.drag.id : undefined,\n drag_mode: this.drag ? this.drag.mode : undefined,\n drag_from_start: this.drag ? this.drag.left : undefined\n };\n }, this));\n var evs = {\n \"before_start\": \"onBeforeTaskDrag\",\n \"before_finish\": \"onBeforeTaskChanged\",\n \"after_finish\": \"onAfterTaskDrag\"\n }; //for now, all drag operations will trigger the same events\n\n for (var stage in this._events) {\n for (var mode in drag) {\n this._events[stage][mode] = evs[stage];\n }\n }\n\n this._handlers[drag.move] = this._move;\n this._handlers[drag.resize] = this._resize;\n this._handlers[drag.progress] = this._resize_progress;\n },\n set_actions: function set_actions() {\n var data = timeline.$task_data;\n\n this._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\n this.on_mouse_move(e);\n }, this));\n\n this._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\n this.on_mouse_down(e);\n }, this));\n\n this._domEvents.attach(document.body, \"mouseup\", gantt.bind(function (e) {\n this.on_mouse_up(e);\n }, this));\n },\n clear_drag_state: function clear_drag_state() {\n this.drag = {\n id: null,\n mode: null,\n pos: null,\n start_x: null,\n start_y: null,\n obj: null,\n left: null\n };\n this.dragMultiple = {};\n },\n _resize: function _resize(task, shift, drag) {\n var cfg = timeline.$getConfig();\n\n var coords_x = this._drag_task_coords(task, drag);\n\n if (drag.left) {\n task.start_date = gantt.dateFromPos(coords_x.start + shift);\n\n if (!task.start_date) {\n task.start_date = new Date(gantt.getState().min_date);\n }\n } else {\n task.end_date = gantt.dateFromPos(coords_x.end + shift);\n\n if (!task.end_date) {\n task.end_date = new Date(gantt.getState().max_date);\n }\n }\n\n var minDurationInUnits = this._calculateMinDuration(cfg.min_duration, cfg.duration_unit);\n\n if (task.end_date - task.start_date < cfg.min_duration) {\n if (drag.left) task.start_date = gantt.calculateEndDate(task.end_date, -minDurationInUnits, cfg.duration_unit, task);else task.end_date = gantt.calculateEndDate(task.start_date, minDurationInUnits, cfg.duration_unit, task);\n }\n\n gantt._init_task_timing(task);\n },\n _calculateMinDuration: function _calculateMinDuration(duration, unit) {\n var inMs = {\n \"minute\": 60000,\n \"hour\": 3600000,\n \"day\": 86400000,\n \"week\": 604800000,\n \"month\": 2419200000,\n \"year\": 31356000000\n };\n return Math.ceil(duration / inMs[unit]);\n },\n _resize_progress: function _resize_progress(task, shift, drag) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var config = timeline.$getConfig();\n var diffValue = !config.rtl ? drag.pos.x - coords_x.start : coords_x.start - drag.pos.x;\n var diff = Math.max(0, diffValue);\n task.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n },\n _find_max_shift: function _find_max_shift(dragItems, shift) {\n var correctShift;\n\n for (var i in dragItems) {\n var drag = dragItems[i];\n var task = gantt.getTask(drag.id);\n\n var coords_x = this._drag_task_coords(task, drag);\n\n var minX = gantt.posFromDate(new Date(gantt.getState().min_date));\n var maxX = gantt.posFromDate(new Date(gantt.getState().max_date));\n\n if (coords_x.end + shift > maxX) {\n var maxShift = maxX - coords_x.end;\n\n if (maxShift < correctShift || correctShift === undefined) {\n correctShift = maxShift;\n }\n } else if (coords_x.start + shift < minX) {\n var minShift = minX - coords_x.start;\n\n if (minShift > correctShift || correctShift === undefined) {\n correctShift = minShift;\n }\n }\n }\n\n return correctShift;\n },\n _move: function _move(task, shift, drag, multipleDragShift) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var new_start = null,\n new_end = null; // GS-454: If we drag multiple tasks, rely on the dates instead of timeline coordinates\n\n if (multipleDragShift) {\n new_start = new Date(+drag.obj.start_date + multipleDragShift), new_end = new Date(+drag.obj.end_date + multipleDragShift);\n } else {\n new_start = gantt.dateFromPos(coords_x.start + shift), new_end = gantt.dateFromPos(coords_x.end + shift);\n }\n\n if (!new_start) {\n task.start_date = new Date(gantt.getState().min_date);\n task.end_date = gantt.dateFromPos(gantt.posFromDate(task.start_date) + (coords_x.end - coords_x.start));\n } else if (!new_end) {\n task.end_date = new Date(gantt.getState().max_date);\n task.start_date = gantt.dateFromPos(gantt.posFromDate(task.end_date) - (coords_x.end - coords_x.start));\n } else {\n task.start_date = new_start;\n task.end_date = new_end;\n }\n },\n _drag_task_coords: function _drag_task_coords(t, drag) {\n var start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n var end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n return {\n start: start,\n end: end\n };\n },\n _mouse_position_change: function _mouse_position_change(oldPos, newPos) {\n var dx = oldPos.x - newPos.x,\n dy = oldPos.y - newPos.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n _is_number: function _is_number(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n },\n on_mouse_move: function on_mouse_move(e) {\n if (this.drag.start_drag) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var sX = this.drag.start_drag.start_x,\n sY = this.drag.start_drag.start_y;\n\n if (Date.now() - this.drag.timestamp > 50 || this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n x: sX,\n y: sY\n }, pos) > 20) {\n this._start_dnd(e);\n }\n }\n\n var drag = this.drag;\n\n if (drag.mode) {\n if (!timeout(this, 40)) //limit update frequency\n return;\n\n this._update_on_move(e);\n }\n },\n _update_item_on_move: function _update_item_on_move(shift, id, mode, drag, e, multipleDragShift) {\n var task = gantt.getTask(id);\n var original = gantt.mixin({}, task);\n var copy = gantt.mixin({}, task);\n\n this._handlers[mode].apply(this, [copy, shift, drag, multipleDragShift]);\n\n gantt.mixin(task, copy, true); //gantt._update_parents(drag.id, true);\n\n gantt.callEvent(\"onTaskDrag\", [task.id, mode, copy, original, e]);\n gantt.mixin(task, copy, true);\n gantt.refreshTask(id);\n },\n _update_on_move: function _update_on_move(e) {\n var drag = this.drag;\n var config = timeline.$getConfig();\n\n if (drag.mode) {\n var pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n if (drag.pos && drag.pos.x == pos.x) return;\n drag.pos = pos;\n var curr_date = gantt.dateFromPos(pos.x);\n if (!curr_date || isNaN(curr_date.getTime())) return;\n var shift = pos.x - drag.start_x;\n var task = gantt.getTask(drag.id);\n\n if (this._handlers[drag.mode]) {\n if (drag.mode === config.drag_mode.move) {\n var dragHash = {};\n\n if (this._isMultiselect()) {\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n dragHash = this.dragMultiple;\n }\n }\n\n var dragProject = false;\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project) {\n var initialDrag = {};\n initialDrag[drag.id] = utils.copy(drag);\n dragProject = true;\n dragHash = utils.mixin(initialDrag, this.dragMultiple);\n }\n\n var maxShift = this._find_max_shift(dragHash, shift);\n\n if (maxShift !== undefined) {\n shift = maxShift;\n }\n\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\n for (var i in dragHash) {\n var childDrag = dragHash[i];\n\n if (dragProject && childDrag.id != drag.id) {\n gantt._bulk_dnd = true;\n } // GS-454: Calculate the date shift in milliseconds instead of pixels\n\n\n if (maxShift === undefined && (dragProject || Object.keys(dragHash).length > 1)) {\n var shiftDate = gantt.dateFromPos(drag.start_x);\n var multipleDragShift = curr_date - shiftDate;\n }\n\n this._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e, multipleDragShift);\n }\n\n gantt._bulk_dnd = false;\n } else {\n // for resize and progress\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n }\n\n gantt._update_parents(drag.id);\n }\n }\n },\n on_mouse_down: function on_mouse_down(e, src) {\n // on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n // let's ignore right mouse button then\n if (e.button == 2 && e.button !== undefined) return;\n var config = timeline.$getConfig();\n var id = gantt.locate(e);\n var task = null;\n\n if (gantt.isTaskExists(id)) {\n task = gantt.getTask(id);\n }\n\n if (gantt.isReadonly(task) || this.drag.mode) return;\n this.clear_drag_state();\n src = src || e.target || e.srcElement;\n var className = domHelpers.getClassName(src);\n\n var drag = this._get_drag_mode(className, src);\n\n if (!className || !drag) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);else return;\n }\n\n if (!drag) {\n if (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);\n }\n } else {\n if (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n id = gantt.locate(src);\n task = gantt.copy(gantt.getTask(id) || {});\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return false;\n }\n\n if (gantt.isSummaryTask(task) && !config.drag_project && drag.mode != config.drag_mode.progress) {\n //only progress drag is allowed for tasks with flexible duration\n this.clear_drag_state();\n return;\n }\n\n drag.id = id;\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n drag.start_x = pos.x;\n drag.start_y = pos.y;\n drag.obj = task;\n this.drag.start_drag = drag;\n this.drag.timestamp = Date.now();\n } else this.clear_drag_state();\n }\n },\n _fix_dnd_scale_time: function _fix_dnd_scale_time(task, drag) {\n var config = timeline.$getConfig();\n var unit = gantt.getScale().unit,\n step = gantt.getScale().step;\n\n if (!config.round_dnd_dates) {\n unit = 'minute';\n step = config.time_step;\n }\n\n function fixStart(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(task.start_date, undefined, task)) task.start_date = gantt.calculateEndDate({\n start_date: task.start_date,\n duration: -1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n function fixEnd(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task)) task.end_date = gantt.calculateEndDate({\n start_date: task.end_date,\n duration: 1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n } else {\n task.end_date = gantt.roundDate({\n date: task.end_date,\n unit: unit,\n step: step\n });\n fixEnd(task);\n }\n } else if (drag.mode == config.drag_mode.move) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n task.end_date = gantt.calculateEndDate(task);\n }\n },\n _fix_working_times: function _fix_working_times(task, drag) {\n var config = timeline.$getConfig();\n var drag = drag || {\n mode: config.drag_mode.move\n };\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n } else {\n task.end_date = gantt.getClosestWorkTime({\n date: task.end_date,\n dir: 'past',\n task: task\n });\n }\n } else if (drag.mode == config.drag_mode.move) {\n gantt.correctTaskWorkTime(task);\n }\n },\n _finalize_mouse_up: function _finalize_mouse_up(taskId, config, drag, e) {\n var task = gantt.getTask(taskId);\n\n if (config.work_time && config.correct_work_time) {\n this._fix_working_times(task, drag);\n }\n\n this._fix_dnd_scale_time(task, drag);\n\n if (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n //drag.obj._dhx_changed = false;\n this.clear_drag_state();\n\n if (taskId == drag.id) {\n drag.obj._dhx_changed = false;\n gantt.mixin(task, drag.obj, true);\n }\n\n gantt.refreshTask(task.id);\n } else {\n var drag_id = taskId;\n\n gantt._init_task_timing(task);\n\n this.clear_drag_state();\n gantt.updateTask(task.id);\n\n this._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n }\n },\n on_mouse_up: function on_mouse_up(e) {\n var drag = this.drag;\n\n if (drag.mode && drag.id) {\n var config = timeline.$getConfig(); //drop\n\n var task = gantt.getTask(drag.id);\n var dragMultiple = this.dragMultiple;\n var finalizingBulkMove = false;\n var moveCount = 0;\n\n if (drag.mode === config.drag_mode.move) {\n if (gantt.isSummaryTask(task) && config.drag_project || this._isMultiselect()) {\n finalizingBulkMove = true;\n moveCount = Object.keys(dragMultiple).length;\n }\n }\n\n var doFinalize = function doFinalize() {\n if (finalizingBulkMove) {\n for (var i in dragMultiple) {\n // GS-1057: Don't call drag events for the dragged task as they will be called later\n if (dragMultiple[i].id != drag.id) {\n this._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n }\n }\n }\n\n this._finalize_mouse_up(drag.id, config, drag, e);\n };\n\n if (finalizingBulkMove && moveCount > 10) {\n // 10 - arbitrary threshold for bulk dnd at which we start doing complete repaint to refresh\n gantt.batchUpdate(function () {\n doFinalize.call(this);\n }.bind(this));\n } else {\n doFinalize.call(this);\n }\n }\n\n this.clear_drag_state();\n },\n _get_drag_mode: function _get_drag_mode(className, el) {\n var config = timeline.$getConfig();\n var modes = config.drag_mode;\n var classes = (className || \"\").split(\" \");\n var classname = classes[0];\n var drag = {\n mode: null,\n left: null\n };\n\n switch (classname) {\n case \"gantt_task_line\":\n case \"gantt_task_content\":\n drag.mode = modes.move;\n break;\n\n case \"gantt_task_drag\":\n drag.mode = modes.resize;\n var dragProperty = el.getAttribute(\"data-bind-property\");\n\n if (dragProperty == \"start_date\") {\n drag.left = true;\n } else {\n drag.left = false;\n }\n\n break;\n\n case \"gantt_task_progress_drag\":\n drag.mode = modes.progress;\n break;\n\n case \"gantt_link_control\":\n case \"gantt_link_point\":\n drag.mode = modes.ignore;\n break;\n\n default:\n drag = null;\n break;\n }\n\n return drag;\n },\n _start_dnd: function _start_dnd(e) {\n var drag = this.drag = this.drag.start_drag;\n delete drag.start_drag;\n var cfg = timeline.$getConfig();\n var id = drag.id;\n\n if (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n this.clear_drag_state();\n } else {\n delete drag.start_drag;\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return;\n }\n\n if (this._isMultiselect()) {\n // for don't move selected tasks when drag unselected task\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n helpers.forEach(selectedTasksIds, gantt.bind(function (taskId) {\n var selectedTask = gantt.getTask(taskId);\n\n if (gantt.isSummaryTask(selectedTask) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(selectedTask.id);\n }\n\n this.dragMultiple[taskId] = gantt.mixin({\n id: selectedTask.id,\n obj: gantt.copy(selectedTask)\n }, this.drag);\n }, this));\n }\n } // for move unselected summary\n\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(task.id);\n }\n\n gantt.callEvent(\"onTaskDragStart\", []);\n }\n },\n _fireEvent: function _fireEvent(stage, mode, params) {\n gantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n var trigger = this._events[stage][mode];\n gantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n gantt.assert(params, \"Invalid event arguments\");\n if (!gantt.checkEvent(trigger)) return true;\n return gantt.callEvent(trigger, params);\n },\n round_task_dates: function round_task_dates(task) {\n var drag_state = this.drag;\n var config = timeline.$getConfig();\n\n if (!drag_state) {\n drag_state = {\n mode: config.drag_mode.move\n };\n }\n\n this._fix_dnd_scale_time(task, drag_state);\n },\n destructor: function destructor() {\n this._domEvents.detachAll();\n },\n _isMultiselect: function _isMultiselect() {\n return gantt.config.drag_multiple && !!(gantt.getSelectedTasks && gantt.getSelectedTasks().length > 0);\n },\n _addSubtasksToDragMultiple: function _addSubtasksToDragMultiple(summaryId) {\n gantt.eachTask(function (child) {\n this.dragMultiple[child.id] = gantt.mixin({\n id: child.id,\n obj: gantt.copy(child)\n }, this.drag);\n }, summaryId, this);\n }\n };\n}\n\nfunction initTaskDND() {\n var _tasks_dnd;\n\n return {\n extend: function extend(timeline) {\n timeline.roundTaskDates = function (task) {\n _tasks_dnd.round_task_dates(task);\n };\n },\n init: function init(timeline, gantt) {\n _tasks_dnd = createTaskDND(timeline, gantt); // TODO: entry point for touch handlers, move touch to timeline\n\n timeline._tasks_dnd = _tasks_dnd;\n return _tasks_dnd.init(gantt);\n },\n destructor: function destructor() {\n if (_tasks_dnd) {\n _tasks_dnd.destructor();\n\n _tasks_dnd = null;\n }\n }\n };\n}\n\nmodule.exports = {\n createTaskDND: initTaskDND\n};","var utils = require(\"../../../utils/utils\"),\n taskDnD = require(\"./tasks_dnd\"),\n linkDnD = require(\"./links_dnd\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n var services = gantt.$services;\n return {\n onCreated: function onCreated(timeline) {\n var config = timeline.$config;\n config.bind = utils.defined(config.bind) ? config.bind : \"task\";\n config.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n timeline._linksDnD = linkDnD.createLinkDND();\n timeline._tasksDnD = taskDnD.createTaskDND();\n\n timeline._tasksDnD.extend(timeline);\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(timeline) {\n this._attachDomEvents(gantt);\n\n this._attachStateProvider(gantt, timeline);\n\n timeline._tasksDnD.init(timeline, gantt);\n\n timeline._linksDnD.init(timeline, gantt);\n\n if (timeline.$config.id == \"timeline\") {\n this.extendDom(timeline);\n }\n },\n onDestroyed: function onDestroyed(timeline) {\n this._clearDomEvents(gantt);\n\n this._clearStateProvider(gantt);\n\n if (timeline._tasksDnD) {\n timeline._tasksDnD.destructor();\n }\n },\n extendDom: function extendDom(timeline) {\n gantt.$task = timeline.$task;\n gantt.$task_scale = timeline.$task_scale;\n gantt.$task_data = timeline.$task_data;\n gantt.$task_bg = timeline.$task_bg;\n gantt.$task_links = timeline.$task_links;\n gantt.$task_bars = timeline.$task_bars;\n },\n _clearDomEvents: function _clearDomEvents() {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n _attachDomEvents: function _attachDomEvents(gantt) {\n function _delete_link_handler(id, e) {\n if (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n var link = this.getLink(id);\n if (this.isReadonly(link)) return;\n var title = \"\";\n var question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n window.setTimeout(function () {\n gantt._simple_confirm(question, title, function () {\n gantt.deleteLink(id);\n });\n }, this.config.touch ? 300 : 1);\n }\n }\n\n this._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n var id = this.locate(e, this.config.link_attribute);\n\n if (id) {\n this.callEvent(\"onLinkClick\", [id, e]);\n }\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var date = gantt.dateFromPos(pos.x);\n var coll = Math.floor(gantt.columnIndexByDate(date));\n var coll_date = gantt.getScale().trace_x[coll];\n gantt.callEvent(\"onScaleClick\", [e, coll_date]);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e, gantt.config.link_attribute);\n\n _delete_link_handler.call(this, id, e);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e),\n task = this.getTask(id);\n var link = null;\n\n if (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n if (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n link = task.$target[0];\n } else {\n link = task.$source[0];\n }\n }\n\n if (link) _delete_link_handler.call(this, link, e);\n return false;\n }, gantt), this.$task);\n },\n _attachStateProvider: function _attachStateProvider(gantt, timeline) {\n var self = timeline;\n var state = services.getService(\"state\");\n state.registerProvider(\"tasksTimeline\", function () {\n return {\n scale_unit: self._tasks ? self._tasks.unit : undefined,\n scale_step: self._tasks ? self._tasks.step : undefined\n };\n });\n },\n _clearStateProvider: function _clearStateProvider() {\n var state = services.getService(\"state\");\n state.unregisterProvider(\"tasksTimeline\");\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../utils/dom_helpers\");\n/**\r\n * methods for highlighting current drag and drop position\r\n */\n\n\nfunction highlightPosition(target, root, grid) {\n var markerPos = getTaskMarkerPosition(target, grid); // setting position of row\n\n root.marker.style.left = markerPos.x + 9 + \"px\";\n root.marker.style.width = markerPos.width + \"px\";\n root.marker.style.overflow = \"hidden\";\n var markerLine = root.markerLine;\n\n if (!markerLine) {\n markerLine = document.createElement(\"div\");\n markerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n markerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n markerLine.style.pointerEvents = \"none\";\n }\n\n if (target.child) {\n highlightFolder(target, markerLine, grid);\n } else {\n highlightRow(target, markerLine, grid);\n }\n\n if (!root.markerLine) {\n document.body.appendChild(markerLine);\n root.markerLine = markerLine;\n }\n}\n\nfunction removeLineHighlight(root) {\n if (root.markerLine && root.markerLine.parentNode) {\n root.markerLine.parentNode.removeChild(root.markerLine);\n }\n\n root.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid) {\n var linePos = getLineMarkerPosition(target, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom + window.scrollY;\n markerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n markerLine.style.left = linePos.x + \"px\";\n markerLine.style.height = \"4px\";\n var markerLineTop = linePos.y - 2;\n markerLine.style.top = markerLineTop + \"px\";\n markerLine.style.width = linePos.width + \"px\";\n\n if (markerLineTop > maxBottom) {\n markerLine.style.top = maxBottom + 'px';\n }\n\n return markerLine;\n}\n\nfunction highlightFolder(target, markerFolder, grid) {\n var id = target.targetParent;\n var pos = gridToPageCoordinates({\n x: 0,\n y: grid.getItemTop(id)\n }, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom + window.scrollY;\n var folderHighlightWidth = setWidthWithinContainer(grid.$gantt, grid.$grid_data.offsetWidth);\n markerFolder.innerHTML = \"<div class='gantt_grid_dnd_marker_folder'></div>\";\n markerFolder.style.width = folderHighlightWidth + \"px\";\n markerFolder.style.top = pos.y + \"px\";\n markerFolder.style.left = pos.x + \"px\";\n markerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\n if (pos.y > maxBottom) {\n markerFolder.style.top = maxBottom + 'px';\n }\n\n return markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid) {\n var store = grid.$config.rowStore;\n var pos = {\n x: 0,\n y: 0\n };\n var indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n var indent = 15;\n var level = 0;\n\n if (indentNode) {\n indent = indentNode.offsetWidth;\n }\n\n var iconWidth = 40;\n\n if (target.targetId !== store.$getRootId()) {\n var itemTop = grid.getItemTop(target.targetId);\n var itemHeight = grid.getItemHeight(target.targetId);\n level = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n if (target.prevSibling) {\n pos.y = itemTop;\n } else if (target.nextSibling) {\n var childCount = 0;\n store.eachItem(function (child) {\n if (store.getIndexById(child.id) !== -1) childCount++;\n }, target.targetId);\n pos.y = itemTop + itemHeight + childCount * itemHeight;\n } else {\n pos.y = itemTop + itemHeight;\n level += 1;\n }\n }\n\n pos.x = iconWidth + level * indent;\n pos.width = setWidthWithinContainer(grid.$gantt, Math.max(grid.$grid_data.offsetWidth - pos.x, 0), pos.x);\n return gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid) {\n var gridPos = domHelpers.getNodePosition(grid.$grid_data);\n pos.x += gridPos.x + grid.$grid.scrollLeft;\n pos.y += gridPos.y - grid.$grid_data.scrollTop;\n return pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data); // row offset\n\n var x = pos.x + grid.$grid.scrollLeft;\n var y = ePos.y - 10;\n var rowHeight = grid.getItemHeight(e.targetId); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n pos.x = x;\n pos.y = y;\n pos.width = setWidthWithinContainer(grid.$gantt, pos.width, 9);\n return pos;\n}\n\nfunction setWidthWithinContainer(gantt, width) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var containerSize = domHelpers.getNodePosition(gantt.$root);\n\n if (width > containerSize.width) {\n width = containerSize.width - offset - 2;\n }\n\n return width;\n}\n\nmodule.exports = {\n removeLineHighlight: removeLineHighlight,\n highlightPosition: highlightPosition\n};","/**\r\n * resolve dnd position of the task when gantt.config.order_branch_free = true\r\n */\nvar dropTarget = require(\"./drop_target\");\n\nmodule.exports = function getMultiLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store) {\n var result;\n\n if (targetTaskId !== store.$getRootId()) {\n if (relTargetPos < 0.25) {\n result = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n } else if (relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)) {\n result = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n } else {\n result = dropTarget.firstChildTarget(dndTaskId, targetTaskId, store);\n }\n } else {\n var rootId = store.$getRootId();\n\n if (store.hasChild(rootId) && eventTop >= 0) {\n result = dropTarget.lastChildTarget(dndTaskId, rootId, store);\n } else {\n result = dropTarget.firstChildTarget(dndTaskId, rootId, store);\n }\n }\n\n return result;\n};","/**\r\n * resolve dnd position of the task when gantt.config.order_branch_free = false\r\n */\nvar dropTarget = require(\"./drop_target\");\n\nfunction getLast(store) {\n var current = store.getNext();\n\n while (store.exists(current)) {\n var next = store.getNext(current);\n\n if (!store.exists(next)) {\n return current;\n } else {\n current = next;\n }\n }\n\n return null;\n}\n\nfunction findClosesTarget(dndTaskId, taskId, allowedLevel, store, up) {\n var prev = taskId;\n\n while (store.exists(prev)) {\n var targetLevel = store.calculateItemLevel(store.getItem(prev));\n\n if ((targetLevel === allowedLevel || targetLevel === allowedLevel - 1) && store.getBranchIndex(prev) > -1) {\n break;\n } else {\n prev = up ? store.getPrev(prev) : store.getNext(prev);\n }\n }\n\n if (store.exists(prev)) {\n if (store.calculateItemLevel(store.getItem(prev)) === allowedLevel) {\n return up ? dropTarget.nextSiblingTarget(dndTaskId, prev, store) : dropTarget.prevSiblingTarget(dndTaskId, prev, store);\n } else {\n return dropTarget.firstChildTarget(dndTaskId, prev, store);\n }\n }\n\n return null;\n}\n\nfunction findTargetAbove(dndTaskId, taskId, allowedLevel, store) {\n return findClosesTarget(dndTaskId, taskId, allowedLevel, store, true);\n}\n\nfunction findTargetBelow(dndTaskId, taskId, allowedLevel, store) {\n return findClosesTarget(dndTaskId, taskId, allowedLevel, store, false);\n}\n\nmodule.exports = function getSameLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store, level) {\n var result;\n\n if (targetTaskId !== store.$getRootId()) {\n var targetTask = store.getItem(targetTaskId);\n var targetLevel = store.calculateItemLevel(targetTask);\n\n if (targetLevel === level) {\n var prevSibling = store.getPrevSibling(targetTaskId);\n\n if (relTargetPos < 0.5 && !prevSibling) {\n result = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n } else {\n if (relTargetPos < 0.5) {\n targetTaskId = prevSibling;\n }\n\n result = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n }\n } else if (targetLevel > level) {\n store.eachParent(function (parent) {\n if (store.calculateItemLevel(parent) === level) {\n targetTaskId = parent.id;\n }\n }, targetTask);\n result = findTargetAbove(dndTaskId, targetTaskId, level, store);\n } else {\n var targetAbove = findTargetAbove(dndTaskId, targetTaskId, level, store);\n var targetBelow = findTargetBelow(dndTaskId, targetTaskId, level, store);\n result = relTargetPos < 0.5 ? targetAbove : targetBelow;\n }\n } else {\n var rootId = store.$getRootId();\n var rootLevel = store.getChildren(rootId);\n result = dropTarget.createDropTargetObject();\n\n if (rootLevel.length && eventTop >= 0) {\n result = findTargetAbove(dndTaskId, getLast(store), level, store);\n } else {\n result = findTargetBelow(dndTaskId, rootId, level, store);\n }\n }\n\n return result;\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\n\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\n\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\n\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n var datastore = grid.$config.rowStore;\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task) || checkPlaceholderTask(id)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n dnd.config.marker.style.opacity = 0.4;\n element.style.position = \"static\";\n element.style.pointerEvents = \"none\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n dnd.config.level = store.calculateItemLevel(task);\n dnd.config.drop_target = dropTarget.createDropTargetObject({\n targetParent: store.getParent(task.id),\n targetIndex: store.getBranchIndex(task.id),\n targetId: task.id,\n nextSibling: true\n });\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n function getTargetTaskId(e) {\n var y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n var store = grid.$config.rowStore;\n\n if (!document.doctype) {\n y += window.scrollY;\n }\n\n y = y || 0; // limits for the marker according to the layout layer\n\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos + window.scrollY;\n var minTop = scrollPos;\n var firstVisibleTaskIndex = grid.getItemIndexByTopPosition(grid.$state.scrollTop);\n\n if (!store.exists(firstVisibleTaskIndex)) {\n firstVisibleTaskIndex = store.countVisible() - 1;\n }\n\n if (firstVisibleTaskIndex < 0) {\n return store.$getRootId();\n }\n\n var firstVisibleTaskId = store.getIdByIndex(firstVisibleTaskIndex);\n var firstVisibleTaskPos = grid.$state.scrollTop / grid.getItemHeight(firstVisibleTaskId);\n var hiddenTaskPart = firstVisibleTaskPos - Math.floor(firstVisibleTaskPos);\n\n if (hiddenTaskPart > 0.1 && hiddenTaskPart < 0.9) {\n maxBottom = maxBottom - grid.getItemHeight(firstVisibleTaskId) * hiddenTaskPart;\n minTop = minTop + grid.getItemHeight(firstVisibleTaskId) * (1 - hiddenTaskPart);\n } // GS-715. The placeholder task row shouldn't be draggable below the Gantt container\n\n\n var gridPosition = domHelpers.getNodePosition(grid.$grid_data);\n var gridBottom = gridPosition.y + gridPosition.height;\n var placeholderRowHeight = dnd.config.marker.offsetHeight;\n\n if (y + placeholderRowHeight + window.scrollY >= maxBottom) {\n dnd.config.marker.style.top = gridBottom - placeholderRowHeight + \"px\";\n }\n\n if (y >= maxBottom) {\n y = maxBottom;\n } else if (y <= minTop) {\n y = minTop;\n dnd.config.marker.style.top = gridPosition.y + \"px\";\n }\n\n var index = grid.getItemIndexByTopPosition(y);\n\n if (index > store.countVisible() - 1 || index < 0) {\n return store.$getRootId();\n }\n\n var targetId = store.getIdByIndex(index);\n\n if (checkPlaceholderTask(targetId)) {\n return store.getPrevSibling(targetId);\n }\n\n return store.getIdByIndex(index);\n }\n\n function getDropPosition(e) {\n var targetTaskId = getTargetTaskId(e);\n var relTargetPos = null;\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var lockLevel = !config.order_branch_free;\n var eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n if (!document.doctype) {\n eventTop += window.scrollY;\n }\n\n if (targetTaskId !== store.$getRootId()) {\n var rowTop = grid.getItemTop(targetTaskId);\n var rowHeight = grid.getItemHeight(targetTaskId);\n relTargetPos = (eventTop - rowTop) / rowHeight;\n }\n\n var result;\n\n if (!lockLevel) {\n result = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\n } else {\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\n if (result && result.targetParent && checkPlaceholderTask(result.targetParent)) {\n targetTaskId = store.getPrevSibling(result.targetParent);\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n }\n }\n\n return result;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var target = getDropPosition(e);\n\n if (!target || gantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n target = dropTarget.createDropTargetObject(dnd.config.drop_target);\n }\n\n higlighter.highlightPosition(target, dnd.config, grid);\n dnd.config.drop_target = target;\n\n gantt._waiAria.reorderMarkerAttr(dnd.config.marker);\n\n this.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n higlighter.removeLineHighlight(dnd.config);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n var target = dnd.config.drop_target;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n task.$drop_target = null;\n } else {\n store.move(dnd.config.id, target.targetIndex, target.targetParent);\n gantt.render();\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n }\n\n store.refresh(task.id);\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n if (checkPlaceholderTask(id)) return false;\n var datastore = getStore();\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n element.style.position = \"static\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n dnd.config.index = store.getBranchIndex(dnd.config.id);\n dnd.config.parent = task.parent;\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n dnd.lastTaskOfLevel = function (level) {\n var last_item = null;\n var store = getStore();\n var tasks = store.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n if (tasks[i].$level == level) {\n last_item = tasks[i];\n }\n }\n\n return last_item ? last_item.id : null;\n };\n\n dnd._getGridPos = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data); // row offset\n\n var x = pos.x + grid.$grid.scrollLeft;\n var y = e.pos.y - 10;\n var rowHeight = grid.getItemHeight(dnd.config.id); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n var maxBottom = pos.y + pos.height;\n\n if (y > maxBottom - rowHeight) {\n y = maxBottom - rowHeight;\n }\n\n pos.x = x;\n pos.y = y;\n return pos;\n }, gantt);\n dnd._getTargetY = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n var y = e.pageY - pos.y + scrollPos;\n\n if (y > maxBottom) {\n y = maxBottom;\n } else if (y < scrollPos) {\n y = scrollPos;\n }\n\n return y;\n }, gantt);\n dnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n var store = getStore();\n y = y || 0;\n var index = grid.getItemIndexByTopPosition(y);\n index = dropIndex < index ? index - 1 : index;\n if (index > store.countVisible() - 1) return null;\n return store.getIdByIndex(index);\n }, gantt);\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var gridDataSizes = gantt.$grid_data.getBoundingClientRect();\n var maxBottom = gridDataSizes.height + gridDataSizes.y + (grid.$state.scrollTop || 0) + window.scrollY;\n var dd = dnd.config;\n\n var pos = dnd._getGridPos(e);\n\n gantt._waiAria.reorderMarkerAttr(dd.marker);\n\n var config = grid.$getConfig(),\n store = getStore(); // setting position of row\n\n if (pos.y < maxBottom) {\n dd.marker.style.top = pos.y + \"px\";\n } else {\n dd.marker.style.top = maxBottom + \"px\";\n }\n\n dd.marker.style.left = pos.x + 10 + \"px\";\n var containerSize = domHelpers.getNodePosition(gantt.$root);\n\n if (pos.width > containerSize.width) {\n dd.marker.style.width = containerSize.width - 10 - 2 + \"px\";\n dd.marker.style.overflow = \"hidden\";\n } // highlight row when mouseover\n\n\n var item = store.getItem(dnd.config.id);\n\n var targetY = dnd._getTargetY(e);\n\n var el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n if (!store.exists(el)) {\n el = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\n if (el == dnd.config.id) {\n el = null;\n }\n }\n\n function allowedLevel(next, item) {\n return !store.isChildOf(over.id, item.id) && (next.$level == item.$level || config.order_branch_free);\n }\n\n if (store.exists(el)) {\n var over = store.getItem(el);\n var itemTop = grid.getItemTop(over.id);\n var itemHeight = grid.getItemHeight(over.id);\n\n if (itemTop + itemHeight / 2 < targetY) {\n //hovering over bottom part of item, check can be drop to bottom\n var index = store.getIndexById(over.id);\n var nextId = store.getNext(over.id); //adds +1 when hovering over placeholder\n\n var next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (next) {\n if (next.id != item.id) {\n over = next; //there is a valid target\n } else {\n if (config.order_branch_free) {\n if (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1)) return;else {\n store.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n return;\n }\n } else {\n return;\n }\n }\n } else {\n //we at end of the list, check and drop at the end of list\n nextId = store.getIdByIndex(index);\n next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (allowedLevel(next, item) && next.id != item.id) {\n store.move(item.id, -1, store.getParent(next.id));\n return;\n }\n }\n } else if (config.order_branch_free) {\n if (over.id != item.id && allowedLevel(over, item) && !checkPlaceholderTask(over.id)) {\n if (!store.hasChild(over.id)) {\n over.$open = true;\n store.move(item.id, -1, over.id);\n return;\n }\n\n if (store.getIndexById(over.id) || itemHeight / 3 < targetY) return;\n }\n } //if item is on different level, check the one before it\n\n\n var index = store.getIndexById(over.id),\n prevId = store.getIdByIndex(index - 1);\n var prev = store.getItem(prevId);\n var shift = 1;\n\n while ((!prev || prev.id == over.id) && index - shift >= 0) {\n prevId = store.getIdByIndex(index - shift);\n prev = store.getItem(prevId);\n shift++;\n }\n\n if (item.id == over.id || checkPlaceholderTask(over.id)) return; //replacing item under cursor\n\n if (allowedLevel(over, item) && item.id != over.id) {\n store.move(item.id, 0, 0, over.id);\n } else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n store.move(item.id, 0, over.id);\n } else if (prev && allowedLevel(prev, item) && item.id != prev.id) {\n store.move(item.id, -1, store.getParent(prev.id));\n }\n }\n\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n store.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n task.$drop_target = null;\n } else {\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n }\n\n gantt.render();\n this.refreshData();\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\n\nvar rowDnd = require(\"./tasks_grid_dnd\");\n\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n onCreated: function onCreated(grid) {\n grid.$config = utils.mixin(grid.$config, {\n bind: \"task\"\n });\n\n if (grid.$config.id == \"grid\") {\n this.extendGantt(grid);\n gantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n gantt.ext.inlineEditors.init();\n }\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(grid) {\n var config = grid.$getConfig();\n\n if (config.order_branch) {\n if (config.order_branch == \"marker\") {\n rowDndMarker.init(grid.$gantt, grid);\n } else {\n rowDnd.init(grid.$gantt, grid);\n }\n }\n\n this.initEvents(grid, gantt);\n\n if (grid.$config.id == \"grid\") {\n this.extendDom(grid);\n }\n },\n onDestroyed: function onDestroyed(grid) {\n if (grid.$config.id == \"grid\") {\n gantt.ext.inlineEditors.destructor();\n }\n\n this.clearEvents(grid, gantt);\n },\n initEvents: function initEvents(grid, gantt) {\n this._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n\n if (id !== null) {\n var task = this.getTask(id);\n if (config.scroll_on_click && !gantt._is_icon_open_click(e)) this.showDate(task.start_date);\n gantt.callEvent(\"onTaskRowClick\", [id, trg]);\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n var column = trg.getAttribute(\"data-column-id\");\n if (!gantt.callEvent(\"onGridHeaderClick\", [column, e])) return;\n var config = grid.$getConfig();\n\n if (column == \"add\") {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n return;\n }\n\n if (config.sort && column) {\n // GS-929: if there is no column name, we cannot sort the column\n var sorting_method = column,\n conf;\n\n for (var i = 0; i < config.columns.length; i++) {\n if (config.columns[i].name == column) {\n conf = config.columns[i];\n break;\n }\n }\n\n if (conf && conf.sort !== undefined && conf.sort !== true) {\n sorting_method = conf.sort;\n\n if (!sorting_method) {\n // column sort property 'false', no sorting\n return;\n }\n }\n\n var sort = this._sort && this._sort.direction && this._sort.name == column ? this._sort.direction : \"desc\"; // invert sort direction\n\n sort = sort == \"desc\" ? \"asc\" : \"desc\";\n this._sort = {\n name: column,\n direction: sort\n };\n this.sort(sorting_method, sort == \"desc\");\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n if (config.readonly) return;\n var item = {};\n this.createTask(item, id ? id : gantt.config.root_id);\n return false;\n }, gantt), grid.$grid);\n },\n clearEvents: function clearEvents(grid, gantt) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n extendDom: function extendDom(grid) {\n gantt.$grid = grid.$grid;\n gantt.$grid_scale = grid.$grid_scale;\n gantt.$grid_data = grid.$grid_data;\n },\n extendGantt: function extendGantt(grid) {\n gantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n grid.attachEvent(\"onColumnResizeStart\", function () {\n return gantt.callEvent(\"onColumnResizeStart\", arguments);\n });\n grid.attachEvent(\"onColumnResize\", function () {\n return gantt.callEvent(\"onColumnResize\", arguments);\n });\n grid.attachEvent(\"onColumnResizeEnd\", function () {\n return gantt.callEvent(\"onColumnResizeEnd\", arguments);\n });\n grid.attachEvent(\"onColumnResizeComplete\", function (columns, totalWidth) {\n gantt.config.grid_width = totalWidth;\n });\n grid.attachEvent(\"onBeforeRowResize\", function () {\n return gantt.callEvent(\"onBeforeRowResize\", arguments);\n });\n grid.attachEvent(\"onRowResize\", function () {\n return gantt.callEvent(\"onRowResize\", arguments);\n });\n grid.attachEvent(\"onBeforeRowResizeEnd\", function () {\n return gantt.callEvent(\"onBeforeRowResizeEnd\", arguments);\n });\n grid.attachEvent(\"onAfterRowResize\", function () {\n return gantt.callEvent(\"onAfterRowResize\", arguments);\n });\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridTaskRowResizerRender(gantt) {\n function _render_grid_item(item, view, viewport) {\n var config = view.$getConfig();\n var resize_el = document.createElement(\"div\");\n resize_el.className = \"gantt_task_grid_row_resize_wrap\";\n resize_el.style.top = view.getItemTop(item.id) + view.getItemHeight(item.id) + \"px\";\n resize_el.innerHTML = \"<div class='gantt_task_grid_row_resize' role='cell'></div>\";\n resize_el.setAttribute(config.task_grid_row_resizer_attribute, item.id);\n\n gantt._waiAria.rowResizerAttr(resize_el);\n\n return resize_el;\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createGridTaskRowResizerRender;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction renderBar(level, start, end, timeline) {\n var top = (1 - (level * 1 || 0)) * 100;\n var left = timeline.posFromDate(start);\n var right = timeline.posFromDate(end);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_hor_bar\";\n element.style.top = top + '%';\n element.style.left = left + \"px\";\n element.style.width = right - left + 1 + \"px\";\n return element;\n}\n\nfunction renderConnection(prevLevel, nextLevel, left) {\n if (prevLevel === nextLevel) {\n return null;\n }\n\n var top = 1 - Math.max(prevLevel, nextLevel);\n var height = Math.abs(prevLevel - nextLevel);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_vert_bar\";\n element.style.top = top * 100 + \"%\";\n element.style.height = height * 100 + \"%\";\n element.style.left = left + \"px\";\n return element;\n}\n\nfunction generateRenderResourceHistogram(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedHistogramCells = {};\n var renderedHistogramRows = {};\n var renderedHistogramCapacity = {};\n\n function detachRenderedHistogramCell(id, index) {\n var renderedRow = renderedHistogramCells[id];\n\n if (renderedRow && renderedRow[index] && renderedRow[index].parentNode) {\n renderedRow[index].parentNode.removeChild(renderedRow[index]);\n }\n }\n\n function renderHistogramLine(capacity, timeline, maxCapacity, viewport) {\n var scale = timeline.getScale();\n var el = document.createElement(\"div\");\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var i = range.start; i <= range.end; i++) {\n var colStart = scale.trace_x[i];\n var colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n var col = scale.trace_x[i].valueOf();\n var level = Math.min(capacity[col] / maxCapacity, 1) || 0; // do not render histogram for lines with below zero capacity, as it's reserved for folders\n\n if (level < 0) {\n return null;\n }\n\n var nextLevel = Math.min(capacity[colEnd.valueOf()] / maxCapacity, 1) || 0;\n var bar = renderBar(level, colStart, colEnd, timeline);\n\n if (bar) {\n el.appendChild(bar);\n }\n\n var connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\n if (connection) {\n el.appendChild(connection);\n }\n }\n\n return el;\n }\n\n function renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport) {\n var renderedElement = renderedHistogramCapacity[resource.id];\n\n if (renderedElement && renderedElement.parentNode) {\n renderedElement.parentNode.removeChild(renderedElement);\n }\n\n var capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\n\n if (capacityElement && sizes) {\n capacityElement.setAttribute(\"data-resource-id\", resource.id);\n capacityElement.setAttribute(timeline.$config.item_attribute, resource.id);\n capacityElement.style.position = \"absolute\";\n capacityElement.style.top = sizes.top + 1 + \"px\";\n capacityElement.style.height = timeline.getItemHeight(resource.id) - 1 + \"px\";\n capacityElement.style.left = 0;\n }\n\n return capacityElement;\n }\n\n function renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline) {\n var css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var el = document.createElement('div');\n el.className = [\"gantt_histogram_cell\", css].join(\" \");\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + (sizes.top + 1) + 'px'].join(\";\");\n\n if (content) {\n content = \"<div class='gantt_histogram_label'>\" + content + \"</div>\";\n }\n\n if (fill) {\n content = \"<div class='gantt_histogram_fill' style='height:\" + Math.min(fill / maxCapacity || 0, 1) * 100 + \"%;'></div>\" + content;\n }\n\n if (content) {\n el.innerHTML = content;\n }\n\n return el;\n }\n\n return null;\n }\n\n function renderResourceHistogram(resource, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n var cells = [];\n var capacityMatrix = {};\n var maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n renderedHistogramCells[resource.id] = {};\n renderedHistogramRows[resource.id] = null;\n renderedHistogramCapacity[resource.id] = null;\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n\n if (!day) {\n continue;\n }\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n continue;\n }\n\n var capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n capacityMatrix[day.start_date.valueOf()] = capacity || 0;\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n var el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\n if (el) {\n cells.push(el);\n renderedHistogramCells[resource.id][columnIndex] = el;\n }\n }\n\n var row = null;\n\n if (cells.length) {\n row = document.createElement(\"div\");\n\n for (var i = 0; i < cells.length; i++) {\n row.appendChild(cells[i]);\n }\n\n var capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\n if (capacityElement) {\n row.appendChild(capacityElement);\n renderedHistogramCapacity[resource.id] = capacityElement;\n }\n\n renderedHistogramRows[resource.id] = row;\n }\n\n return row;\n }\n\n function updateResourceHistogram(resource, node, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n var maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n var capacityMatrix = {};\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var range = getVisibleCellsRange(scale, viewport);\n var checkedColumns = {};\n\n if (renderedHistogramCells && renderedHistogramCells[resource.id]) {\n for (var i in renderedHistogramCells[resource.id]) {\n checkedColumns[i] = i;\n }\n }\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n checkedColumns[columnIndex] = false;\n\n if (!day) {\n continue;\n }\n\n var capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n capacityMatrix[day.start_date.valueOf()] = capacity || 0;\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n detachRenderedHistogramCell(resource.id, columnIndex);\n continue;\n }\n\n var renderedCell = renderedHistogramCells[resource.id];\n\n if (!renderedCell || !renderedCell[columnIndex]) {\n var el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\n if (el) {\n node.appendChild(el);\n renderedHistogramCells[resource.id][columnIndex] = el;\n }\n } else if (renderedCell && renderedCell[columnIndex] && !renderedCell[columnIndex].parentNode) {\n node.appendChild(renderedCell[columnIndex]);\n }\n }\n\n for (var i in checkedColumns) {\n if (checkedColumns[i] !== false) {\n detachRenderedHistogramCell(resource.id, i);\n }\n }\n\n var capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\n if (capacityElement) {\n node.appendChild(capacityElement);\n renderedHistogramCapacity[resource.id] = capacityElement;\n }\n }\n\n return {\n render: renderResourceHistogram,\n update: updateResourceHistogram,\n getRectangle: getRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = generateRenderResourceHistogram;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction generateRenderResourceLine(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedResourceLines = {};\n\n function renderResourceLineCell(resource, day, templates, config, timeline) {\n var css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n var el = document.createElement('div');\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.className = [\"gantt_resource_marker\", css].join(\" \");\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + sizes.top + 'px'].join(\";\");\n if (content) el.innerHTML = content;\n return el;\n }\n\n return null;\n }\n\n function detachRenderedResourceLine(id, index) {\n if (renderedResourceLines[id] && renderedResourceLines[id][index] && renderedResourceLines[id][index].parentNode) {\n renderedResourceLines[id][index].parentNode.removeChild(renderedResourceLines[id][index]);\n }\n }\n\n function renderResourceLine(resource, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var cells = [];\n renderedResourceLines[resource.id] = {};\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n\n if (!day) {\n continue;\n }\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n continue;\n }\n\n var cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\n if (cell) {\n cells.push(cell);\n renderedResourceLines[resource.id][columnIndex] = cell;\n }\n }\n\n var row = null;\n\n if (cells.length) {\n row = document.createElement(\"div\");\n\n for (var i = 0; i < cells.length; i++) {\n row.appendChild(cells[i]);\n }\n }\n\n return row;\n }\n\n function updateResourceLine(resource, node, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n var range = getVisibleCellsRange(scale, viewport);\n var checkedColumns = {};\n\n if (renderedResourceLines && renderedResourceLines[resource.id]) {\n for (var i in renderedResourceLines[resource.id]) {\n checkedColumns[i] = i;\n }\n }\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n checkedColumns[columnIndex] = false;\n\n if (!day) {\n continue;\n }\n\n if (!isColumnVisible(columnIndex, scale, viewport, gantt)) {\n detachRenderedResourceLine(resource.id, columnIndex);\n continue;\n }\n\n if (!renderedResourceLines[resource.id] || !renderedResourceLines[resource.id][columnIndex]) {\n var cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\n if (cell) {\n node.appendChild(cell);\n renderedResourceLines[resource.id][columnIndex] = cell;\n }\n } else if (renderedResourceLines[resource.id] && renderedResourceLines[resource.id][columnIndex] && !renderedResourceLines[resource.id][columnIndex].parentNode) {\n node.appendChild(renderedResourceLines[resource.id][columnIndex]);\n }\n }\n\n for (var i in checkedColumns) {\n if (checkedColumns[i] !== false) {\n detachRenderedResourceLine(resource.id, i);\n }\n }\n }\n\n return {\n render: renderResourceLine,\n update: updateResourceLine,\n getRectangle: getRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = generateRenderResourceLine;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"../../../utils/helpers\");\n\nvar getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridLineRender(gantt) {\n function _render_grid_item(item, view, config, viewport) {\n var columns = view.getGridColumns();\n var templates = view.$getTemplates();\n var store = view.$config.rowStore;\n var cells = [];\n var has_child;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i];\n var cell;\n var value;\n var textValue;\n\n if (col.name == \"add\") {\n var aria = gantt._waiAria.gridAddButtonAttrString(col);\n\n value = \"<div \" + aria + \" class='gantt_add'></div>\";\n textValue = \"\";\n } else {\n if (col.template) value = col.template(item);else value = item[col.name];\n\n if (helpers.isDate(value)) {\n value = templates.date_grid(value, item, col.name);\n }\n\n if (value === null || value === undefined) {\n value = \"\";\n }\n\n textValue = value;\n value = \"<div class='gantt_tree_content'>\" + value + \"</div>\";\n }\n\n var css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\n var tree = [];\n\n if (col.tree) {\n css += \" gantt_cell_tree\";\n\n for (var j = 0; j < item.$level; j++) {\n tree.push(templates.grid_indent(item));\n }\n\n has_child = store.hasChild(item.id) && !(gantt.isSplitTask(item) && !gantt.config.open_split_tasks);\n\n if (has_child) {\n tree.push(templates.grid_open(item));\n tree.push(templates.grid_folder(item));\n } else {\n tree.push(templates.grid_blank(item));\n tree.push(templates.grid_file(item));\n }\n }\n\n var style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\n\n if (this.defined(col.align)) {\n var flexAlign = {\n right: \"flex-end\",\n left: \"flex-start\",\n center: \"center\"\n };\n var justifyContent = flexAlign[col.align];\n style += \"text-align:\" + col.align + \";justify-content:\" + justifyContent + \";\";\n }\n\n var aria = gantt._waiAria.gridCellAttrString(col, textValue, item);\n\n tree.push(value);\n cell = \"<div class='\" + css + \"' data-column-index='\" + i + \"' data-column-name='\" + col.name + \"' style='\" + style + \"' \" + aria + \">\" + tree.join(\"\") + \"</div>\";\n cells.push(cell);\n } // GS-291. The odd class should be assigned correctly\n\n\n css = \"\";\n var storeName = store.$config.name;\n\n switch (storeName) {\n case \"task\":\n css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n break;\n\n case \"resource\":\n css = store.visibleOrder.indexOf(item.id) % 2 === 0 ? \"\" : \" odd\";\n break;\n }\n\n css += item.$transparent ? \" gantt_transparent\" : \"\";\n css += item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\";\n\n if (templates.grid_row_class) {\n var css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n if (css_template) css += \" \" + css_template;\n }\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n var height = view.getItemHeight(item.id);\n el.style.height = height + \"px\";\n el.style.lineHeight = height + \"px\";\n\n if (config.smart_rendering) {\n el.style.position = \"absolute\";\n el.style.left = \"0px\";\n el.style.top = view.getItemTop(item.id) + \"px\";\n }\n\n if (view.$config.item_attribute) {\n el.setAttribute(view.$config.item_attribute, item.id);\n el.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n gantt._waiAria.taskRowAttr(item, el);\n\n el.innerHTML = cells.join(\"\");\n return el;\n }\n\n function onrender(item, rowNode, view) {\n var columns = view.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n var column = columns[i];\n\n if (column.onrender) {\n // find cell node for current column\n var cellNode = rowNode.querySelector(\"[data-column-name=\" + column.name + \"]\");\n\n if (cellNode) {\n var content = column.onrender(item, cellNode);\n\n if (content && typeof content === \"string\") {\n cellNode.innerHTML = content;\n } else if (content && _typeof(content) === \"object\") {\n // render object to node using additional functionality\n if (gantt.config.external_render) {\n var adapter = gantt.config.external_render;\n\n if (adapter.isElement(content)) {\n adapter.renderElement(content, cellNode);\n }\n }\n }\n }\n }\n }\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n onrender: onrender\n };\n}\n\nmodule.exports = createGridLineRender;","var isInViewPort = require(\"./viewport/is_link_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/factory/get_visible_link_range\");\n\nfunction createLinkRender(gantt) {\n function _render_link_element(link, view, config) {\n var source = gantt.getTask(link.source);\n\n if (source.hide_bar) {\n return;\n }\n\n var target = gantt.getTask(link.target);\n\n if (target.hide_bar) {\n return;\n }\n\n var pt = path_builder.get_endpoint(link, view, source, target);\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n\n if (!dx && !dy) {\n return null;\n }\n\n var dots = path_builder.get_points(link, view, source, target);\n var lines = drawer.get_lines(dots, view);\n var div = document.createElement(\"div\");\n var css = \"gantt_task_link\";\n\n if (link.color) {\n css += \" gantt_link_inline_color\";\n }\n\n var cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\n if (cssTemplate) {\n css += \" \" + cssTemplate;\n }\n\n if (config.highlight_critical_path && gantt.isCriticalLink) {\n if (gantt.isCriticalLink(link)) css += \" gantt_critical_link\";\n }\n\n div.className = css;\n\n if (view.$config.link_attribute) {\n div.setAttribute(view.$config.link_attribute, link.id);\n div.setAttribute(\"link_id\", link.id);\n }\n\n for (var i = 0; i < lines.length; i++) {\n if (i == lines.length - 1) {\n lines[i].size -= config.link_arrow_size;\n }\n\n var el = drawer.render_line(lines[i], lines[i + 1], view, link.source);\n\n if (link.color) {\n el.firstChild.style.backgroundColor = link.color;\n }\n\n div.appendChild(el);\n }\n\n var direction = lines[lines.length - 1].direction;\n\n var endpoint = _render_link_arrow(dots[dots.length - 1], direction, view, link.source);\n\n if (link.color) {\n endpoint.style.borderColor = link.color;\n }\n\n div.appendChild(endpoint);\n\n gantt._waiAria.linkAttr(link, div);\n\n return div;\n }\n\n function _render_link_arrow(point, direction, view, targetId) {\n var config = view.$getConfig();\n var div = document.createElement(\"div\");\n var top = point.y;\n var left = point.x;\n var size = config.link_arrow_size;\n var className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\n switch (direction) {\n case drawer.dirs.right:\n top -= size / 2;\n left -= size;\n break;\n\n case drawer.dirs.left:\n top -= size / 2;\n break;\n\n case drawer.dirs.up:\n left -= size;\n break;\n\n case drawer.dirs.down:\n top += size * 2;\n left -= size;\n break;\n\n default:\n break;\n }\n\n div.style.cssText = [\"top:\" + top + \"px\", \"left:\" + left + 'px'].join(';');\n div.className = className;\n return div;\n }\n\n var drawer = {\n current_pos: null,\n dirs: {\n \"left\": 'left',\n \"right\": 'right',\n \"up\": 'up',\n \"down\": 'down'\n },\n path: [],\n clear: function clear() {\n this.current_pos = null;\n this.path = [];\n },\n point: function point(pos) {\n this.current_pos = gantt.copy(pos);\n },\n get_lines: function get_lines(dots) {\n this.clear();\n this.point(dots[0]);\n\n for (var i = 1; i < dots.length; i++) {\n this.line_to(dots[i]);\n }\n\n return this.get_path();\n },\n line_to: function line_to(pos) {\n var next = gantt.copy(pos);\n var prev = this.current_pos;\n\n var line = this._get_line(prev, next);\n\n this.path.push(line);\n this.current_pos = next;\n },\n get_path: function get_path() {\n return this.path;\n },\n get_wrapper_sizes: function get_wrapper_sizes(v, view, itemId) {\n var config = view.$getConfig();\n var res,\n wrapper_size = config.link_wrapper_width,\n y = v.y - wrapper_size / 2;\n\n switch (v.direction) {\n case this.dirs.left:\n res = {\n top: y,\n height: wrapper_size,\n lineHeight: wrapper_size,\n left: v.x - v.size - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.right:\n res = {\n top: y,\n lineHeight: wrapper_size,\n height: wrapper_size,\n left: v.x - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.up:\n res = {\n top: y - v.size,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n case this.dirs.down:\n res = {\n top: y\n /*- wrapper_size/2*/\n ,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n get_line_sizes: function get_line_sizes(v, view) {\n var config = view.$getConfig();\n var res,\n line_size = config.link_line_width,\n wrapper_size = config.link_wrapper_width,\n size = v.size + line_size;\n\n switch (v.direction) {\n case this.dirs.left:\n case this.dirs.right:\n res = {\n height: line_size,\n width: size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n case this.dirs.up:\n case this.dirs.down:\n res = {\n height: size,\n width: line_size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n render_line: function render_line(v, end, view, itemId) {\n var pos = this.get_wrapper_sizes(v, view, itemId);\n var wrapper = document.createElement(\"div\");\n wrapper.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"height:\" + pos.height + \"px\", \"width:\" + pos.width + \"px\"].join(';');\n wrapper.className = \"gantt_line_wrapper\";\n var innerPos = this.get_line_sizes(v, view);\n var inner = document.createElement(\"div\");\n inner.style.cssText = [\"height:\" + innerPos.height + \"px\", \"width:\" + innerPos.width + \"px\", \"margin-top:\" + innerPos.marginTop + \"px\", \"margin-left:\" + innerPos.marginLeft + \"px\"].join(\";\");\n inner.className = \"gantt_link_line_\" + v.direction;\n wrapper.appendChild(inner);\n return wrapper;\n },\n _get_line: function _get_line(from, to) {\n var direction = this.get_direction(from, to);\n var vect = {\n x: from.x,\n y: from.y,\n direction: this.get_direction(from, to)\n };\n\n if (direction == this.dirs.left || direction == this.dirs.right) {\n vect.size = Math.abs(from.x - to.x);\n } else {\n vect.size = Math.abs(from.y - to.y);\n }\n\n return vect;\n },\n get_direction: function get_direction(from, to) {\n var direction = 0;\n\n if (to.x < from.x) {\n direction = this.dirs.left;\n } else if (to.x > from.x) {\n direction = this.dirs.right;\n } else if (to.y > from.y) {\n direction = this.dirs.down;\n } else {\n direction = this.dirs.up;\n }\n\n return direction;\n }\n };\n var path_builder = {\n path: [],\n clear: function clear() {\n this.path = [];\n },\n current: function current() {\n return this.path[this.path.length - 1];\n },\n point: function point(next) {\n if (!next) return this.current();\n this.path.push(gantt.copy(next));\n return next;\n },\n point_to: function point_to(direction, diff, point) {\n if (!point) point = gantt.copy(this.point());else point = {\n x: point.x,\n y: point.y\n };\n var dir = drawer.dirs;\n\n switch (direction) {\n case dir.left:\n point.x -= diff;\n break;\n\n case dir.right:\n point.x += diff;\n break;\n\n case dir.up:\n point.y -= diff;\n break;\n\n case dir.down:\n point.y += diff;\n break;\n\n default:\n break;\n }\n\n return this.point(point);\n },\n get_points: function get_points(link, view, source, target) {\n var pt = this.get_endpoint(link, view, source, target);\n var xy = gantt.config;\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n var dir = drawer.dirs;\n var rowHeight = view.getItemHeight(link.source);\n this.clear();\n this.point({\n x: pt.x,\n y: pt.y\n });\n var shiftX = 2 * xy.link_arrow_size; //just random size for first line\n\n var lineType = this.get_line_type(link, view.$getConfig());\n var forward = pt.e_x > pt.x;\n\n if (lineType.from_start && lineType.to_start) {\n this.point_to(dir.left, shiftX);\n\n if (forward) {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n }\n\n this.point_to(dir.right, shiftX);\n } else if (!lineType.from_start && lineType.to_start) {\n forward = pt.e_x > pt.x + 2 * shiftX;\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n dx -= shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx -= 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.right, shiftX);\n }\n } else if (!lineType.from_start && !lineType.to_start) {\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n } else {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n }\n\n this.point_to(dir.left, shiftX);\n } else if (lineType.from_start && !lineType.to_start) {\n forward = pt.e_x > pt.x - 2 * shiftX;\n this.point_to(dir.left, shiftX);\n\n if (!forward) {\n dx += shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx += 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.left, shiftX);\n }\n }\n\n return this.path;\n },\n get_line_type: function get_line_type(link, config) {\n var types = config.links;\n var from_start = false,\n to_start = false;\n\n if (link.type == types.start_to_start) {\n from_start = to_start = true;\n } else if (link.type == types.finish_to_finish) {\n from_start = to_start = false;\n } else if (link.type == types.finish_to_start) {\n from_start = false;\n to_start = true;\n } else if (link.type == types.start_to_finish) {\n from_start = true;\n to_start = false;\n } else {\n gantt.assert(false, \"Invalid link type\");\n }\n\n if (config.rtl) {\n from_start = !from_start;\n to_start = !to_start;\n }\n\n return {\n from_start: from_start,\n to_start: to_start\n };\n },\n get_endpoint: function get_endpoint(link, view, source, target) {\n var config = view.$getConfig();\n var lineType = this.get_line_type(link, config);\n var from_start = lineType.from_start,\n to_start = lineType.to_start;\n var from = getMilestonePosition(source, view, config),\n to = getMilestonePosition(target, view, config);\n return {\n x: from_start ? from.left : from.left + from.width,\n e_x: to_start ? to.left : to.left + to.width,\n y: from.top + from.rowHeight / 2 - 1,\n e_y: to.top + to.rowHeight / 2 - 1\n };\n }\n };\n\n function getMilestonePosition(task, view, config) {\n var pos = view.getItemPosition(task);\n\n if (gantt.getTaskType(task.type) == config.types.milestone) {\n var milestoneHeight = view.getBarHeight(task.id, true);\n var milestoneWidth = Math.sqrt(2 * milestoneHeight * milestoneHeight);\n pos.left -= milestoneWidth / 2;\n pos.width = milestoneWidth;\n }\n\n return pos;\n }\n\n return {\n render: _render_link_element,\n update: null,\n //getRectangle: getLinkRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange()\n };\n}\n\nmodule.exports = createLinkRender;","module.exports = function (items, gantt) {\n var placeholderConfig = gantt.config.timeline_placeholder;\n items = items || [];\n\n if (placeholderConfig && items.filter(function (e) {\n return e.id === 'timeline_placeholder_task';\n }).length === 0) {\n var state = gantt.getState();\n var lastTaskId = null;\n var start_date = state.min_date;\n var end_date = state.max_date;\n\n if (items.length) {\n lastTaskId = items[items.length - 1].id;\n }\n\n var placeholderTask = {\n start_date: start_date,\n end_date: end_date,\n row_height: placeholderConfig.height || 0,\n id: \"timeline_placeholder_task\",\n unscheduled: true,\n lastTaskId: lastTaskId,\n calendar_id: placeholderConfig.calendar || \"global\",\n $source: [],\n $target: []\n };\n items.push(placeholderTask);\n }\n};","var getRowRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar bgPlaceholder = require(\"./prerender/task_bg_placeholder\");\n\nfunction createTaskBgRender(gantt) {\n var renderedCells = {};\n var visibleCells = {};\n\n function isRendered(item, columnIndex) {\n if (renderedCells[item.id][columnIndex] && renderedCells[item.id][columnIndex].parentNode) {\n return true;\n } else {\n return false;\n }\n }\n\n function detachRenderedCell(itemId, columnIndex) {\n if (renderedCells[itemId] && renderedCells[itemId][columnIndex] && renderedCells[itemId][columnIndex].parentNode) {\n renderedCells[itemId][columnIndex].parentNode.removeChild(renderedCells[itemId][columnIndex]);\n }\n }\n\n function getCellClassTemplate(view) {\n var templates = view.$getTemplates();\n var cssTemplate;\n\n if (typeof templates.task_cell_class !== \"undefined\") {\n cssTemplate = templates.task_cell_class; // eslint-disable-next-line no-console\n\n var log = console.warn || console.log;\n log('gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.');\n } else {\n cssTemplate = templates.timeline_cell_class;\n }\n\n return cssTemplate;\n }\n\n function getCellContentTemplate(view) {\n var templates = view.$getTemplates();\n var contentTemplate = templates.timeline_cell_content;\n return contentTemplate;\n }\n\n function renderCells(item, node, view, config, viewPort) {\n var cfg = view.getScale();\n var count = cfg.count;\n var cssTemplate = getCellClassTemplate(view);\n var contentTemplate = getCellContentTemplate(view);\n\n if (config.show_task_cells) {\n if (!renderedCells[item.id]) {\n renderedCells[item.id] = {};\n }\n\n if (!visibleCells[item.id]) {\n visibleCells[item.id] = {};\n }\n\n var range = getVisibleCellsRange(cfg, viewPort);\n\n for (var i in visibleCells[item.id]) {\n var index = visibleCells[item.id][i];\n\n if (Number(index) < range.start || Number(index) > range.end) {\n detachRenderedCell(item.id, index);\n }\n }\n\n visibleCells[item.id] = {}; // TODO: do not iterate all cell, only ones in the viewport and once that are already rendered\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cssTemplate, contentTemplate, config);\n\n if (!cell && isRendered(item, columnIndex)) {\n detachRenderedCell(item.id, columnIndex);\n } else if (cell && !cell.parentNode) {\n node.appendChild(cell);\n }\n }\n }\n }\n\n function renderOneCell(scale, columnIndex, item, viewPort, count, cssTemplate, contentTemplate, config) {\n var width = scale.width[columnIndex],\n cssclass = \"\";\n\n if (isColumnVisible(columnIndex, scale, viewPort, gantt)) {\n //do not render skipped columns\n var cssTemplateContent = cssTemplate(item, scale.trace_x[columnIndex]);\n var htmlTemplateContent = \"\";\n\n if (contentTemplate) {\n // for backward compatibility, contentTemplate was added in 7.2.0+, will be undefined if someone used copy of old config/template object\n htmlTemplateContent = contentTemplate(item, scale.trace_x[columnIndex]);\n }\n\n if (config.static_background) {\n // if cell render in static background is not allowed, or if it's a blank cell\n var customCell = !!(cssTemplateContent || htmlTemplateContent);\n\n if (!(config.static_background_cells && customCell)) {\n return null;\n }\n }\n\n if (renderedCells[item.id][columnIndex]) {\n visibleCells[item.id][columnIndex] = columnIndex;\n return renderedCells[item.id][columnIndex];\n }\n\n var cell = document.createElement(\"div\");\n cell.style.width = width + \"px\";\n cssclass = \"gantt_task_cell\" + (columnIndex == count - 1 ? \" gantt_last_cell\" : \"\");\n\n if (cssTemplateContent) {\n cssclass += \" \" + cssTemplateContent;\n }\n\n cell.className = cssclass;\n\n if (htmlTemplateContent) {\n cell.innerHTML = htmlTemplateContent;\n }\n\n cell.style.position = \"absolute\";\n cell.style.left = scale.left[columnIndex] + \"px\";\n renderedCells[item.id][columnIndex] = cell;\n visibleCells[item.id][columnIndex] = columnIndex;\n return cell;\n }\n\n return null;\n }\n\n function _render_bg_line(item, view, config, viewPort) {\n var templates = view.$getTemplates();\n var cfg = view.getScale();\n var count = cfg.count;\n\n if (config.static_background && !config.static_background_cells) {\n return null;\n }\n\n var row = document.createElement(\"div\");\n var cellCssTemplate = getCellClassTemplate(view);\n var cellHtmlTemplate = getCellContentTemplate(view);\n var range;\n\n if (!viewPort || !config.smart_rendering || isLegacyRender(gantt)) {\n range = {\n start: 0,\n end: count - 1\n };\n } else {\n range = getVisibleCellsRange(cfg, viewPort.x);\n }\n\n if (config.show_task_cells) {\n renderedCells[item.id] = {};\n visibleCells[item.id] = {};\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cellCssTemplate, cellHtmlTemplate, config);\n\n if (cell) {\n row.appendChild(cell);\n }\n }\n } // GS-291. The odd class should be assigned correctly\n\n\n var store = view.$config.rowStore;\n var odd = store.getIndexById(item.id) % 2 !== 0;\n var cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n var css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n row.className = css;\n\n if (config.smart_rendering) {\n row.style.position = \"absolute\";\n row.style.top = view.getItemTop(item.id) + \"px\";\n row.style.width = \"100%\";\n } else {\n row.style.position = \"relative\";\n }\n\n row.style.height = view.getItemHeight(item.id) + \"px\";\n\n if (item.id == \"timeline_placeholder_task\") {\n var placeholderTop = 0;\n\n if (item.lastTaskId) {\n var lastTaskTop = view.getItemTop(item.lastTaskId);\n var lastTaskHeight = view.getItemHeight(item.lastTaskId);\n placeholderTop = lastTaskTop + lastTaskHeight;\n }\n\n var maxHeight = item.row_height || view.$task_data.offsetHeight;\n var placeholderHeight = maxHeight - placeholderTop; // So that it won't exceed the placeholder timeline height\n\n if (placeholderHeight < 0) {\n placeholderHeight = 0;\n }\n\n if (config.smart_rendering) {\n row.style.top = placeholderTop + \"px\";\n }\n\n row.style.height = placeholderHeight + \"px\";\n }\n\n if (view.$config.item_attribute) {\n row.setAttribute(view.$config.item_attribute, item.id);\n row.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n return row;\n }\n\n return {\n render: _render_bg_line,\n update: renderCells,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n prepareData: bgPlaceholder\n };\n}\n\nmodule.exports = createTaskBgRender;","var createBaseBarRender = require(\"./task_bar_render\");\n\nvar isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n var renderedNodes = {};\n\n function checkVisibility(child, viewPort, timeline, config, gantt) {\n var isVisible = true; // GS-2123. Don't render rollup tasks that are outside the viewport\n\n if (config.smart_rendering) {\n isVisible = isInViewPort(child, viewPort, timeline, config, gantt);\n }\n\n return isVisible;\n }\n\n function generateChildElement(task, child, timeline, sizes) {\n var childCopy = gantt.copy(gantt.getTask(child.id));\n childCopy.$rendered_at = task.id; // a way to filter rollup tasks:\n\n var displayRollup = gantt.callEvent(\"onBeforeRollupTaskDisplay\", [childCopy.id, childCopy, task.id]);\n\n if (displayRollup === false) {\n return;\n }\n\n var element = defaultRender(childCopy, timeline);\n\n if (!element) {\n return;\n }\n\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_rollup_child\");\n element.setAttribute(\"data-rollup-parent-id\", task.id);\n return element;\n }\n\n function getKey(childId, renderParentId) {\n return childId + \"_\" + renderParentId;\n }\n\n function renderRollupTask(task, timeline, config, viewPort) {\n if (task.rollup !== false && task.$rollup && task.$rollup.length) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered\n\n if (viewPort) {\n viewPort.y = 0;\n viewPort.y_end = gantt.$task_bg.scrollHeight;\n }\n\n task.$rollup.forEach(function (itemId) {\n if (!gantt.isTaskExists(itemId)) {\n return;\n }\n\n var child = gantt.getTask(itemId);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n var element = generateChildElement(task, child, timeline, sizes);\n\n if (element) {\n renderedNodes[getKey(child.id, task.id)] = element;\n el.appendChild(element);\n } else {\n renderedNodes[getKey(child.id, task.id)] = false;\n }\n });\n return el;\n }\n\n return false;\n }\n\n function repaintRollupTask(task, itemNode, timeline, config, viewPort) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered\n\n viewPort.y = 0;\n viewPort.y_end = gantt.$task_bg.scrollHeight;\n task.$rollup.forEach(function (itemId) {\n var child = gantt.getTask(itemId);\n var rollupKey = getKey(child.id, task.id);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[rollupKey]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[rollupKey] = element || false;\n } else {\n renderedNodes[rollupKey] = false;\n }\n }\n\n if (!!renderedNodes[rollupKey]) {\n el.appendChild(renderedNodes[rollupKey]);\n }\n\n itemNode.innerHTML = \"\";\n itemNode.appendChild(el);\n });\n }\n\n return {\n render: renderRollupTask,\n update: repaintRollupTask,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isBarInViewport = require(\"./is_bar_in_viewport\");\n\nmodule.exports = function isSplitTaskInViewport(item, viewport, view, config, gantt) {\n if (!gantt.isSplitTask(item)) {\n return false;\n }\n\n var range = gantt.getSubtaskDates(item.id);\n return isBarInViewport({\n id: item.id,\n start_date: range.start_date,\n end_date: range.end_date,\n parent: item.parent\n }, viewport, view, gantt);\n};","var createBaseBarRender = require(\"./task_bar_render\"); //const isInViewPort = require(\"./viewport/is_split_task_in_viewport\");\n\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar isInViewPortParent = require(\"./viewport/is_split_task_in_viewport\");\n\nvar isInViewPortChild = require(\"./viewport/is_bar_in_viewport\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n var renderedNodes = {};\n\n function checkVisibility(child, viewPort, timeline, config, gantt) {\n var isVisible = !child.hide_bar; // GS-1195. Don't render split tasks that are outside the viewport\n\n if (config.smart_rendering && isVisible) {\n isVisible = isInViewPortChild(child, viewPort, timeline, config, gantt);\n }\n\n return isVisible;\n }\n\n function generateChildElement(task, child, timeline, sizes) {\n if (child.hide_bar) {\n return;\n }\n\n var isProject = gantt.isSummaryTask(child);\n\n if (isProject) {\n gantt.resetProjectDates(child);\n }\n\n var childCopy = gantt.copy(gantt.getTask(child.id));\n childCopy.$rendered_at = task.id; // a way to filter split tasks:\n\n var showSplitTask = gantt.callEvent(\"onBeforeSplitTaskDisplay\", [childCopy.id, childCopy, task.id]);\n\n if (showSplitTask === false) {\n return;\n }\n\n var element = defaultRender(childCopy, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_split_child\");\n\n if (isProject) {\n element.classList.add(\"gantt_split_subproject\");\n }\n\n return element;\n }\n\n function getKey(childId, renderParentId) {\n return childId + \"_\" + renderParentId;\n }\n\n function shouldUseSplitRendering(task, config) {\n return gantt.isSplitTask(task) && (config.open_split_tasks && !task.$open || !config.open_split_tasks) && gantt.hasChild(task.id);\n }\n\n function renderSplitTask(task, timeline, config, viewPort) {\n if (shouldUseSplitRendering(task, config)) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n\n if (gantt.hasChild(task.id)) {\n gantt.eachTask(function (child) {\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n var element = generateChildElement(task, child, timeline, sizes);\n\n if (element) {\n renderedNodes[getKey(child.id, task.id)] = element;\n el.appendChild(element);\n } else {\n renderedNodes[getKey(child.id, task.id)] = false;\n }\n }, task.id);\n }\n\n return el;\n }\n\n return false;\n }\n\n function repaintSplitTask(task, itemNode, timeline, config, viewPort) {\n if (shouldUseSplitRendering(task, config)) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task);\n gantt.eachTask(function (child) {\n var splitKey = getKey(child.id, task.id);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[splitKey]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[splitKey] = element || false;\n } else {\n renderedNodes[splitKey] = false;\n }\n }\n\n if (!!renderedNodes[splitKey]) {\n el.appendChild(renderedNodes[splitKey]);\n }\n\n itemNode.innerHTML = \"\";\n itemNode.appendChild(el);\n }, task.id);\n }\n }\n\n return {\n render: renderSplitTask,\n update: repaintSplitTask,\n isInViewPort: isInViewPortParent,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar createBaseBarRender = require(\"./task_bar_render\");\n\nmodule.exports = function createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n return {\n render: defaultRender,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n};","module.exports = function (gantt) {\n return function processTaskDateProperties(item, mapTo, mode) {\n if (mode == \"keepDates\") {\n keepDatesOnEdit(item, mapTo);\n } else if (mode == \"keepDuration\") {\n keepDurationOnEdit(item, mapTo);\n } else {\n defaultActionOnEdit(item, mapTo);\n }\n }; // resize task\n // resize task when start/end/duration changes\n\n function keepDatesOnEdit(item, mapTo) {\n if (mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\" || mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } // move task(before 6.2)\n // move task when start/end dates changes\n // resize task when duration changes\n\n\n function keepDurationOnEdit(item, mapTo) {\n if (mapTo == \"end_date\") {\n item.start_date = decreaseStartDate(item);\n } else if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n }\n } // default behavior\n // move task when start date changes\n // resize task when end date/duration changes\n\n\n function defaultActionOnEdit(item, mapTo) {\n if (gantt.config.schedule_from_end) {\n if (mapTo == \"end_date\" || mapTo == \"duration\") {\n item.start_date = decreaseStartDate(item);\n } else if (mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } else {\n if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n }\n }\n\n function decreaseStartDate(item) {\n return gantt.calculateEndDate({\n start_date: item.end_date,\n duration: -item.duration,\n task: item\n });\n }\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.durationFormatter();\n }\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><input type='text' name='\".concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = getFormatter(column.editor).format(value);\n },\n get_value: function get_value(id, column, node) {\n return getFormatter(column.editor).parse(this.get_input(node).value || \"\");\n }\n }, true);\n return TextEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function PredecessorEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(PredecessorEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.linkFormatter();\n }\n\n function parseInputString(value, config) {\n var predecessors = (value || \"\").split(config.delimiter || \",\");\n\n for (var i = 0; i < predecessors.length; i++) {\n var val = predecessors[i].trim();\n\n if (val) {\n predecessors[i] = val;\n } else {\n predecessors.splice(i, 1);\n i--;\n }\n }\n\n predecessors.sort();\n return predecessors;\n }\n\n function formatPredecessors(task, config, gantt) {\n var links = task.$target;\n var labels = [];\n\n for (var i = 0; i < links.length; i++) {\n var link = gantt.getLink(links[i]);\n labels.push(getFormatter(config).format(link));\n }\n\n return labels.join((config.delimiter || \",\") + \" \");\n }\n\n function getSelectedLinks(taskId, predecessorCodes, config) {\n var links = [];\n predecessorCodes.forEach(function (code) {\n var link = getFormatter(config).parse(code);\n\n if (link) {\n link.target = taskId; // GS-1290 A way to preserve the link. Otherwise validation will return false\n // because the existing link ID is not passed there\n\n link.id = \"predecessor_generated\";\n\n if (gantt.isLinkAllowed(link)) {\n link.id = undefined;\n links.push(link);\n }\n }\n });\n return links;\n }\n\n function formatLinkKey(link) {\n return link.source + \"_\" + link.target + \"_\" + link.type + \"_\" + (link.lag || 0);\n }\n\n function getLinksDiff(task, predecessorCodes, config) {\n var selectedLinks = getSelectedLinks(task.id, predecessorCodes, config);\n var existingLinksSearch = {};\n task.$target.forEach(function (linkId) {\n var link = gantt.getLink(linkId);\n existingLinksSearch[formatLinkKey(link)] = link.id;\n });\n var linksToAdd = [];\n selectedLinks.forEach(function (link) {\n var linkKey = formatLinkKey(link);\n\n if (!existingLinksSearch[linkKey]) {\n linksToAdd.push(link);\n } else {\n delete existingLinksSearch[linkKey];\n }\n });\n var linksToDelete = [];\n\n for (var i in existingLinksSearch) {\n linksToDelete.push(existingLinksSearch[i]);\n }\n\n return {\n add: linksToAdd,\n remove: linksToDelete\n };\n }\n\n utils.mixin(PredecessorEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><input type='text' name='\".concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = formatPredecessors(value, column.editor, gantt);\n },\n get_value: function get_value(id, column, node) {\n return parseInputString(this.get_input(node).value || \"\", column.editor);\n },\n save: function save(id, column, node) {\n var task = gantt.getTask(id);\n var linksDiff = getLinksDiff(task, this.get_value(id, column, node), column.editor);\n\n if (linksDiff.add.length || linksDiff.remove.length) {\n gantt.batchUpdate(function () {\n linksDiff.add.forEach(function (link) {\n gantt.addLink(link);\n });\n linksDiff.remove.forEach(function (linkId) {\n gantt.deleteLink(linkId);\n });\n if (gantt.autoSchedule) gantt.autoSchedule();\n });\n }\n },\n is_changed: function is_changed(value, id, column, node) {\n var inputPredecessors = this.get_value(id, column, node);\n var taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\n return inputPredecessors.join() !== taskPredecessors.join();\n }\n }, true);\n return PredecessorEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n var html5DateFormat = \"%Y-%m-%d\";\n var dateToStr = null;\n var strToDate = null;\n\n function init() {\n if (!dateToStr) {\n dateToStr = gantt.date.date_to_str(html5DateFormat);\n }\n\n if (!strToDate) {\n strToDate = gantt.date.str_to_date(html5DateFormat);\n }\n }\n\n function DateEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(DateEditor, BaseEditor);\n\n utils.mixin(DateEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n init();\n var minValue = null;\n var maxValue = null;\n\n if (typeof config.min === \"function\") {\n minValue = config.min(id, column);\n } else {\n minValue = config.min;\n }\n\n if (typeof config.max === \"function\") {\n maxValue = config.max(id, column);\n } else {\n maxValue = config.max;\n }\n\n var minAttr = minValue ? \" min='\" + dateToStr(minValue) + \"' \" : \"\";\n var maxAttr = maxValue ? \" max='\" + dateToStr(maxValue) + \"' \" : \"\";\n var html = \"<div style='width:140px' role='cell'><input type='date' \".concat(minAttr, \" \").concat(maxAttr, \" name='\").concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n set_value: function set_value(value, id, column, node) {\n if (value && value.getFullYear) {\n this.get_input(node).value = dateToStr(value);\n } else {\n this.get_input(node).value = value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n if (!value || isNaN(value.getTime())) return false;\n return true;\n },\n get_value: function get_value(id, column, node) {\n var parsed;\n\n try {\n parsed = strToDate(this.get_input(node).value || \"\");\n } catch (e) {\n parsed = null; // return null will cancel changes\n }\n\n return parsed;\n }\n }, true);\n return DateEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function SelectEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(SelectEditor, BaseEditor);\n\n utils.mixin(SelectEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><select name='\".concat(column.name, \"' title='\").concat(column.name, \"'>\");\n var optionsHtml = [],\n options = config.options || [];\n\n for (var i = 0; i < options.length; i++) {\n optionsHtml.push(\"<option value='\" + config.options[i].key + \"'>\" + options[i].label + \"</option>\");\n }\n\n html += optionsHtml.join(\"\") + \"</select></div>\";\n placeholder.innerHTML = html;\n },\n get_input: function get_input(node) {\n return node.querySelector(\"select\");\n }\n }, true);\n return SelectEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function NumberEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(NumberEditor, BaseEditor);\n\n utils.mixin(NumberEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var min = config.min || 0,\n max = config.max || 100;\n var html = \"<div role='cell'><input type='number' min='\".concat(min, \"' max='\").concat(max, \"' name='\").concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_valid: function is_valid(value, id, column, node) {\n return !isNaN(parseInt(value, 10));\n }\n }, true);\n return NumberEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div role='cell'><input type='text' name='\".concat(column.name, \"' title='\").concat(column.name, \"'></div>\");\n placeholder.innerHTML = html;\n }\n }, true);\n return TextEditor;\n};","module.exports = {\n init: function init(controller, grid) {\n var self = controller;\n var gantt = grid.$gantt;\n var onBlurDelay = null;\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onBeforeFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n clearTimeout(onBlurDelay);\n\n if (activeCell) {\n var columnName = activeCell.columnName;\n var id = activeCell.id;\n var editorState = self.getState();\n\n if (self.isVisible()) {\n if (editorState.id == id && editorState.columnName === columnName) {\n return false;\n }\n }\n }\n\n return true;\n });\n keyNav.attachEvent(\"onFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n var state = controller.getState();\n clearTimeout(onBlurDelay);\n\n if (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n if (self.isVisible()) {\n self.save();\n }\n }\n\n return true;\n });\n controller.attachEvent(\"onHide\", function () {\n clearTimeout(onBlurDelay);\n });\n keyNav.attachEvent(\"onBlur\", function () {\n onBlurDelay = setTimeout(function () {\n self.save();\n });\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n // block lightbox on double click inside editor\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n self.save();\n return true;\n });\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var activeCell = controller.locateCell(e.target);\n var hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n var state = controller.getState();\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.ENTER:\n if (controller.isVisible()) {\n controller.save();\n e.preventDefault();\n preventKeyNav = true;\n } else if (hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.ESC:\n if (controller.isVisible()) {\n controller.hide();\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n break;\n\n case keyboard.LEFT:\n case keyboard.RIGHT:\n if (hasEditor && controller.isVisible() || state.editorType === \"date\") {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.DELETE:\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n } else if (hasEditor && controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.TAB:\n if (controller.isVisible()) {\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n var newState = controller.getState();\n\n if (newState.id) {\n keyNav.focus({\n type: \"taskCell\",\n id: newState.id,\n column: newState.columnName\n });\n }\n\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n default:\n if (controller.isVisible()) preventKeyNav = true;else {\n // start editing on character key\n if (keyCode >= 48 && keyCode <= 57 || // [0-9]\n keyCode > 95 && keyCode < 112 || // numpad\n keyCode >= 64 && keyCode <= 91 || // [a-z]\n keyCode > 185 && keyCode < 193 || //;=-,etc\n keyCode > 218 && keyCode < 223) {\n var modifiers = command.modifiers;\n var anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\n\n if (modifiers.alt) {// don't start editing on alt+key\n } else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")) {// don't start editing if command already have a keyboard shortcut\n } else if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n }\n }\n }\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n },\n onShow: function onShow(controller, placeholder, grid) {},\n onHide: function onHide(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n gantt.focus();\n },\n destroy: function destroy() {}\n};","module.exports = {\n init: function init(controller, grid) {\n var gantt = grid.$gantt;\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n if (controller.isVisible() && controller.isChanged()) {\n controller.save();\n } else {\n controller.hide();\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n //GS-933 probably, we don't need to hide the inline editor because the lightbox cannot be opened if you double-click on an inline editor\n //remove this code later if people don't complain\n //controller.hide();\n return false;\n }\n\n return true;\n });\n },\n onShow: function onShow(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n\n if (gantt.ext && gantt.ext.keyboardNavigation) {\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n }\n\n placeholder.onkeydown = function (e) {\n e = e || window.event;\n var keyboard = gantt.constants.KEY_CODES;\n\n if (e.defaultPrevented || e.shiftKey && e.keyCode != keyboard.TAB) {\n return;\n }\n\n var shouldPrevent = true;\n\n switch (e.keyCode) {\n case gantt.keys.edit_save:\n controller.save();\n break;\n\n case gantt.keys.edit_cancel:\n controller.hide();\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n if (controller.isVisible()) {\n controller.hide();\n shouldPrevent = false;\n }\n\n break;\n\n case keyboard.TAB:\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n break;\n\n default:\n shouldPrevent = false;\n break;\n }\n\n if (shouldPrevent) {\n e.preventDefault();\n }\n };\n },\n onHide: function onHide() {},\n destroy: function destroy() {}\n};","var defaultMapping = require(\"./keyboard_mappings/default\");\n\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function (gantt) {\n var mapping = null;\n return {\n setMapping: function setMapping(map) {\n mapping = map;\n },\n getMapping: function getMapping() {\n if (mapping) {\n return mapping;\n } else if (gantt.config.keyboard_navigation_cells && gantt.ext.keyboardNavigation) {\n return keyNavMappings;\n } else {\n return defaultMapping;\n }\n }\n };\n};","var getKeyboardMapping = require(\"./keyboard_mappings\");\n\nvar textEditorFactory = require(\"./editors/text\"),\n numberEditorFactory = require(\"./editors/number\"),\n selectEditorFactory = require(\"./editors/select\"),\n dateEditorFactory = require(\"./editors/date\"),\n predecessorEditorFactory = require(\"./editors/predecessor\"),\n durationEditorFactory = require(\"./editors/duration\");\n\nvar utils = require(\"../../../../utils/utils\");\n\nvar domHelpers = require(\"../../utils/dom_helpers\");\n\nvar eventable = require(\"../../../../utils/eventable\");\n\nvar linkedPropertiesProcessor = require(\"./linked_properties\");\n\nfunction initConfigs(gantt) {\n gantt.config.editor_types = {\n text: new (textEditorFactory(gantt))(),\n number: new (numberEditorFactory(gantt))(),\n select: new (selectEditorFactory(gantt))(),\n date: new (dateEditorFactory(gantt))(),\n predecessor: new (predecessorEditorFactory(gantt))(),\n duration: new (durationEditorFactory(gantt))()\n };\n}\n\nfunction create(gantt) {\n var keyboardMapping = getKeyboardMapping(gantt);\n var eventBus = {};\n eventable(eventBus);\n\n function createGridEditors(grid) {\n function _getGridCellFromNode(node) {\n if (!domHelpers.isChildOf(node, grid.$grid)) {\n return null;\n }\n\n var row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n var cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\n if (row && cell) {\n var columnName = cell.getAttribute(\"data-column-name\");\n var id = row.getAttribute(grid.$config.item_attribute);\n return {\n id: id,\n columnName: columnName\n };\n }\n\n return null;\n }\n\n function _getEditorPosition(itemId, columnName) {\n var config = grid.$getConfig();\n var top = grid.getItemTop(itemId);\n var height = grid.getItemHeight(itemId);\n var cols = grid.getGridColumns();\n var left = 0,\n right = 0,\n width = 0;\n\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].name == columnName) {\n width = cols[i].width;\n break;\n }\n\n if (config.rtl) {\n right += cols[i].width;\n } else {\n left += cols[i].width;\n }\n }\n\n if (config.rtl) {\n return {\n top: top,\n right: right,\n height: height,\n width: width\n };\n } else {\n return {\n top: top,\n left: left,\n height: height,\n width: width\n };\n }\n }\n\n function findVisibleIndex(grid, columnName) {\n var columns = grid.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n function _createPlaceholder(itemId, columnName) {\n var config = grid.$getConfig();\n\n var pos = _getEditorPosition(itemId, columnName);\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_grid_editor_placeholder\";\n el.setAttribute(grid.$config.item_attribute, itemId);\n el.setAttribute(grid.$config.bind + \"_id\", itemId); // for backward compatibility\n\n el.setAttribute(\"data-column-name\", columnName);\n var visibleIndex = findVisibleIndex(grid, columnName);\n el.setAttribute(\"data-column-index\", visibleIndex);\n\n gantt._waiAria.inlineEditorAttr(el);\n\n if (config.rtl) {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"right:\" + pos.right + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n } else {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n }\n\n return el;\n }\n\n var updateTaskDateProperties = linkedPropertiesProcessor(gantt);\n var handlers = [];\n var ganttHandlers = [];\n var store = null;\n var controller = {\n _itemId: null,\n _columnName: null,\n _editor: null,\n _editorType: null,\n _placeholder: null,\n locateCell: _getGridCellFromNode,\n getEditorConfig: function getEditorConfig(columnName) {\n var column = grid.getColumn(columnName);\n return column.editor;\n },\n init: function init() {\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.init) {\n mapping.init(this, grid);\n }\n\n store = grid.$gantt.getDatastore(grid.$config.bind);\n var self = this;\n handlers.push(store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (self._itemId == oldId) {\n self._itemId = newId;\n }\n }));\n handlers.push(store.attachEvent(\"onStoreUpdated\", function () {\n if (grid.$gantt.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (self.isVisible() && !store.isVisible(self._itemId)) {\n self.hide();\n }\n }));\n ganttHandlers.push(gantt.attachEvent(\"onDataRender\", function () {\n if (self._editor && self._placeholder && !domHelpers.isChildOf(self._placeholder, gantt.$root)) {\n grid.$grid_data.appendChild(self._placeholder);\n }\n }));\n\n this.init = function () {};\n },\n getState: function getState() {\n return {\n editor: this._editor,\n editorType: this._editorType,\n placeholder: this._placeholder,\n id: this._itemId,\n columnName: this._columnName\n };\n },\n startEdit: function startEdit(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n\n if (gantt.isReadonly(store.getItem(itemId))) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n if (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n this.show(editorState.id, editorState.columnName);\n this.setValue();\n this.callEvent(\"onEditStart\", [editorState]);\n },\n isVisible: function isVisible() {\n return !!(this._editor && domHelpers.isChildOf(this._placeholder, gantt.$root));\n },\n show: function show(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n var column = grid.getColumn(editorState.columnName);\n var editorConfig = this.getEditorConfig(column.name);\n if (!editorConfig) return;\n var editor = grid.$getConfig().editor_types[editorConfig.type];\n\n var placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\n grid.$grid_data.appendChild(placeholder);\n editor.show(editorState.id, column, editorConfig, placeholder);\n this._editor = editor;\n this._placeholder = placeholder;\n this._itemId = editorState.id;\n this._columnName = editorState.columnName;\n this._editorType = editorConfig.type;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onShow) {\n mapping.onShow(this, placeholder, grid);\n }\n },\n setValue: function setValue() {\n var state = this.getState();\n var itemId = state.id,\n columnName = state.columnName;\n var column = grid.getColumn(columnName);\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n if (!editorConfig) return;\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(itemId);\n }\n\n this._editor.set_value(value, itemId, column, this._placeholder);\n\n this.focus();\n },\n focus: function focus() {\n this._editor.focus(this._placeholder);\n },\n getValue: function getValue() {\n var column = grid.getColumn(this._columnName);\n return this._editor.get_value(this._itemId, column, this._placeholder);\n },\n _getItemValue: function _getItemValue() {\n var editorConfig = this.getEditorConfig(this._columnName);\n if (!editorConfig) return;\n var item = gantt.getTask(this._itemId);\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(this._itemId);\n }\n\n return value;\n },\n isChanged: function isChanged() {\n var column = grid.getColumn(this._columnName);\n\n var value = this._getItemValue();\n\n return this._editor.is_changed(value, this._itemId, column, this._placeholder);\n },\n hide: function hide() {\n if (!this._itemId) return;\n var itemId = this._itemId,\n columnName = this._columnName;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onHide) {\n mapping.onHide(this, this._placeholder, grid);\n }\n\n this._itemId = null;\n this._columnName = null;\n this._editorType = null;\n if (!this._placeholder) return;\n\n if (this._editor && this._editor.hide) {\n this._editor.hide(this._placeholder);\n }\n\n this._editor = null;\n\n if (this._placeholder.parentNode) {\n this._placeholder.parentNode.removeChild(this._placeholder);\n }\n\n this._placeholder = null;\n this.callEvent(\"onEditEnd\", [{\n id: itemId,\n columnName: columnName\n }]);\n },\n save: function save() {\n if (!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n this.hide();\n return;\n }\n\n var itemId = this._itemId,\n columnName = this._columnName;\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n var editorState = {\n id: itemId,\n columnName: columnName,\n newValue: this.getValue(),\n oldValue: this._getItemValue()\n };\n\n if (this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n if (!this._editor.is_valid || this._editor.is_valid(editorState.newValue, editorState.id, grid.getColumn(columnName), this._placeholder)) {\n var mapTo = editorConfig.map_to;\n var value = editorState.newValue;\n\n if (mapTo != \"auto\") {\n item[mapTo] = value;\n updateTaskDateProperties(item, mapTo, gantt.config.inline_editors_date_processing);\n store.updateItem(itemId);\n } else {\n this._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n }\n\n this.callEvent(\"onSave\", [editorState]);\n }\n }\n\n this.hide();\n },\n _findEditableCell: function findEditableCell(start, direction) {\n var nextIndex = start;\n var columns = grid.getGridColumns();\n var nextColumn = columns[nextIndex];\n var columnName = nextColumn ? nextColumn.name : null;\n\n if (columnName) {\n while (columnName && !this.getEditorConfig(columnName)) {\n columnName = this._findEditableCell(start + direction, direction);\n }\n\n return columnName;\n }\n\n return null;\n },\n getNextCell: function moveCell(dir) {\n // GS-1257. true means to exclude hidden columns\n return this._findEditableCell(grid.getColumnIndex(this._columnName, true) + dir, dir);\n },\n getFirstCell: function getFirstCell() {\n return this._findEditableCell(0, 1);\n },\n getLastCell: function getLastCell() {\n return this._findEditableCell(grid.getGridColumns().length - 1, -1);\n },\n editNextCell: function nextCell(canChangeRow) {\n var cell = this.getNextCell(1);\n\n if (cell) {\n var nextColumn = this.getNextCell(1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(1)) {\n var task = this.moveRow(1);\n cell = this.getFirstCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n editPrevCell: function prevCell(canChangeRow) {\n var cell = this.getNextCell(-1);\n\n if (cell) {\n var nextColumn = this.getNextCell(-1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(-1)) {\n var task = this.moveRow(-1);\n cell = this.getLastCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n moveRow: function moveRow(dir) {\n var moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\n moveTask = gantt.bind(moveTask, gantt);\n var nextItem = moveTask(this._itemId); // skip readonly rows\n\n while (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\n nextItem = moveTask(nextItem);\n }\n\n return nextItem;\n },\n editNextRow: function nextRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var next = null;\n\n if (skipReadonly) {\n next = this.moveRow(1);\n } else {\n next = gantt.getNext(id);\n }\n\n if (gantt.isTaskExists(next)) {\n this.startEdit(next, this._columnName);\n }\n },\n editPrevRow: function prevRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var prev = null;\n\n if (skipReadonly) {\n prev = this.moveRow(-1);\n } else {\n prev = gantt.getPrev(id);\n }\n\n if (gantt.isTaskExists(prev)) {\n this.startEdit(prev, this._columnName);\n }\n },\n destructor: function destructor() {\n handlers.forEach(function (handlerId) {\n store.detachEvent(handlerId);\n });\n ganttHandlers.forEach(function (handlerId) {\n gantt.detachEvent(handlerId);\n });\n handlers = [];\n ganttHandlers = [];\n store = null;\n this.hide();\n this.detachAllEvents();\n }\n };\n utils.mixin(controller, keyboardMapping);\n utils.mixin(controller, eventBus);\n return controller;\n }\n\n var inlineEditController = {\n init: initConfigs,\n createEditors: createGridEditors\n };\n utils.mixin(inlineEditController, keyboardMapping);\n utils.mixin(inlineEditController, eventBus);\n return inlineEditController;\n}\n\nmodule.exports = create;","var createStaticBgHelper = function createStaticBgHelper() {\n return {\n render: function render() {},\n destroy: function destroy() {}\n };\n};\n\nmodule.exports = {\n create: function create() {\n return createStaticBgHelper();\n }\n};","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n env = require(\"../../../utils/env\"),\n Cell = require(\"./cell\");\n\nvar ScrollbarCell = function (_super) {\n \"use strict\";\n\n var SCROLL_MODIFIER_KEYS = [\"altKey\", \"shiftKey\", \"metaKey\"]; // it's no way to disable ctrl+wheel\n\n __extends(ScrollbarCell, _super);\n\n function ScrollbarCell(parent, config, factory, gantt) {\n var _this = _super.apply(this, arguments) || this;\n\n this.$config = utils.mixin(config, {\n scroll: \"x\"\n });\n _this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\n _this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\n _this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\n _this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\n _this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\n this.$config.hidden = true;\n var size = gantt.config.scroll_size;\n\n if (gantt.env.isIE) {\n // full element height/width must be bigger than just a browser scrollbar,\n // otherwise the scrollbar element won't be scrolled on click\n size += 1;\n }\n\n if (this._isHorizontal()) {\n _this.$config.height = size;\n _this.$parent.$config.height = size;\n } else {\n _this.$config.width = size;\n _this.$parent.$config.width = size;\n }\n\n this.$config.scrollPosition = 0;\n _this.$name = \"scroller\";\n return _this;\n }\n\n ScrollbarCell.prototype.init = function (container) {\n container.innerHTML = this.$toHTML();\n this.$view = container.firstChild;\n\n if (!this.$view) {\n this.init();\n }\n\n if (this._isVertical()) {\n this._initVertical();\n } else {\n this._initHorizontal();\n }\n\n this._initMouseWheel();\n\n this._initLinkedViews();\n };\n\n ScrollbarCell.prototype.$toHTML = function () {\n var className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\n return \"<div class='gantt_layout_cell \" + className + \"'><div style='\" + (this._isHorizontal() ? \"width:2000px\" : \"height:2000px\") + \"'></div></div>\";\n };\n\n ScrollbarCell.prototype._getRootParent = function () {\n var parent = this.$parent;\n\n while (parent && parent.$parent) {\n parent = parent.$parent;\n }\n\n if (parent) {\n return parent;\n }\n };\n\n function eachCell(root, res) {\n res.push(root);\n\n if (root.$cells) {\n for (var i = 0; i < root.$cells.length; i++) {\n eachCell(root.$cells[i], res);\n }\n }\n }\n\n ScrollbarCell.prototype._eachView = function () {\n var res = [];\n eachCell(this._getRootParent(), res);\n return res;\n };\n\n ScrollbarCell.prototype._getLinkedViews = function () {\n var views = this._eachView();\n\n var res = [];\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].$config && (this._isVertical() && views[i].$config.scrollY == this.$id || this._isHorizontal() && views[i].$config.scrollX == this.$id)) {\n res.push(views[i]);\n }\n }\n\n return res;\n };\n\n ScrollbarCell.prototype._initHorizontal = function () {\n this.$scroll_hor = this.$view;\n this.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\n };\n\n ScrollbarCell.prototype._initLinkedViews = function () {\n var views = this._getLinkedViews();\n\n var css = this._isVertical() ? \"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\n\n for (var i = 0; i < views.length; i++) {\n //views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\n domHelpers.addClassName(views[i].$view || views[i].getNode(), css);\n }\n };\n\n ScrollbarCell.prototype._initVertical = function () {\n this.$scroll_ver = this.$view;\n this.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\n };\n\n ScrollbarCell.prototype._updateLinkedViews = function () {};\n\n ScrollbarCell.prototype._initMouseWheel = function () {\n var ff = env.isFF;\n if (ff) this.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler, {\n passive: false\n });else this.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler, {\n passive: false\n });\n };\n\n ScrollbarCell.prototype.scrollHorizontally = function (left) {\n if (this._scrolling) return;\n this._scrolling = true;\n this.$scroll_hor.scrollLeft = left;\n this.$config.codeScrollLeft = left;\n left = this.$scroll_hor.scrollLeft;\n\n var views = this._getLinkedViews();\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].scrollTo) {\n views[i].scrollTo(left, undefined);\n }\n }\n\n var oldSize = this.$config.scrollPosition;\n this.$config.scrollPosition = left;\n this.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\n this._scrolling = false;\n };\n\n ScrollbarCell.prototype.scrollVertically = function (top) {\n if (this._scrolling) return;\n this._scrolling = true;\n this.$scroll_ver.scrollTop = top;\n top = this.$scroll_ver.scrollTop;\n\n var views = this._getLinkedViews();\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].scrollTo) {\n views[i].scrollTo(undefined, top);\n }\n }\n\n var oldSize = this.$config.scrollPosition;\n this.$config.scrollPosition = top;\n this.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\n this._scrolling = false;\n };\n\n ScrollbarCell.prototype._isVertical = function () {\n return this.$config.scroll == \"y\";\n };\n\n ScrollbarCell.prototype._isHorizontal = function () {\n return this.$config.scroll == \"x\";\n };\n\n ScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\n if (this._isVertical() || this._scrolling) {\n return;\n } //in safari we can catch previous onscroll after setting new value from mouse-wheel event\n //set delay to prevent value drifiting\n\n\n if (new Date() - (this._wheel_time || 0) < 100) return true; //if (this.$gantt._touch_scroll_active) return;\n\n var left = this.$scroll_hor.scrollLeft;\n this.scrollHorizontally(left);\n this._oldLeft = this.$scroll_hor.scrollLeft;\n };\n\n ScrollbarCell.prototype._outerScrollHorizontalHandler = function (e) {\n if (this._isVertical()) {\n return;\n }\n };\n\n ScrollbarCell.prototype.show = function () {\n this.$parent.show();\n };\n\n ScrollbarCell.prototype.hide = function () {\n this.$parent.hide();\n };\n\n ScrollbarCell.prototype._getScrollSize = function () {\n var scrollSize = 0;\n var outerSize = 0;\n\n var isHorizontal = this._isHorizontal();\n\n var linked = this._getLinkedViews();\n\n var view;\n var scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\n innerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\n var outerProperty = isHorizontal ? \"x\" : \"y\";\n\n var offset = this._getScrollOffset();\n\n for (var i = 0; i < linked.length; i++) {\n view = linked[i];\n if (!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\n var sizes = view.$content.getSize();\n var cellScrollSize;\n\n if (sizes.hasOwnProperty(scrollProperty)) {\n cellScrollSize = sizes[scrollProperty];\n } else {\n cellScrollSize = sizes[innerSizeProperty];\n }\n\n if (offset) {\n // precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\n if (sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && cellScrollSize > sizes[outerProperty] - offset + 2) {\n scrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\n outerSize = sizes[outerProperty];\n }\n } else {\n var nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\n var scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\n cellScrollSize = cellScrollSize + nonScrollableSize;\n\n if (cellScrollSize > scrollableViewPortSize && cellScrollSize > scrollSize) {\n //|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\n scrollSize = cellScrollSize;\n outerSize = sizes[outerProperty];\n }\n }\n }\n\n return {\n outerScroll: outerSize,\n innerScroll: scrollSize\n };\n };\n\n ScrollbarCell.prototype.scroll = function (position) {\n if (this._isHorizontal()) {\n this.scrollHorizontally(position);\n } else {\n this.scrollVertically(position);\n }\n };\n\n ScrollbarCell.prototype.getScrollState = function () {\n return {\n visible: this.isVisible(),\n direction: this.$config.scroll,\n size: this.$config.outerSize,\n scrollSize: this.$config.scrollSize || 0,\n position: this.$config.scrollPosition || 0\n };\n };\n\n ScrollbarCell.prototype.setSize = function (width, height) {\n _super.prototype.setSize.apply(this, arguments);\n\n var scrollSizes = this._getScrollSize();\n\n var ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\n\n if (scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll) {\n scrollSizes.innerScroll += ownSize - scrollSizes.outerScroll;\n }\n\n this.$config.scrollSize = scrollSizes.innerScroll;\n this.$config.width = width;\n this.$config.height = height;\n\n this._setScrollSize(scrollSizes.innerScroll);\n };\n\n ScrollbarCell.prototype.isVisible = function () {\n return !!(this.$parent && this.$parent.$view.parentNode);\n };\n\n ScrollbarCell.prototype.shouldShow = function () {\n var scrollSizes = this._getScrollSize();\n\n if (!scrollSizes.innerScroll && this.$parent && this.$parent.$view.parentNode) {\n return false;\n } else if (scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)) {\n return true;\n } else {\n return false;\n }\n };\n\n ScrollbarCell.prototype.shouldHide = function () {\n var scrollSizes = this._getScrollSize();\n\n if (!scrollSizes.innerScroll && this.$parent && this.$parent.$view.parentNode) {\n return true;\n } else {\n return false;\n }\n };\n\n ScrollbarCell.prototype.toggleVisibility = function () {\n if (this.shouldHide()) {\n this.hide();\n } else if (this.shouldShow()) {\n this.show();\n }\n };\n\n ScrollbarCell.prototype._getScaleOffset = function (view) {\n var offset = 0;\n\n if (view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")) {\n offset = view.$content.$getConfig().scale_height;\n }\n\n return offset;\n };\n\n ScrollbarCell.prototype._getScrollOffset = function () {\n var offset = 0;\n\n if (this._isVertical()) {\n var parentLayout = this.$parent.$parent;\n offset = Math.max(this._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)), this._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id)));\n } else {\n var linked = this._getLinkedViews();\n\n for (var i = 0; i < linked.length; i++) {\n var view = linked[i],\n vparent = view.$parent;\n var cells = vparent.$cells;\n var last = cells[cells.length - 1];\n\n if (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\n offset = last.$config.width;\n break;\n }\n }\n }\n\n return offset || 0;\n };\n\n ScrollbarCell.prototype._setScrollSize = function (size) {\n var property = this._isHorizontal() ? \"width\" : \"height\";\n var scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\n\n var offset = this._getScrollOffset();\n\n var node = scrollbar.firstChild;\n\n if (offset) {\n if (this._isVertical()) {\n this.$config.outerSize = this.$config.height - offset + 3;\n scrollbar.style.height = this.$config.outerSize + \"px\";\n scrollbar.style.top = offset - 1 + \"px\";\n domHelpers.addClassName(scrollbar, this.$parent._borders.top);\n domHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n } else {\n this.$config.outerSize = this.$config.width - offset + 1;\n scrollbar.style.width = this.$config.outerSize + \"px\"; //domHelpers.addClassName(scrollbar, this.$parent._borders.right);\n }\n } else {\n scrollbar.style.top = \"auto\";\n domHelpers.removeClassName(scrollbar, this.$parent._borders.top);\n domHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n this.$config.outerSize = this.$config.height;\n }\n\n node.style[property] = size + \"px\";\n };\n\n ScrollbarCell.prototype._scrollVerticalHandler = function (e) {\n if (this._scrollHorizontalHandler() || this._scrolling) {\n return;\n } //if (this.$gantt._touch_scroll_active) return;\n\n\n var top = this.$scroll_ver.scrollTop;\n var prev = this._oldTop;\n if (top == prev) return;\n this.scrollVertically(top);\n this._oldTop = this.$scroll_ver.scrollTop;\n };\n\n ScrollbarCell.prototype._outerScrollVerticalHandler = function (e) {\n if (this._scrollHorizontalHandler()) {\n return;\n }\n };\n\n ScrollbarCell.prototype._checkWheelTarget = function (targetNode) {\n var connectedViews = this._getLinkedViews().concat(this);\n\n for (var i = 0; i < connectedViews.length; i++) {\n var node = connectedViews[i].$view;\n\n if (domHelpers.isChildOf(targetNode, node)) {\n return true;\n }\n }\n\n return false;\n };\n\n ScrollbarCell.prototype._mouseWheelHandler = function (e) {\n var target = e.target || e.srcElement;\n if (!this._checkWheelTarget(target)) return;\n this._wheel_time = new Date();\n var res = {};\n var wheelSpeed = {\n x: 1,\n y: 1\n };\n var wheelSpeedConfig = this.$gantt.config.wheel_scroll_sensitivity;\n\n if (typeof wheelSpeedConfig == \"number\" && !!wheelSpeedConfig) {\n wheelSpeed = {\n x: wheelSpeedConfig,\n y: wheelSpeedConfig\n };\n } else if ({}.toString.apply(wheelSpeedConfig) == \"[object Object]\") {\n wheelSpeed = {\n x: wheelSpeedConfig.x,\n y: wheelSpeedConfig.y\n };\n }\n\n var ff = env.isFF;\n var deltaX = ff ? e.deltaX : e.wheelDeltaX;\n var deltaY = ff ? e.deltaY : e.wheelDelta;\n var multiplier = -20;\n\n if (ff) {\n if (e.deltaMode !== 0) {\n multiplier = -40;\n } else {\n multiplier = -10;\n }\n }\n\n var wx = ff ? deltaX * multiplier * wheelSpeed.x : deltaX * 2 * wheelSpeed.x;\n var wy = ff ? deltaY * multiplier * wheelSpeed.y : deltaY * wheelSpeed.y;\n var horizontalScrollModifier = this.$gantt.config.horizontal_scroll_key;\n\n if (horizontalScrollModifier !== false) {\n if (SCROLL_MODIFIER_KEYS.indexOf(horizontalScrollModifier) >= 0) {\n if (e[horizontalScrollModifier] && !(e.deltaX || e.wheelDeltaX)) {\n // shift+mousewheel for horizontal scroll\n wx = wy * 2;\n wy = 0;\n }\n }\n }\n\n if (wx && Math.abs(wx) > Math.abs(wy)) {\n if (this._isVertical()) {\n return;\n }\n\n if (res.x) return true; //no horisontal scroll, must not block scrolling\n\n if (!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\n var dir = wx / -40;\n var oldLeft = this._oldLeft;\n var left = oldLeft + dir * 30;\n this.scrollHorizontally(left);\n this.$scroll_hor.scrollLeft = left; // not block scroll if position hasn't changed\n\n if (oldLeft == this.$scroll_hor.scrollLeft) {\n return true;\n }\n\n this._oldLeft = this.$scroll_hor.scrollLeft;\n } else {\n if (this._isHorizontal()) {\n return;\n }\n\n if (res.y) return true; //no vertical scroll, must not block scrolling\n\n if (!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\n var dir = wy / -40;\n if (typeof wy == \"undefined\") dir = e.detail;\n var oldTop = this._oldTop;\n var top = this.$scroll_ver.scrollTop + dir * 30; //if(!this.$gantt.config.prevent_default_scroll &&\n //\t(this.$gantt._cached_scroll_pos && ((this.$gantt._cached_scroll_pos.y == top) || (this.$gantt._cached_scroll_pos.y <= 0 && top <= 0)))) return true;\n\n this.scrollVertically(top);\n this.$scroll_ver.scrollTop = top; // not block scroll if position hasn't changed\n\n if (oldTop == this.$scroll_ver.scrollTop) {\n return true;\n }\n\n this._oldTop = this.$scroll_ver.scrollTop;\n }\n\n if (e.preventDefault) e.preventDefault();\n e.cancelBubble = true;\n return false;\n };\n\n return ScrollbarCell;\n}(Cell);\n\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\n utils = require(\"../../../utils/utils\"),\n Cell = require(\"./cell\");\n\nvar ViewCell = function (_super) {\n \"use strict\";\n\n __extends(ViewCell, _super);\n\n function ViewCell(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (config.view) {\n if (config.id) {\n // pass id to the nested view\n this.$id = utils.uid();\n }\n\n var childConfig = utils.copy(config);\n delete childConfig.config;\n delete childConfig.templates;\n this.$content = this.$factory.createView(config.view, this, childConfig, this);\n if (!this.$content) return false;\n }\n\n _this.$name = \"viewCell\";\n return _this;\n }\n\n ViewCell.prototype.destructor = function () {\n this.clear();\n\n _super.prototype.destructor.call(this);\n };\n\n ViewCell.prototype.clear = function () {\n this.$initialized = false; // call destructor\n\n if (this.$content) {\n var method = this.$content.unload || this.$content.destructor;\n\n if (method) {\n method.call(this.$content);\n }\n }\n\n _super.prototype.clear.call(this);\n };\n\n ViewCell.prototype.scrollTo = function (left, top) {\n if (this.$content && this.$content.scrollTo) {\n this.$content.scrollTo(left, top);\n } else {\n _super.prototype.scrollTo.call(this, left, top);\n }\n };\n\n ViewCell.prototype._setContentSize = function (x, y) {\n var borders = this._getBorderSizes();\n\n if (typeof x === \"number\") {\n var outerX = x + borders.horizontal;\n this.$config.width = outerX;\n }\n\n if (typeof y === \"number\") {\n var outerY = y + borders.vertical;\n this.$config.height = outerY;\n }\n };\n\n ViewCell.prototype.setSize = function (x, y) {\n _super.prototype.setSize.call(this, x, y);\n\n if (!this.$preResize && this.$content) {\n if (!this.$initialized) {\n this.$initialized = true;\n var header = this.$view.childNodes[0];\n var content = this.$view.childNodes[1];\n if (!content) content = header;\n /*if(this.$content.$config){\r\n \tthis.$content.$config.width = this.$lastSize.contentX;\r\n \tthis.$content.$config.height = this.$lastSize.contentY;\r\n }*/\n\n this.$content.init(content);\n }\n }\n };\n\n ViewCell.prototype.setContentSize = function () {\n if (!this.$preResize && this.$content) {\n if (this.$initialized) {\n this.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\n }\n }\n };\n\n ViewCell.prototype.getContentSize = function () {\n var size = _super.prototype.getContentSize.call(this);\n\n if (this.$content && this.$initialized) {\n var childSize = this.$content.getSize();\n size.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\n size.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\n }\n\n var borders = this._getBorderSizes();\n\n size.width += borders.horizontal;\n size.height += borders.vertical;\n return size;\n };\n\n return ViewCell;\n}(Cell);\n\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\n Layout = require(\"./layout\"),\n Cell = require(\"./cell\");\n\nvar ViewLayout = function (_super) {\n \"use strict\";\n\n __extends(ViewLayout, _super);\n\n function ViewLayout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n for (var i = 0; i < _this.$cells.length; i++) {\n _this.$cells[i].$config.hidden = i !== 0;\n }\n\n _this.$cell = _this.$cells[0];\n _this.$name = \"viewLayout\";\n return _this;\n }\n\n ViewLayout.prototype.cell = function (id) {\n var cell = _super.prototype.cell.call(this, id);\n\n if (!cell.$view) {\n this.$fill(null, this);\n }\n\n return cell;\n };\n\n ViewLayout.prototype.moveView = function (view) {\n var body = this.$view;\n\n if (this.$cell) {\n this.$cell.$config.hidden = true;\n body.removeChild(this.$cell.$view);\n }\n\n this.$cell = view;\n body.appendChild(view.$view);\n };\n\n ViewLayout.prototype.setSize = function (x, y) {\n Cell.prototype.setSize.call(this, x, y);\n };\n\n ViewLayout.prototype.setContentSize = function () {\n var size = this.$lastSize;\n this.$cell.setSize(size.contentX, size.contentY);\n };\n\n ViewLayout.prototype.getSize = function () {\n var sizes = _super.prototype.getSize.call(this);\n\n if (this.$cell) {\n var cellSize = this.$cell.getSize();\n\n if (this.$config.byMaxSize) {\n for (var i = 0; i < this.$cells.length; i++) {\n var otherCell = this.$cells[i].getSize();\n\n for (var cell in cellSize) {\n cellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\n }\n }\n }\n\n for (var size in sizes) {\n sizes[size] = sizes[size] || cellSize[size];\n }\n\n sizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\n }\n\n return sizes;\n };\n\n return ViewLayout;\n}(Layout);\n\nmodule.exports = ViewLayout;","module.exports = function (item, view, config) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: left,\n width: right - left\n };\n};","var barRectangle = require(\"./get_bar_rectangle\");\n\nmodule.exports = function getLinkBox(item, view, config, gantt) {\n if (!gantt.isTaskExists(item.source)) {\n return null;\n }\n\n if (!gantt.isTaskExists(item.target)) {\n return null;\n }\n\n var sourceBox = barRectangle(gantt.getTask(item.source), view, gantt);\n var targetBox = barRectangle(gantt.getTask(item.target), view, gantt);\n\n if (!sourceBox || !targetBox) {\n return null;\n }\n\n var padding = 100;\n var left = Math.min(sourceBox.left, targetBox.left) - padding;\n var right = Math.max(sourceBox.left + sourceBox.width, targetBox.left + targetBox.width) + padding;\n var top = Math.min(sourceBox.top, targetBox.top) - padding;\n var bottom = Math.max(sourceBox.top + sourceBox.height, targetBox.top + targetBox.height) + padding;\n return {\n top: top,\n height: bottom - top,\n bottom: bottom,\n left: left,\n width: right - left,\n right: right\n };\n};","module.exports = function (viewport, box) {\n if (!box) {\n return false;\n }\n\n if (box.left > viewport.x_end || box.left + box.width < viewport.x) {\n return false;\n }\n\n if (box.top > viewport.y_end || box.top + box.height < viewport.y) {\n return false;\n }\n\n return true;\n};","var genericViewPortChecker = require(\"./viewport/is_in_viewport\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar basicGetRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar basicGetRange = require(\"./viewport/get_visible_bars_range\");\n\nvar rendererFactory = function rendererFactory(gantt) {\n //hash of dom elements is needed to redraw single bar/link\n var task_area_pulls = {},\n task_area_renderers = {};\n\n function getView(layer) {\n var view = null;\n\n if (typeof layer.view === \"string\") {\n view = gantt.$ui.getView(layer.view);\n } else if (layer.view) {\n view = layer.view;\n }\n\n return view;\n }\n\n function getRenderer(id, layer, node) {\n if (task_area_renderers[id]) return task_area_renderers[id];\n if (!layer.renderer) gantt.assert(false, \"Invalid renderer call\");\n var renderMethod = null;\n var updateMethod = null;\n var getRectangle = null;\n var renderCallbackMethod = null;\n var specializedViewPortChecker = null;\n\n if (typeof layer.renderer === \"function\") {\n renderMethod = layer.renderer;\n getRectangle = basicGetRectangle;\n } else {\n renderMethod = layer.renderer.render;\n updateMethod = layer.renderer.update;\n renderCallbackMethod = layer.renderer.onrender;\n\n if (layer.renderer.isInViewPort) {\n specializedViewPortChecker = layer.renderer.isInViewPort;\n } else {\n getRectangle = layer.renderer.getRectangle;\n }\n\n if (!getRectangle && getRectangle !== null) {\n getRectangle = basicGetRectangle;\n }\n }\n\n var filter = layer.filter;\n if (node) node.setAttribute(gantt.config.layer_attribute, true);\n task_area_renderers[id] = {\n render_item: function render_item(item, container, viewPort, layerView, viewConfig) {\n container = container || node;\n\n if (filter) {\n if (!filter(item)) {\n this.remove_item(item.id);\n return;\n }\n }\n\n var view = layerView || getView(layer);\n var config = viewConfig || (view ? view.$getConfig() : null);\n var rendererViewPort = viewPort;\n\n if (!rendererViewPort && config && config.smart_rendering) {\n rendererViewPort = view.getViewPort();\n }\n\n var dom = null;\n\n if (!isLegacyRender(gantt) && (getRectangle || specializedViewPortChecker) && rendererViewPort) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, rendererViewPort, view, config, gantt);\n } else {\n isVisible = genericViewPortChecker(rendererViewPort, getRectangle(item, view, config, gantt));\n }\n\n if (isVisible) {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n } else {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n\n this.append(item, dom, container);\n var useBuffer = container.nodeType == 11; //DocumentFragment\n\n if (renderCallbackMethod && !useBuffer && dom) {\n renderCallbackMethod.call(gantt, item, dom, view);\n }\n },\n clear: function clear(container) {\n this.rendered = task_area_pulls[id] = {};\n if (!layer.append) this.clear_container(container);\n },\n clear_container: function clear_container(container) {\n container = container || node;\n\n if (container) {\n container.innerHTML = \"\";\n }\n },\n get_visible_range: function get_visible_range(datastore) {\n var view = getView(layer);\n var viewport;\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewport = view.getViewPort();\n }\n\n var range;\n\n if (view && viewport) {\n if (typeof layer.renderer === \"function\") {\n range = basicGetRange(gantt, view, viewConfig, datastore, viewport);\n } else if (layer.renderer && layer.renderer.getVisibleRange) {\n range = layer.renderer.getVisibleRange(gantt, view, viewConfig, datastore, viewport);\n }\n }\n\n if (!range) {\n range = {\n start: 0,\n end: datastore.count()\n };\n }\n\n return range;\n },\n prepare_data: function prepare_data(items) {\n if (layer.renderer && layer.renderer.prepareData) {\n return layer.renderer.prepareData(items, gantt, layer);\n }\n },\n render_items: function render_items(items, container) {\n container = container || node;\n var buffer = document.createDocumentFragment();\n this.clear(container);\n var viewPort = null;\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewPort = view.getViewPort();\n }\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n\n container.appendChild(buffer, container);\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n update_items: function update_items(items, container) {\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (!view || !view.$getConfig().smart_rendering || isLegacyRender(gantt)) {\n return;\n }\n\n if (!this.rendered) {\n return;\n }\n\n if (!(getRectangle || specializedViewPortChecker)) {\n return;\n }\n\n container = container || node;\n var buffer = document.createDocumentFragment();\n var viewPort = null;\n\n if (view) {\n viewPort = view.getViewPort();\n }\n\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n var nodesToRemove = {};\n\n for (var i in this.rendered) {\n nodesToRemove[i] = true;\n renderedItems[i] = true;\n }\n\n var renderCalledFor = {};\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n var item = items[i];\n var itemNode = this.rendered[item.id];\n nodesToRemove[item.id] = false;\n\n if (itemNode && itemNode.parentNode) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, viewPort, view, viewConfig, gantt);\n } else {\n isVisible = genericViewPortChecker(viewPort, getRectangle(item, view, viewConfig, gantt));\n }\n\n if (!isVisible) {\n nodesToRemove[item.id] = true;\n } else {\n if (updateMethod) {\n updateMethod.call(gantt, item, itemNode, view, viewConfig, viewPort);\n }\n\n this.restore(item, buffer);\n }\n } else {\n renderCalledFor[items[i].id] = true;\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n }\n\n for (var i in nodesToRemove) {\n if (nodesToRemove[i]) {\n this.hide(i);\n }\n }\n\n if (buffer.childNodes.length) {\n container.appendChild(buffer, container);\n }\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i] || renderCalledFor[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n append: function append(item, node, container) {\n if (!this.rendered) {\n return;\n }\n\n if (!node) {\n if (this.rendered[item.id]) {\n this.remove_item(item.id);\n }\n\n return;\n }\n\n if (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n this.replace_item(item.id, node);\n } else {\n container.appendChild(node);\n }\n\n this.rendered[item.id] = node;\n },\n replace_item: function replace_item(item_id, newNode) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.replaceChild(newNode, item);\n }\n\n this.rendered[item_id] = newNode;\n },\n remove_item: function remove_item(item_id) {\n this.hide(item_id);\n delete this.rendered[item_id];\n },\n hide: function hide(item_id) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.removeChild(item);\n }\n },\n restore: function restore(item, container) {\n var dom = this.rendered[item.id];\n\n if (dom) {\n if (!dom.parentNode) {\n this.append(item, dom, container || node);\n }\n } else {\n this.render_item(item, container || node);\n }\n },\n change_id: function change_id(oldid, newid) {\n this.rendered[newid] = this.rendered[oldid];\n delete this.rendered[oldid];\n },\n rendered: task_area_pulls[id],\n node: node,\n destructor: function destructor() {\n this.clear();\n delete task_area_renderers[id];\n delete task_area_pulls[id];\n }\n };\n return task_area_renderers[id];\n }\n\n function clearRenderers() {\n for (var i in task_area_renderers) {\n getRenderer(i).destructor();\n }\n }\n\n return {\n getRenderer: getRenderer,\n clearRenderers: clearRenderers\n };\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\n\nvar utils = require(\"../../../utils/utils\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar layerFactory = function layerFactory(gantt) {\n var renderFactory = renderFactoryProvider(gantt);\n return {\n createGroup: function createGroup(getContainer, relativeRoot, defaultFilters, initLayer) {\n var renderGroup = {\n tempCollection: [],\n renderers: {},\n container: getContainer,\n filters: [],\n getLayers: function getLayers() {\n this._add(); // add pending layers\n\n\n var res = [];\n\n for (var i in this.renderers) {\n res.push(this.renderers[i]);\n }\n\n return res;\n },\n getLayer: function getLayer(id) {\n return this.renderers[id];\n },\n _add: function _add(layer) {\n if (layer) {\n layer.id = layer.id || utils.uid();\n this.tempCollection.push(layer);\n }\n\n var container = this.container();\n var pending = this.tempCollection;\n\n for (var i = 0; i < pending.length; i++) {\n layer = pending[i];\n if (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n var node = layer.container,\n id = layer.id,\n topmost = layer.topmost;\n\n if (!node.parentNode) {\n //insert on top or below the tasks\n if (topmost) {\n container.appendChild(node);\n } else {\n var rel = relativeRoot ? relativeRoot() : container.firstChild; // GS-1274: if we don't add the second check, Gantt stops working if\n // we add the task layer without the timeline and switch to a layout with the timeline\n\n if (rel && rel.parentNode == container) container.insertBefore(node, rel);else container.appendChild(node);\n }\n }\n\n this.renderers[id] = renderFactory.getRenderer(id, layer, node);\n\n if (initLayer) {\n initLayer(layer, gantt);\n }\n\n this.tempCollection.splice(i, 1);\n i--;\n }\n },\n addLayer: function addLayer(config) {\n if (config) {\n if (typeof config == \"function\") {\n config = {\n renderer: config\n };\n }\n\n if (config.filter === undefined) {\n config.filter = mergeFilters(defaultFilters || []);\n } else if (config.filter instanceof Array) {\n config.filter.push(defaultFilters);\n config.filter = mergeFilters(config.filter);\n }\n\n if (!config.container) {\n config.container = document.createElement(\"div\");\n }\n\n var self = this;\n\n config.requestUpdate = function () {\n if (gantt.config.smart_rendering && !isLegacyRender(gantt)) {\n if (self.renderers[config.id]) {\n self.onUpdateRequest(self.renderers[config.id]);\n }\n }\n };\n }\n\n this._add(config);\n\n return config ? config.id : undefined;\n },\n onUpdateRequest: function onUpdateRequest(layer) {},\n eachLayer: function eachLayer(code) {\n for (var i in this.renderers) {\n code(this.renderers[i]);\n }\n },\n removeLayer: function removeLayer(id) {\n if (!this.renderers[id]) return;\n this.renderers[id].destructor();\n delete this.renderers[id];\n },\n clear: function clear() {\n for (var i in this.renderers) {\n this.renderers[i].destructor();\n }\n\n this.renderers = {};\n } //,\n //prepareConfig: prepareConfig\n\n };\n gantt.attachEvent(\"onDestroy\", function () {\n renderGroup.clear();\n renderGroup = null;\n });\n return renderGroup;\n }\n };\n};\n\nfunction mergeFilters(filter_methods) {\n if (!(filter_methods instanceof Array)) {\n filter_methods = Array.prototype.slice.call(arguments, 0);\n }\n\n return function (obj) {\n var res = true;\n\n for (var i = 0, len = filter_methods.length; i < len; i++) {\n var filter_method = filter_methods[i];\n\n if (filter_method) {\n res = res && filter_method(obj.id, obj) !== false;\n }\n }\n\n return res;\n };\n}\n\nmodule.exports = layerFactory;","var createLayerFactory = require(\"./render/layer_engine\");\n\nvar getVisibleTaskRange = require(\"./render/viewport/get_visible_bars_range\");\n\nvar getVisibleLinksRangeFactory = require(\"./render/viewport/factory/get_visible_link_range\");\n\nvar isLinkInViewport = require(\"./render/viewport/is_link_in_viewport\");\n\nfunction initLayer(layer, gantt) {\n if (!layer.view) {\n return;\n }\n\n var view = layer.view;\n\n if (typeof view === \"string\") {\n view = gantt.$ui.getView(view);\n }\n\n if (view && view.attachEvent) {\n view.attachEvent(\"onScroll\", function () {\n var state = gantt.$services.getService(\"state\"); // don't repaint if we're inside batchUpdate, a complete repaint will be called afterwards\n\n if (!state.getState(\"batchUpdate\").batch_update && !view.$config.$skipSmartRenderOnScroll) {\n if (layer.requestUpdate) {\n layer.requestUpdate();\n }\n }\n });\n }\n}\n\nvar createLayerEngine = function createLayerEngine(gantt) {\n var factory = createLayerFactory(gantt);\n return {\n getDataRender: function getDataRender(name) {\n return gantt.$services.getService(\"layer:\" + name) || null;\n },\n createDataRender: function createDataRender(config) {\n var name = config.name,\n defaultContainer = config.defaultContainer,\n previusSiblingContainer = config.defaultContainerSibling;\n var layers = factory.createGroup(defaultContainer, previusSiblingContainer, function (itemId, item) {\n if (layers.filters) {\n for (var i = 0; i < layers.filters.length; i++) {\n if (layers.filters[i](itemId, item) === false) {\n return false;\n }\n }\n } else {\n return true;\n }\n }, initLayer);\n gantt.$services.setService(\"layer:\" + name, function () {\n return layers;\n });\n gantt.attachEvent(\"onGanttReady\", function () {\n layers.addLayer(); // init layers on start\n });\n return layers;\n },\n init: function init() {\n var taskLayers = this.createDataRender({\n name: \"task\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n },\n defaultContainerSibling: function defaultContainerSibling() {\n if (gantt.$task_links) {\n return gantt.$task_links;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_links;\n }\n },\n filter: function filter(item) {}\n }, gantt);\n var linkLayers = this.createDataRender({\n name: \"link\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n }\n }, gantt);\n return {\n addTaskLayer: function addTaskLayer(config) {\n var rangeFunction = getVisibleTaskRange;\n\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: rangeFunction\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = rangeFunction;\n }\n }\n\n config.view = \"timeline\";\n return taskLayers.addLayer(config);\n },\n _getTaskLayers: function _getTaskLayers() {\n return taskLayers.getLayers();\n },\n removeTaskLayer: function removeTaskLayer(id) {\n taskLayers.removeLayer(id);\n },\n _clearTaskLayers: function _clearTaskLayers() {\n taskLayers.clear();\n },\n addLinkLayer: function addLinkLayer(config) {\n var rangeFunction = getVisibleLinksRangeFactory();\n\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: rangeFunction\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = rangeFunction;\n }\n }\n\n config.view = \"timeline\";\n\n if (config && config.renderer) {\n if (!config.renderer.getRectangle && !config.renderer.isInViewPort) {\n config.renderer.isInViewPort = isLinkInViewport;\n }\n }\n\n return linkLayers.addLayer(config);\n },\n _getLinkLayers: function _getLinkLayers() {\n return linkLayers.getLayers();\n },\n removeLinkLayer: function removeLinkLayer(id) {\n linkLayers.removeLayer(id);\n },\n _clearLinkLayers: function _clearLinkLayers() {\n linkLayers.clear();\n }\n };\n }\n };\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar createMouseHandler = function (domHelpers) {\n return function (gantt) {\n var eventHandlers = {\n \"click\": {},\n \"doubleclick\": {},\n \"contextMenu\": {}\n };\n\n function addEventTarget(event, className, handler, root) {\n if (!eventHandlers[event][className]) {\n eventHandlers[event][className] = [];\n }\n\n eventHandlers[event][className].push({\n handler: handler,\n root: root\n });\n }\n\n function callHandler(eventName, className, root, args) {\n var handlers = eventHandlers[eventName][className];\n\n if (handlers) {\n for (var i = 0; i < handlers.length; i++) {\n if (!(root || handlers[i].root) || handlers[i].root === root) {\n handlers[i].handler.apply(this, args);\n }\n }\n }\n }\n\n function onClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.click);\n var res = true;\n\n if (id !== null) {\n res = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n } else {\n gantt.callEvent(\"onEmptyClick\", [e]);\n }\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return; // GS-1025: if we don't do that, the dropdown or date select will be closed for unselected tasks\n // GS-1078: or for the built-in select inline editor\n\n switch (e.target.nodeName) {\n case \"SELECT\":\n case 'INPUT':\n return;\n } //allow task selection when the multiselect plugin is not enabled\n\n\n if (id && gantt.getTask(id) && !gantt._multiselect && gantt.config.select_task) {\n gantt.selectTask(id);\n }\n }\n }\n\n function onContextMenu(e) {\n e = e || window.event;\n var src = e.target || e.srcElement,\n taskId = gantt.locate(src),\n linkId = gantt.locate(src, gantt.config.link_attribute);\n var res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\n if (!res) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n return res;\n }\n\n function findEventHandlers(e, hash) {\n var trg = e.target || e.srcElement;\n var handlers = [];\n\n while (trg) {\n var css = domHelpers.getClassName(trg);\n\n if (css) {\n css = css.split(\" \");\n\n for (var i = 0; i < css.length; i++) {\n if (!css[i]) continue;\n\n if (hash[css[i]]) {\n var delegateHandlers = hash[css[i]];\n\n for (var h = 0; h < delegateHandlers.length; h++) {\n if (delegateHandlers[h].root) {\n if (!domHelpers.isChildOf(trg, delegateHandlers[h].root)) {\n continue;\n }\n }\n\n handlers.push(delegateHandlers[h].handler);\n }\n }\n }\n }\n\n trg = trg.parentNode;\n }\n\n return handlers;\n }\n\n function callEventHandlers(handlers, e, id) {\n var res = true;\n\n for (var i = 0; i < handlers.length; i++) {\n var handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n res = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n }\n\n return res;\n }\n\n function onDoubleClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.doubleclick); // when doubleclick fired not on task, id === null\n\n var res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return;\n\n if (id !== null && gantt.getTask(id)) {\n if (res && gantt.config.details_on_dblclick && !gantt.isReadonly(id)) {\n gantt.showLightbox(id);\n }\n }\n }\n }\n\n function onMouseMove(e) {\n if (gantt.checkEvent(\"onMouseMove\")) {\n var id = gantt.locate(e);\n gantt._last_move_event = e;\n gantt.callEvent(\"onMouseMove\", [id, e]);\n }\n }\n\n function detach(eventName, className, handler, root) {\n if (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n var handlers = eventHandlers[eventName];\n var elementHandlers = handlers[className];\n\n for (var i = 0; i < elementHandlers.length; i++) {\n if (elementHandlers[i].root == root) {\n elementHandlers.splice(i, 1);\n i--;\n }\n }\n\n if (!elementHandlers.length) {\n delete handlers[className];\n }\n }\n }\n\n var domEvents = gantt._createDomEventScope();\n\n function reset(node) {\n domEvents.detachAll();\n\n if (node) {\n domEvents.attach(node, \"click\", onClick);\n domEvents.attach(node, \"dblclick\", onDoubleClick);\n domEvents.attach(node, \"mousemove\", onMouseMove);\n domEvents.attach(node, \"contextmenu\", onContextMenu);\n }\n }\n\n return {\n reset: reset,\n global: function global(event, classname, handler) {\n addEventTarget(event, classname, handler, null);\n },\n delegate: addEventTarget,\n detach: detach,\n callHandler: callHandler,\n onDoubleClick: onDoubleClick,\n onMouseMove: onMouseMove,\n onContextMenu: onContextMenu,\n onClick: onClick,\n destructor: function destructor() {\n reset();\n eventHandlers = null;\n domEvents = null;\n }\n };\n };\n}(domHelpers);\n\nmodule.exports = {\n init: createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction extendSettings(store, parentSettings) {\n var own = this.$config[store];\n\n if (own) {\n if (!own.$extendedConfig) {\n own.$extendedConfig = true;\n Object.setPrototypeOf(own, parentSettings);\n }\n\n return own;\n } else {\n return parentSettings;\n }\n}\n\nvar configurable = function configurable(parentView) {\n var parentConfig, parentTemplates;\n return {\n $getConfig: function $getConfig() {\n if (!parentConfig) {\n parentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n }\n\n if (!this.$config.config) {\n return parentConfig;\n } else {\n return extendSettings.call(this, \"config\", parentConfig);\n }\n },\n $getTemplates: function $getTemplates() {\n if (!parentTemplates) {\n parentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n }\n\n if (!this.$config.templates) {\n return parentTemplates;\n } else {\n return extendSettings.call(this, \"templates\", parentTemplates);\n }\n }\n };\n};\n\nmodule.exports = function (obj, parent) {\n utils.mixin(obj, configurable(parent));\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\"),\n configurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt) {\n var views = {};\n\n function ui(cell, parentView) {\n var content;\n var view = \"cell\";\n\n if (cell.view) {\n view = \"viewcell\";\n } else if (cell.resizer) {\n view = \"resizer\";\n } else if (cell.rows || cell.cols) {\n view = \"layout\";\n } else if (cell.views) {\n view = \"multiview\";\n }\n\n content = createView.call(this, view, null, cell, parentView);\n return content;\n }\n\n var createdViews = {};\n\n function createView(name, parent, config, parentView) {\n var creator = views[name];\n if (!creator || !creator.create) return false;\n\n if (name == \"resizer\" && !config.mode) {\n if (parentView.$config.cols) {\n config.mode = \"x\";\n } else {\n config.mode = \"y\";\n }\n }\n\n if (name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll) {\n if (parentView.$config.cols) {\n config.scroll = \"y\";\n } else {\n config.scroll = \"x\";\n }\n }\n\n var config = utils.copy(config);\n\n if (!config.id && !createdViews[config.view]) {\n config.id = config.view;\n }\n\n if (config.id && !config.css) {\n config.css = config.id + \"_cell\";\n }\n\n var view = new creator.create(parent, config, this, gantt);\n\n if (creator.configure) {\n creator.configure(view);\n }\n\n configurable(view, parentView);\n\n if (!view.$id) {\n view.$id = config.id || gantt.uid();\n }\n\n if (!view.$parent && _typeof(parent) == \"object\") {\n view.$parent = parent;\n }\n\n if (!view.$config) {\n view.$config = config;\n }\n\n if (createdViews[view.$id]) {\n view.$id = gantt.uid();\n }\n\n createdViews[view.$id] = view;\n return view;\n }\n\n function reset() {\n createdViews = {};\n }\n\n function register(name, viewConstructor, configure) {\n views[name] = {\n create: viewConstructor,\n configure: configure\n };\n }\n\n function getView(id) {\n return createdViews[id];\n }\n\n var factory = {\n initUI: ui,\n reset: reset,\n registerView: register,\n createView: createView,\n getView: getView\n };\n return factory;\n};\n\nmodule.exports = {\n createFactory: uiFactory\n};","var uiFactory = require(\"./ui_factory\"),\n mouseEvents = require(\"./mouse\"),\n createLayers = require(\"./gantt_layers\"),\n Cell = require(\"./layout/cell\"),\n Layout = require(\"./layout/layout\"),\n ViewLayout = require(\"./layout/view_layout\"),\n ViewCell = require(\"./layout/view_cell\"),\n Resizer = require(\"./layout/resizer_cell\"),\n Scrollbar = require(\"./layout/scrollbar_cell\"),\n Timeline = require(\"./timeline/timeline\"),\n Grid = require(\"./grid/grid\"),\n ResourceGrid = require(\"./grid/resource_grid\"),\n ResourceTimeline = require(\"./timeline/resource_timeline\"),\n ResourceHistogram = require(\"./timeline/resource_histogram\");\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\nvar renderTaskBar = require(\"./render/task_bar_smart_render\"),\n renderSplitTaskBar = require(\"./render/task_split_render\"),\n renderRollupTaskBar = require(\"./render/task_rollup_render\"),\n renderTaskBg = require(\"./render/task_bg_render\"),\n renderLink = require(\"./render/link_render\"),\n gridRenderer = require(\"./render/task_grid_line_render\"),\n resourceMatrixRenderer = require(\"./render/resource_matrix_render\"),\n resourceHistogramRenderer = require(\"./render/resource_histogram_render\"),\n gridTaskRowResizerRenderer = require(\"./render/task_grid_row_resize_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\n\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\n\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt) {\n function attachInitializer(view, initializer) {\n var ext = initializer(gantt);\n if (ext.onCreated) ext.onCreated(view);\n view.attachEvent(\"onReady\", function () {\n if (ext.onInitialized) ext.onInitialized(view);\n });\n view.attachEvent(\"onDestroy\", function () {\n if (ext.onDestroyed) ext.onDestroyed(view);\n });\n }\n\n var factory = uiFactory.createFactory(gantt);\n factory.registerView(\"cell\", Cell);\n factory.registerView(\"resizer\", Resizer);\n factory.registerView(\"scrollbar\", Scrollbar);\n factory.registerView(\"layout\", Layout, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"main\") {\n attachInitializer(view, mainLayoutInitializer);\n }\n });\n factory.registerView(\"viewcell\", ViewCell);\n factory.registerView(\"multiview\", ViewLayout);\n factory.registerView(\"timeline\", Timeline, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"timeline\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainTimelineInitializer);\n }\n });\n factory.registerView(\"grid\", Grid, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"grid\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainGridInitializer);\n }\n });\n factory.registerView(\"resourceGrid\", ResourceGrid);\n factory.registerView(\"resourceTimeline\", ResourceTimeline);\n factory.registerView(\"resourceHistogram\", ResourceHistogram);\n var layersEngine = createLayers(gantt);\n var inlineEditors = gridEditorsFactory(gantt);\n gantt.ext.inlineEditors = inlineEditors;\n gantt.ext._inlineEditors = inlineEditors;\n inlineEditors.init(gantt);\n return {\n factory: factory,\n mouseEvents: mouseEvents.init(gantt),\n layersApi: layersEngine.init(),\n render: {\n gridLine: function gridLine() {\n return gridRenderer(gantt);\n },\n taskBg: function taskBg() {\n return renderTaskBg(gantt);\n },\n taskBar: function taskBar() {\n return renderTaskBar(gantt);\n },\n taskRollupBar: function taskRollupBar() {\n return renderRollupTaskBar(gantt);\n },\n taskSplitBar: function taskSplitBar() {\n return renderSplitTaskBar(gantt);\n },\n link: function link() {\n return renderLink(gantt);\n },\n resourceRow: function resourceRow() {\n return resourceMatrixRenderer(gantt);\n },\n resourceHistogram: function resourceHistogram() {\n return resourceHistogramRenderer(gantt);\n },\n gridTaskRowResizer: function gridTaskRowResizer() {\n return gridTaskRowResizerRenderer(gantt);\n }\n },\n layersService: {\n getDataRender: function getDataRender(name) {\n return layersEngine.getDataRender(name, gantt);\n },\n createDataRender: function createDataRender(config) {\n return layersEngine.createDataRender(config, gantt);\n }\n }\n };\n}\n\nmodule.exports = {\n init: initUI\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\");\n\nvar domHelpers = require(\"./utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n var boxAttribute = \"data-dhxbox\";\n var _dhx_msg_cfg = null;\n\n function callback(config, result) {\n var usercall = config.callback;\n modalBox.hide(config.box);\n _dhx_msg_cfg = config.box = null;\n if (usercall) usercall(result);\n }\n\n function modal_key(event) {\n if (_dhx_msg_cfg) {\n var code = event.which || event.keyCode;\n var preventDefault = false;\n\n if (messageBox.keyboard) {\n if (code == 13 || code == 32) {\n // default behavior is to confirm/submit popup on space/enter\n // if browser focus is set on button element - do button click instead of default behavior\n var target = event.target || event.srcElement;\n\n if (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n target.click();\n } else {\n callback(_dhx_msg_cfg, true);\n preventDefault = true;\n }\n }\n\n if (code == 27) {\n callback(_dhx_msg_cfg, false);\n preventDefault = true;\n }\n }\n\n if (preventDefault) {\n if (event.preventDefault) {\n event.preventDefault();\n }\n\n return !(event.cancelBubble = true);\n }\n\n return;\n }\n }\n\n var eventElement = domHelpers.getRootNode(gantt.$root) || document;\n gantt.event(eventElement, \"keydown\", modal_key, true);\n\n function modality(mode) {\n if (!modality.cover) {\n modality.cover = document.createElement(\"div\"); //necessary for IE only\n\n modality.cover.onkeydown = modal_key;\n modality.cover.className = \"dhx_modal_cover\";\n document.body.appendChild(modality.cover);\n }\n\n modality.cover.style.display = mode ? \"inline-block\" : \"none\";\n }\n\n function button(text, className, result) {\n var buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\n var name = className.toLowerCase().replace(/ /g, \"_\");\n var button_css = \"gantt_\" + name + \"_button\";\n return \"<div \" + buttonAriaAttrs + \" class='gantt_popup_button \" + button_css + \"' data-result='\" + result + \"' result='\" + result + \"' ><div>\" + text + \"</div></div>\";\n }\n\n function info(text) {\n if (!messageBox.area) {\n messageBox.area = document.createElement(\"div\");\n messageBox.area.className = \"gantt_message_area\";\n messageBox.area.style[messageBox.position] = \"5px\";\n document.body.appendChild(messageBox.area);\n }\n\n messageBox.hide(text.id);\n var message = document.createElement(\"div\");\n message.innerHTML = \"<div>\" + text.text + \"</div>\";\n message.className = \"gantt-info gantt-\" + text.type;\n\n message.onclick = function () {\n messageBox.hide(text.id);\n text = null;\n };\n\n gantt._waiAria.messageInfoAttr(message);\n\n if (messageBox.position == \"bottom\" && messageBox.area.firstChild) messageBox.area.insertBefore(message, messageBox.area.firstChild);else messageBox.area.appendChild(message);\n if (text.expire > 0) messageBox.timers[text.id] = window.setTimeout(function () {\n // GS-1213: We need that when Gantt is destroyed\n if (messageBox) messageBox.hide(text.id);\n }, text.expire);\n messageBox.pull[text.id] = message;\n message = null;\n return text.id;\n }\n\n function getFirstDefined() {\n var values = [].slice.apply(arguments, [0]);\n\n for (var i = 0; i < values.length; i++) {\n if (values[i]) {\n return values[i];\n }\n }\n }\n\n function _boxStructure(config, ok, cancel) {\n var box = document.createElement(\"div\");\n var contentId = utils.uid();\n\n gantt._waiAria.messageModalAttr(box, contentId);\n\n box.className = \" gantt_modal_box gantt-\" + config.type;\n box.setAttribute(boxAttribute, 1);\n var inner = '';\n if (config.width) box.style.width = config.width;\n if (config.height) box.style.height = config.height;\n if (config.title) inner += '<div class=\"gantt_popup_title\">' + config.title + '</div>';\n inner += '<div class=\"gantt_popup_text\" id=\"' + contentId + '\"><span>' + (config.content ? '' : config.text) + '</span></div><div class=\"gantt_popup_controls\">';\n if (ok) inner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n if (cancel) inner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n if (config.buttons) {\n for (var i = 0; i < config.buttons.length; i++) {\n var btn = config.buttons[i];\n\n if (_typeof(btn) == \"object\") {\n // Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n var label = btn.label;\n var css = btn.css || \"gantt_\" + btn.label.toLowerCase() + \"_button\";\n var value = btn.value || i;\n inner += button(label, css, value);\n } else {\n inner += button(btn, btn, i);\n }\n }\n }\n\n inner += '</div>';\n box.innerHTML = inner;\n\n if (config.content) {\n var node = config.content;\n if (typeof node == \"string\") node = document.getElementById(node);\n if (node.style.display == 'none') node.style.display = \"\";\n box.childNodes[config.title ? 1 : 0].appendChild(node);\n }\n\n box.onclick = function (event) {\n var source = event.target || event.srcElement;\n if (!source.className) source = source.parentNode;\n\n if (domHelpers.closest(source, \".gantt_popup_button\")) {\n var result = source.getAttribute(\"data-result\");\n result = result == \"true\" || (result == \"false\" ? false : result);\n callback(config, result);\n }\n };\n\n config.box = box;\n if (ok || cancel) _dhx_msg_cfg = config;\n return box;\n }\n\n function _createBox(config, ok, cancel) {\n var box = config.tagName ? config : _boxStructure(config, ok, cancel);\n if (!config.hidden) modality(true);\n document.body.appendChild(box);\n var x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n var y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n if (config.position == \"top\") box.style.top = \"-3px\";else box.style.top = y + 'px';\n box.style.left = x + 'px'; //necessary for IE only\n\n box.onkeydown = modal_key;\n modalBox.focus(box);\n if (config.hidden) modalBox.hide(box);\n gantt.callEvent(\"onMessagePopup\", [box]);\n return box;\n }\n\n function alertPopup(config) {\n return _createBox(config, true, false);\n }\n\n function confirmPopup(config) {\n return _createBox(config, true, true);\n }\n\n function boxPopup(config) {\n return _createBox(config);\n }\n\n function box_params(text, type, callback) {\n if (_typeof(text) != \"object\") {\n if (typeof type == \"function\") {\n callback = type;\n type = \"\";\n }\n\n text = {\n text: text,\n type: type,\n callback: callback\n };\n }\n\n return text;\n }\n\n function params(text, type, expire, id) {\n if (_typeof(text) != \"object\") text = {\n text: text,\n type: type,\n expire: expire,\n id: id\n };\n text.id = text.id || utils.uid();\n text.expire = text.expire || messageBox.expire;\n return text;\n }\n\n var alertBox = function alertBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"confirm\";\n return alertPopup(text);\n };\n\n var confirmBox = function confirmBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return confirmPopup(text);\n };\n\n var modalBox = function modalBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return boxPopup(text);\n };\n\n modalBox.hide = function (node) {\n while (node && node.getAttribute && !node.getAttribute(boxAttribute)) {\n node = node.parentNode;\n }\n\n if (node) {\n node.parentNode.removeChild(node);\n modality(false);\n gantt.callEvent(\"onAfterMessagePopup\", [node]);\n }\n };\n\n modalBox.focus = function (node) {\n setTimeout(function () {\n var focusable = domHelpers.getFocusableNodes(node);\n\n if (focusable.length) {\n if (focusable[0].focus) focusable[0].focus();\n }\n }, 1);\n };\n\n var messageBox = function messageBox(text, type, expire, id) {\n text = params.apply(this, arguments);\n text.type = text.type || \"info\";\n var subtype = text.type.split(\"-\")[0];\n\n switch (subtype) {\n case \"alert\":\n return alertPopup(text);\n\n case \"confirm\":\n return confirmPopup(text);\n\n case \"modalbox\":\n return boxPopup(text);\n\n default:\n return info(text);\n }\n };\n\n messageBox.seed = new Date().valueOf();\n messageBox.uid = utils.uid;\n messageBox.expire = 4000;\n messageBox.keyboard = true;\n messageBox.position = \"top\";\n messageBox.pull = {};\n messageBox.timers = {};\n\n messageBox.hideAll = function () {\n for (var key in messageBox.pull) {\n messageBox.hide(key);\n }\n };\n\n messageBox.hide = function (id) {\n var obj = messageBox.pull[id];\n\n if (obj && obj.parentNode) {\n window.setTimeout(function () {\n obj.parentNode.removeChild(obj);\n obj = null;\n }, 2000);\n obj.className += \" hidden\";\n if (messageBox.timers[id]) window.clearTimeout(messageBox.timers[id]);\n delete messageBox.pull[id];\n }\n };\n\n var popups = [];\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n popups.push(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function (box) {\n for (var i = 0; i < popups.length; i++) {\n if (popups[i] === box) {\n popups.splice(i, 1);\n i--;\n }\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n if (modality.cover && modality.cover.parentNode) {\n modality.cover.parentNode.removeChild(modality.cover);\n }\n\n for (var i = 0; i < popups.length; i++) {\n if (popups[i].parentNode) {\n popups[i].parentNode.removeChild(popups[i]);\n }\n }\n\n popups = null;\n\n if (messageBox.area && messageBox.area.parentNode) {\n messageBox.area.parentNode.removeChild(messageBox.area);\n }\n\n messageBox = null;\n });\n return {\n alert: alertBox,\n confirm: confirmBox,\n message: messageBox,\n modalbox: modalBox\n };\n};","module.exports = function (gantt) {\n var utils = require(\"../utils/utils\");\n\n var env = require(\"../utils/env\");\n\n var isHeadless = require(\"../utils/is_headless\");\n\n if (!env.isNode) {\n var domHelpers = require(\"./ui/utils/dom_helpers\");\n\n var codeHelpers = require(\"../utils/helpers\");\n\n gantt.utils = {\n arrayFind: codeHelpers.arrayFind,\n dom: domHelpers\n };\n\n var domEvents = require(\"./ui/utils/dom_event_scope\")();\n\n gantt.event = domEvents.attach;\n gantt.eventRemove = domEvents.detach;\n gantt._eventRemoveAll = domEvents.detachAll;\n gantt._createDomEventScope = domEvents.extend;\n utils.mixin(gantt, require(\"./ui/message\")(gantt));\n\n var uiApi = require(\"./ui/index\").init(gantt);\n\n gantt.$ui = uiApi.factory;\n gantt.$ui.layers = uiApi.render;\n gantt.$mouseEvents = uiApi.mouseEvents;\n gantt.$services.setService(\"mouseEvents\", function () {\n return gantt.$mouseEvents;\n });\n gantt.mixin(gantt, uiApi.layersApi);\n\n require(\"./data_task_layers\")(gantt);\n\n gantt.$services.setService(\"layers\", function () {\n return uiApi.layersService;\n });\n\n var createLayoutFacade = require(\"./facades/layout\");\n\n gantt.mixin(gantt, createLayoutFacade());\n\n require(\"./ui/skin\")(gantt);\n\n require(\"../css/skins/skyblue\")(gantt);\n\n require(\"../css/skins/meadow\")(gantt);\n\n require(\"../css/skins/terrace\")(gantt);\n\n require(\"../css/skins/broadway\")(gantt);\n\n require(\"../css/skins/material\")(gantt);\n\n require(\"../css/skins/contrast_black\")(gantt);\n\n require(\"../css/skins/contrast_white\")(gantt);\n\n require(\"./ui/plugins\")(gantt);\n\n require(\"./ui/touch\")(gantt);\n\n require(\"./ui/lightbox\")(gantt);\n\n require(\"./ui/lightbox/lightbox_optional_time\")(gantt);\n\n require(\"./ui/wai_aria\")(gantt);\n\n gantt.locate = function (e) {\n var trg = domHelpers.getTargetNode(e); // ignore empty rows/cells of the timeline\n\n if (domHelpers.closest(trg, \".gantt_task_row\")) {\n return null;\n }\n\n var targetAttribute = arguments[1] || this.config.task_attribute;\n var node = domHelpers.locateAttribute(trg, targetAttribute);\n\n if (node) {\n return node.getAttribute(targetAttribute);\n } else {\n return null;\n }\n };\n\n gantt._locate_css = function (e, classname, strict) {\n return domHelpers.locateClassName(e, classname, strict);\n };\n\n gantt._locateHTML = function (e, attribute) {\n return domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n };\n }\n\n gantt.attachEvent(\"onParse\", function () {\n if (!isHeadless(gantt)) {\n gantt.attachEvent(\"onGanttRender\", function () {\n if (gantt.config.initial_scroll) {\n var firstTask = gantt.getTaskByIndex(0);\n var id = firstTask ? firstTask.id : gantt.config.root_id; // GS-1450. Don't scroll to the task if there is no timeline\n\n if (gantt.isTaskExists(id) && gantt.$task && gantt.utils.dom.isChildOf(gantt.$task, gantt.$container)) {\n gantt.showTask(id);\n }\n }\n }, {\n once: true\n });\n }\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (!this.config.scroll_size) this.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n if (!isHeadless(gantt)) {\n // detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\n this._eventRemoveAll();\n\n this.$mouseEvents.reset();\n this.resetLightbox();\n }\n }); // GS-1261: scroll the views to the right side when RTL is enabled\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt) && gantt.config.rtl) {\n gantt.$layout.getCellsByType(\"viewCell\").forEach(function (cell) {\n var attachedScrollbar = cell.$config.scrollX;\n if (!attachedScrollbar) return;\n var scrollbar = gantt.$ui.getView(attachedScrollbar);\n if (scrollbar) scrollbar.scrollTo(scrollbar.$config.scrollSize, 0);\n });\n }\n }); // GS-1649: check if extensions are connected via files\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var activePlugins = gantt.plugins();\n var availablePlugins = {\n auto_scheduling: gantt.autoSchedule,\n click_drag: gantt.ext.clickDrag,\n critical_path: gantt.isCriticalTask,\n drag_timeline: gantt.ext.dragTimeline,\n export_api: gantt.exportToPDF,\n fullscreen: gantt.ext.fullscreen,\n grouping: gantt.groupBy,\n keyboard_navigation: gantt.ext.keyboardNavigation,\n marker: gantt.addMarker,\n multiselect: gantt.eachSelectedTask,\n overlay: gantt.ext.overlay,\n quick_info: gantt.templates.quick_info_content,\n tooltip: gantt.ext.tooltips,\n undo: gantt.undo\n };\n\n for (var plugin in availablePlugins) {\n if (availablePlugins[plugin] && !activePlugins[plugin]) {\n // eslint-disable-next-line no-console\n console.warn(\"You connected the '\".concat(plugin, \"' extension via an obsolete file. \\nTo fix it, you need to remove the obsolete file and connect the extension via the plugins method: https://docs.dhtmlx.com/gantt/api__gantt_plugins.html\"));\n }\n }\n }\n });\n};","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Нове завдання\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", // Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tsection_type: \"Тип\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Відміна\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n * updated by @levkar at https://github.com/DHTMLX/gantt/pull/10\r\n */\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tmonth_short: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Yeni görev\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"İptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Görev silinecek, emin misiniz?\",\r\n\t\tsection_description: \"Açıklama\",\r\n\t\tsection_time: \"Zaman Aralığı\",\r\n\t\tsection_type: \"Tip\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Görev Adı\",\r\n\t\tcolumn_start_date: \"Başlangıç\",\r\n\t\tcolumn_duration: \"Süre\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Bağlantı\",\r\n\t\tconfirm_link_deleting: \"silinecek\",\r\n\t\tlink_start: \" (başlangıç)\",\r\n\t\tlink_end: \" (bitiş)\",\r\n\r\n\t\ttype_task: \"Görev\",\r\n\t\ttype_project: \"Proje\",\r\n\t\ttype_milestone: \"Kilometretaşı\",\r\n\r\n\r\n\t\tminutes: \"Dakika\",\r\n\t\thours: \"Saat\",\r\n\t\tdays: \"Gün\",\r\n\t\tweeks: \"Hafta\",\r\n\t\tmonths: \"Ay\",\r\n\t\tyears: \"Yıl\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Ýptal\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n\tTranslation by Peter Eriksson\r\n */\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny uppgift\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detajer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\",\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tsection_type: \"Typ\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Uppgiftsnamn\",\r\n\t\tcolumn_start_date: \"Starttid\",\r\n\t\tcolumn_duration: \"Varaktighet\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\r\n\t\tlink: \"Länk\",\r\n\t\tconfirm_link_deleting: \"kommer tas bort\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (slut)\",\r\n\t\ttype_task: \"Uppgift\",\r\n\t\ttype_project: \"Projekt\",\r\n\t\ttype_milestone: \"Milstolpe\",\r\n\r\n\t\tminutes: \"Minuter\",\r\n\t\thours: \"Timmar\",\r\n\t\tdays: \"Dagar\",\r\n\t\tweeks: \"Veckor\",\r\n\t\tmonths: \"Månader\",\r\n\t\tyears: \"År\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Avbryt\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nová úloha\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", // Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Späť\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nova naloga\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", // Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Prekliči\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Новое задание\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", // Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tsection_type: \"Тип\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"ИСР\",\r\n\t\tcolumn_text: \"Задача\",\r\n\t\tcolumn_start_date: \"Начало\",\r\n\t\tcolumn_duration: \"Длительность\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Связь\",\r\n\t\tconfirm_link_deleting: \"будет удалена\",\r\n\t\tlink_start: \" (начало)\",\r\n\t\tlink_end: \" (конец)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Минута\",\r\n\t\thours: \"Час\",\r\n\t\tdays: \"День\",\r\n\t\tweeks: \"Неделя\",\r\n\t\tmonths: \"Месяц\",\r\n\t\tyears: \"Год\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Отменить\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"начните вводить слово для фильтрации\",\r\n\t\tresources_filter_label: \"спрятать не установленные\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Sarcina noua\",\r\n\t\ticon_save: \"Salveaza\",\r\n\t\ticon_cancel: \"Anuleaza\",\r\n\t\ticon_details: \"Detalii\",\r\n\t\ticon_edit: \"Editeaza\",\r\n\t\ticon_delete: \"Sterge\",\r\n\t\tconfirm_closing: \"Schimbarile nu vor fi salvate, esti sigur?\",// Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description: \"Descriere\",\r\n\t\tsection_time: \"Interval\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Anuleaza\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n\r\n Updated by Jorge Albernaz Martins\r\n\r\n jorgefox@hotmail.com\r\n\r\n www.redfox.inf.br\r\n\r\n JorgeFox\r\n\r\n*/\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nova tarefa\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Excluir\",\r\n\t\tconfirm_closing: \"\",// Suas alterações serão perdidas, confirme?\r\n\t\tconfirm_deleting: \"As tarefas serão excluidas permanentemente, confirme?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período\",\r\n\t\tsection_type: \"Tipo\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"EAP\",\r\n\t\tcolumn_text: \"Nome tarefa\",\r\n\t\tcolumn_start_date: \"Data início\",\r\n\t\tcolumn_duration: \"Duração\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"Será excluído!\",\r\n\t\tlink_start: \" (início)\",\r\n\t\tlink_end: \" (fim)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Projeto\",\r\n\t\ttype_milestone: \"Marco\",\r\n\r\n\r\n\t\tminutes: \"Minutos\",\r\n\t\thours: \"Horas\",\r\n\t\tdays: \"Dias\",\r\n\t\tweeks: \"Semanas\",\r\n\t\tmonths: \"Meses\",\r\n\t\tyears: \"Anos\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancelar\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Restrição\",\r\n\t\tconstraint_type: \"Tipo Restrição\",\r\n\t\tconstraint_date: \"Data restrição\",\r\n\t\tasap: \"Mais breve possível\",\r\n\t\talap: \"Mais tarde possível\",\r\n\t\tsnet: \"Não começar antes de\",\r\n\t\tsnlt: \"Não começar depois de\",\r\n\t\tfnet: \"Não terminar antes de\",\r\n\t\tfnlt: \"Não terminar depois de\",\r\n\t\tmso: \"Precisa começar em\",\r\n\t\tmfo: \"Precisa terminar em\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"Tipo de filtros\",\r\n\t\tresources_filter_label: \"Ocultar vazios\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nowe zadanie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", // Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tsection_type: \"Typ\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Nazwa zadania\",\r\n\t\tcolumn_start_date: \"Początek\",\r\n\t\tcolumn_duration: \"Czas trwania\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"zostanie usunięty\",\r\n\t\tlink_start: \" (początek)\",\r\n\t\tlink_end: \" (koniec)\",\r\n\r\n\t\ttype_task: \"Zadanie\",\r\n\t\ttype_project: \"Projekt\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minuty\",\r\n\t\thours: \"Godziny\",\r\n\t\tdays: \"Dni\",\r\n\t\tweeks: \"Tydzień\",\r\n\t\tmonths: \"Miesiące\",\r\n\t\tyears: \"Lata\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Anuluj\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny oppgave\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", // Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Avbryt\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nieuwe taak\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Taak omschrijving\",\r\n\t\tcolumn_start_date: \"Startdatum\",\r\n\t\tcolumn_duration: \"Duur\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Koppeling\",\r\n\t\tconfirm_link_deleting: \"zal worden verwijderd\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (eind)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"minuten\",\r\n\t\thours: \"uren\",\r\n\t\tdays: \"dagen\",\r\n\t\tweeks: \"weken\",\r\n\t\tmonths: \"maanden\",\r\n\t\tyears: \"jaren\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Annuleren\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny oppgave\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Avbryt\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","export default class LocaleManager{\r\n\tprivate _locales:{[key:string]: IGanttLocale };\r\n\r\n\tconstructor(config: {[key:string]: IGanttLocale }){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale = (name: string, locale: IGanttLocale) => {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale = (name: string): IGanttLocale => {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","/*\r\n\tTranslated by cjkim@dbvalley.com\r\n*/\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\r\n\t\tmonth_short: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\r\n\t\tday_full: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\r\n\t\tday_short: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"이름없는 작업\",\r\n\t\ticon_save: \"저장\",\r\n\t\ticon_cancel: \"취소\",\r\n\t\ticon_details: \"세부 사항\",\r\n\t\ticon_edit: \"수정\",\r\n\t\ticon_delete: \"삭제\",\r\n\t\tconfirm_closing: \"\",\r\n\t\tconfirm_deleting: \"작업을 삭제하시겠습니까?\",\r\n\t\tsection_description: \"설명\",\r\n\t\tsection_time: \"기간\",\r\n\t\tsection_type: \"Type\",\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"작업명\",\r\n\t\tcolumn_start_date: \"시작일\",\r\n\t\tcolumn_duration: \"기간\",\r\n\t\tcolumn_add: \"\",\r\n\t\tlink: \"전제\",\r\n\t\tconfirm_link_deleting: \"삭제 하시겠습니까?\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\t\ttype_task: \"작업\",\r\n\t\ttype_project: \"프로젝트\",\r\n\t\ttype_milestone: \"마일스톤\",\r\n\t\tminutes: \"분\",\r\n\t\thours: \"시간\",\r\n\t\tdays: \"일\",\r\n\t\tweeks: \"주\",\r\n\t\tmonths: \"달\",\r\n\t\tyears: \"년\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"취소\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"新しい仕事\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", // 変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"キャンセル\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n Update 29/12/2015:\r\n New labels translation by ARCANGELI CLAUDIO\r\n\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nuovo compito\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\",// \"Sei sicuro di confermare la chiusura?\",\r\n\t\tconfirm_deleting: \"Sei sicuro di confermare l'eliminazione?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tsection_type: \"Tipo\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Nome Attività\",\r\n\t\tcolumn_start_date: \"Inizio\",\r\n\t\tcolumn_duration: \"Durata\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"sarà eliminato\",\r\n\t\tlink_start: \" (inizio)\",\r\n\t\tlink_end: \" (fine)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minuti\",\r\n\t\thours: \"Ore\",\r\n\t\tdays: \"Giorni\",\r\n\t\tweeks: \"Settimane\",\r\n\t\tmonths: \"Mesi\",\r\n\t\tyears: \"Anni\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Chiudi\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Tugas baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /* Perubahan tidak akan disimpan ? */\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Batal\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Új feladat\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", // A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Mégse\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n Translation by Davor\r\n http://docs.dhtmlx.com/gantt/desktop__localization.html#comment-2569116291\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\r\n\t\tmonth_short: [\"Sij\", \"Velj\", \"Ožu\", \"Tra\", \"Svi\", \"Lip\", \"Srp\", \"Kol\", \"Ruj\", \"Lis\", \"Stu\", \"Pro\"],\r\n\t\tday_full: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"Četvrtak\", \"Petak\", \"Subota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Novi Zadatak\",\r\n\t\ticon_save: \"Spremi\",\r\n\t\ticon_cancel: \"Odustani\",\r\n\t\ticon_details: \"Detalji\",\r\n\t\ticon_edit: \"Izmjeni\",\r\n\t\ticon_delete: \"Obriši\",\r\n\t\tconfirm_closing: \"\",\r\n\t\tconfirm_deleting: \"Zadatak će biti trajno izbrisan, jeste li sigurni?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Vremenski Period\",\r\n\t\tsection_type: \"Tip\",\r\n\r\n\t\t/* grid columns */\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Naziv Zadatka\",\r\n\t\tcolumn_start_date: \"Početno Vrijeme\",\r\n\t\tcolumn_duration: \"Trajanje\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Poveznica\",\r\n\t\tconfirm_link_deleting: \"će biti izbrisan\",\r\n\t\tlink_start: \" (početak)\",\r\n\t\tlink_end: \" (kraj)\",\r\n\r\n\t\ttype_task: \"Zadatak\",\r\n\t\ttype_project: \"Projekt\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minute\",\r\n\t\thours: \"Sati\",\r\n\t\tdays: \"Dani\",\r\n\t\tweeks: \"Tjedni\",\r\n\t\tmonths: \"Mjeseci\",\r\n\t\tyears: \"Godine\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Odustani\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"משימה חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"הסבר\",\r\n\t\tsection_time: \"תקופה\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"בטל\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nouvelle tâche\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\",// Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tsection_type: \"Type\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"OTP\",\r\n\t\tcolumn_text: \"Nom de la tâche\",\r\n\t\tcolumn_start_date: \"Date initiale\",\r\n\t\tcolumn_duration: \"Durée\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Le lien\",\r\n\t\tconfirm_link_deleting: \"sera supprimé\",\r\n\t\tlink_start: \"(début)\",\r\n\t\tlink_end: \"(fin)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Heures\",\r\n\t\tdays: \"Jours\",\r\n\t\tweeks: \"Semaines\",\r\n\t\tmonths: \"Mois\",\r\n\t\tyears: \"Années\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Annuler\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Uusi tehtävä\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Peru\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n dhtmlxGantt Persian (Farsi, fa_IR) locale by Mohammad Shokri http://slashsbin.com/\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\r\n\t\t\t\"ژانویه\",\r\n\t\t\t\"فوریه\",\r\n\t\t\t\"مارس\",\r\n\t\t\t\"آوریل\",\r\n\t\t\t\"مه\",\r\n\t\t\t\"ژوئن\",\r\n\t\t\t\"ژوئیه\",\r\n\t\t\t\"اوت\",\r\n\t\t\t\"سپتامبر\",\r\n\t\t\t\"اکتبر\",\r\n\t\t\t\"نوامبر\",\r\n\t\t\t\"دسامبر\"\r\n\t\t],\r\n\t\tmonth_short: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\r\n\t\tday_full: [\r\n\t\t\t\"يکشنبه\",\r\n\t\t\t\"دوشنبه\",\r\n\t\t\t\"سهشنبه\",\r\n\t\t\t\"چهارشنبه\",\r\n\t\t\t\"پنجشنبه\",\r\n\t\t\t\"جمعه\",\r\n\t\t\t\"شنبه\"\r\n\t\t],\r\n\t\tday_short: [\r\n\t\t\t\"ی\",\r\n\t\t\t\"د\",\r\n\t\t\t\"س\",\r\n\t\t\t\"چ\",\r\n\t\t\t\"پ\",\r\n\t\t\t\"ج\",\r\n\t\t\t\"ش\"\r\n\t\t]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"وظیفه جدید\",\r\n\t\ticon_save: \"ذخیره\",\r\n\t\ticon_cancel: \"لغو\",\r\n\t\ticon_details: \"جزییات\",\r\n\t\ticon_edit: \"ویرایش\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"تغییرات شما ازدست خواهد رفت، آیا مطمئن هستید؟\",\r\n\t\tconfirm_deleting: \"این مورد برای همیشه حذف خواهد شد، آیا مطمئن هستید؟\",\r\n\t\tsection_description: \"توضیحات\",\r\n\t\tsection_time: \"مدت زمان\",\r\n\t\tsection_type: \"نوع\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"عنوان\",\r\n\t\tcolumn_start_date: \"زمان شروع\",\r\n\t\tcolumn_duration: \"مدت\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"ارتباط\",\r\n\t\tconfirm_link_deleting: \"حذف خواهد شد\",\r\n\t\tlink_start: \" (آغاز)\",\r\n\t\tlink_end: \" (پایان)\",\r\n\r\n\t\ttype_task: \"وظیفه\",\r\n\t\ttype_project: \"پروژه\",\r\n\t\ttype_milestone: \"نگارش\",\r\n\r\n\t\tminutes: \"دقایق\",\r\n\t\thours: \"ساعات\",\r\n\t\tdays: \"روزها\",\r\n\t\tweeks: \"هفته\",\r\n\t\tmonths: \"ماهها\",\r\n\t\tyears: \"سالها\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"تایید\",\r\n\t\tmessage_cancel: \"لغو\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n\r\n Update 30/10/2015:\r\n Translation of new labels by Jorge Macias\r\n https://disqus.com/by/disqus_bTuZk1voC7/\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nueva tarea\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", // \"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tsection_type: \"Tipo\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"EDT\",\r\n\t\tcolumn_text: \"Tarea\",\r\n\t\tcolumn_start_date: \"Inicio\",\r\n\t\tcolumn_duration: \"Duración\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Enlace\",\r\n\t\tconfirm_link_deleting: \"será borrada\",\r\n\t\tlink_start: \" (inicio)\",\r\n\t\tlink_end: \" (fin)\",\r\n\r\n\t\ttype_task: \"Tarea\",\r\n\t\ttype_project: \"Proyecto\",\r\n\t\ttype_milestone: \"Hito\",\r\n\r\n\r\n\t\tminutes: \"Minutos\",\r\n\t\thours: \"Horas\",\r\n\t\tdays: \"Días\",\r\n\t\tweeks: \"Semanas\",\r\n\t\tmonths: \"Meses\",\r\n\t\tyears: \"Años\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancelar\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"New task\",\r\n\t\ticon_save: \"Save\",\r\n\t\ticon_cancel: \"Cancel\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Delete\",\r\n\t\tconfirm_closing: \"\",// Your changes will be lost, are you sure?\r\n\t\tconfirm_deleting: \"Task will be deleted permanently, are you sure?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Time period\",\r\n\t\tsection_type: \"Type\",\r\n\r\n\t\t/* grid columns */\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Κυριακή\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Νέα εργασία\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Άκυρο\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Neue Aufgabe\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", // \"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"PSP\",\r\n\t\tcolumn_text: \"Task-Namen\",\r\n\t\tcolumn_start_date: \"Startzeit\",\r\n\t\tcolumn_duration: \"Dauer\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"werden gelöscht\",\r\n\t\tlink_start: \"(starten)\",\r\n\t\tlink_end: \"(ende)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minuten\",\r\n\t\thours: \"Stunden\",\r\n\t\tdays: \"Tage\",\r\n\t\tweeks: \"Wochen\",\r\n\t\tmonths: \"Monate\",\r\n\t\tyears: \"Jahre\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Abbrechen\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Regel\",\r\n\t\tconstraint_type: \"Regel\",\r\n\t\tconstraint_date: \"Regel - Datum\",\r\n\t\tasap: \"So bald wie möglich\",\r\n\t\talap: \"So spät wie möglich\",\r\n\t\tsnet: \"Beginn nicht vor\",\r\n\t\tsnlt: \"Beginn nicht später als\",\r\n\t\tfnet: \"Fertigstellung nicht vor\",\r\n\t\tfnlt: \"Fertigstellung nicht später als\",\r\n\t\tmso: \"Muss beginnen am\",\r\n\t\tmfo: \"Muss fertig sein am\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Ny opgave\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Fortryd\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nová práce\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", // Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Zpět\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\nTranslation by FreezeSoul\r\n\r\nUpdate 26/10/2015:\r\nTranslation of new labels by zwh8800\r\n https://github.com/DHTMLX/gantt/pull/7\r\n\r\n*/\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"新任務\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", // Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tsection_type: \"类型\",\r\n\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"工作分解结构\",\r\n\t\tcolumn_text: \"任务名\",\r\n\t\tcolumn_start_date: \"开始时间\",\r\n\t\tcolumn_duration: \"持续时间\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\r\n\t\tlink: \"关联\",\r\n\t\tconfirm_link_deleting: \"将被删除\",\r\n\t\tlink_start: \" (开始)\",\r\n\t\tlink_end: \" (结束)\",\r\n\r\n\t\ttype_task: \"任务\",\r\n\t\ttype_project: \"项目\",\r\n\t\ttype_milestone: \"里程碑\",\r\n\r\n\t\tminutes: \"分钟\",\r\n\t\thours: \"小时\",\r\n\t\tdays: \"天\",\r\n\t\tweeks: \"周\",\r\n\t\tmonths: \"月\",\r\n\t\tyears: \"年\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"关闭\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\n\r\nconst locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Nova tasca\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", // \"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel·lar\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [\"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"Новае заданне\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", // Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tsection_type: \"Тып\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"ІСР\",\r\n\t\tcolumn_text: \"Задача\",\r\n\t\tcolumn_start_date: \"Пачатак\",\r\n\t\tcolumn_duration: \"Працяг\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Сувязь\",\r\n\t\tconfirm_link_deleting: \"будзе выдалена\",\r\n\t\tlink_start: \"(пачатак)\",\r\n\t\tlink_end: \"(канец)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\r\n\t\tminutes: \"Хвiлiна\",\r\n\t\thours: \"Гадзiна\",\r\n\t\tdays: \"Дзень\",\r\n\t\tweeks: \"Тыдзень\",\r\n\t\tmonths: \"Месяц\",\r\n\t\tyears: \"Год\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Адмяніць\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","const locale: IGanttLocale = {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tnew_task: \"مهمة جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", // Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tsection_type: \"Type\",\r\n\t\t/* grid columns */\r\n\r\n\t\tcolumn_wbs: \"WBS\",\r\n\t\tcolumn_text: \"Task name\",\r\n\t\tcolumn_start_date: \"Start time\",\r\n\t\tcolumn_duration: \"Duration\",\r\n\t\tcolumn_add: \"\",\r\n\r\n\t\t/* link confirmation */\r\n\t\tlink: \"Link\",\r\n\t\tconfirm_link_deleting: \"will be deleted\",\r\n\t\tlink_start: \" (start)\",\r\n\t\tlink_end: \" (end)\",\r\n\r\n\t\ttype_task: \"Task\",\r\n\t\ttype_project: \"Project\",\r\n\t\ttype_milestone: \"Milestone\",\r\n\r\n\t\tminutes: \"Minutes\",\r\n\t\thours: \"Hours\",\r\n\t\tdays: \"Days\",\r\n\t\tweeks: \"Week\",\r\n\t\tmonths: \"Months\",\r\n\t\tyears: \"Years\",\r\n\r\n\t\t/* message popup */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"الغاء\",\r\n\r\n\t\t/* constraints */\r\n\t\tsection_constraint: \"Constraint\",\r\n\t\tconstraint_type: \"Constraint type\",\r\n\t\tconstraint_date: \"Constraint date\",\r\n\t\tasap: \"As Soon As Possible\",\r\n\t\talap: \"As Late As Possible\",\r\n\t\tsnet: \"Start No Earlier Than\",\r\n\t\tsnlt: \"Start No Later Than\",\r\n\t\tfnet: \"Finish No Earlier Than\",\r\n\t\tfnlt: \"Finish No Later Than\",\r\n\t\tmso: \"Must Start On\",\r\n\t\tmfo: \"Must Finish On\",\r\n\r\n\t\t/* resource control */\r\n\t\tresources_filter_placeholder: \"type to filter\",\r\n\t\tresources_filter_label: \"hide empty\",\r\n\r\n\t\t/* empty state screen */\r\n\t\tempty_state_text_link: \"Click here\",\r\n\t\tempty_state_text_description: \"to create your first task\"\r\n\t}\r\n};\r\n\r\nexport default locale;\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fa from \"./locale_fa\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hr from \"./locale_hr\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\nimport kr from \"./locale_kr\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfa,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thr,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tkr,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","// all builds except for evaluation version get this mockup\r\n// the evaluation build gets actual codes\r\nexport default () => {};","function extend(gantt) {\n gantt.destructor = function () {\n this.clearAll();\n this.callEvent(\"onDestroy\", []);\n\n if (this.$root) {\n delete this.$root.gantt;\n }\n\n if (this._eventRemoveAll) {\n this._eventRemoveAll();\n }\n\n if (this.$layout) {\n this.$layout.destructor();\n }\n\n if (this.resetLightbox) {\n this.resetLightbox();\n }\n\n if (this._dp && this._dp.destructor) {\n this._dp.destructor();\n }\n\n this.$services.destructor(); // detachAllEvents should be called last, because in components may be attached events\n\n this.detachAllEvents();\n\n for (var i in this) {\n if (i.indexOf(\"$\") === 0) {\n delete this[i];\n }\n }\n\n this.$destroyed = true;\n };\n}\n\nmodule.exports = extend;","/*\r\n \tasserts will be removed in final code, so you can place them anythere\r\n\twithout caring about performance impacts\r\n*/\nmodule.exports = function (gantt) {\n return function assert(check, message) {\n if (!check) {\n if (gantt.config.show_errors && gantt.callEvent(\"onError\", [message]) !== false) {\n if (gantt.message) {\n gantt.message({\n type: \"error\",\n text: message,\n expire: -1\n });\n } else {\n // eslint-disable-next-line\n console.log(message);\n } // eslint-disable-next-line no-debugger\n\n\n debugger;\n }\n }\n };\n};","function addResizeListener(gantt) {\n var containerStyles = window.getComputedStyle(gantt.$root);\n\n if (containerStyles.getPropertyValue(\"position\") == \"static\") {\n gantt.$root.style.position = \"relative\";\n }\n\n var resizeWatcher = document.createElement('iframe');\n resizeWatcher.className = \"gantt_container_resize_watcher\";\n resizeWatcher.tabIndex = -1;\n\n if (gantt.config.wai_aria_attributes) {\n resizeWatcher.setAttribute(\"role\", \"none\");\n resizeWatcher.setAttribute(\"aria-hidden\", true);\n }\n\n var salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\n\n if (salesforce_environment) {\n gantt.config.container_resize_method = \"timeout\";\n } // in some environments (namely, in SalesForce) iframe.contentWindow is not available\n\n\n gantt.$root.appendChild(resizeWatcher);\n\n if (resizeWatcher.contentWindow) {\n listenWindowResize(gantt, resizeWatcher.contentWindow);\n } else {\n // if so - ditch the iframe and fallback to listening the main window resize\n gantt.$root.removeChild(resizeWatcher);\n listenWindowResize(gantt, window);\n }\n}\n\nfunction listenWindowResize(gantt, window) {\n var resizeTimeout = gantt.config.container_resize_timeout || 20;\n var resizeDelay;\n var previousSize = getContainerSize(gantt);\n\n if (gantt.config.container_resize_method == \"timeout\") {\n lowlevelResizeWatcher();\n } else {\n try {\n gantt.event(window, \"resize\", function () {\n if (gantt.$scrollbarRepaint) {\n gantt.$scrollbarRepaint = null;\n } else {\n // GS-2140. Don't repaint Gantt if it has the same sizes\n var currentSize = getContainerSize(gantt);\n\n if (previousSize.x == currentSize.x && previousSize.y == currentSize.y) {\n return;\n }\n\n previousSize = currentSize;\n repaintGantt();\n }\n });\n } catch (e) {\n lowlevelResizeWatcher();\n }\n }\n\n function repaintGantt() {\n clearTimeout(resizeDelay);\n resizeDelay = setTimeout(function () {\n if (!gantt.$destroyed) {\n gantt.render();\n }\n }, resizeTimeout);\n }\n\n var previousHeight = gantt.$root.offsetHeight;\n var previousWidth = gantt.$root.offsetWidth;\n\n function lowlevelResizeWatcher() {\n if (gantt.$root.offsetHeight != previousHeight || gantt.$root.offsetWidth != previousWidth) {\n repaintGantt();\n }\n\n previousHeight = gantt.$root.offsetHeight;\n previousWidth = gantt.$root.offsetWidth;\n setTimeout(lowlevelResizeWatcher, resizeTimeout);\n }\n}\n\nfunction getContainerSize(gantt) {\n return {\n x: gantt.$root.offsetWidth,\n y: gantt.$root.offsetHeight\n };\n}\n\nmodule.exports = addResizeListener;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar domHelpers = require(\"./ui/utils/dom_helpers\"),\n helpers = require(\"../utils/helpers\");\n\nvar isHeadless = require(\"../utils/is_headless\");\n\nvar addResizeListener = require(\"./ui/resize_listener\");\n\nmodule.exports = function (gantt) {\n var calculateScaleRange = require(\"./gantt_data_range\");\n\n gantt.assert = require(\"./common/assert\")(gantt);\n\n function isHTMLElement(node) {\n try {\n node.cloneNode(false);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n var invalidContainerMessage = \"Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).\" + \"This error means that either invalid object is passed into `gantt.init` or that the element with the specified ID doesn't exist on the page when `gantt.init` is called.\";\n\n function validateNode(node) {\n if (!node || typeof node == 'string' && document.getElementById(node)) return true;\n if (isHTMLElement(node)) return true;\n gantt.assert(false, invalidContainerMessage);\n throw new Error(invalidContainerMessage);\n } //initial initialization\n\n\n gantt.init = function (node, from, to) {\n if (gantt.env.isNode) {\n node = null; // for the nodejs version\n } else {\n validateNode(node); // for the web version\n }\n\n if (from && to) {\n this.config.start_date = this._min_date = new Date(from);\n this.config.end_date = this._max_date = new Date(to);\n }\n\n this.date.init(); //can be called only once\n\n this.init = function (node) {\n if (gantt.env.isNode) {\n node = null; // for the nodejs version\n } else {\n validateNode(node); // for the web version\n }\n\n if (this.$container && this.$container.parentNode) {\n this.$container.parentNode.removeChild(this.$container);\n this.$container = null;\n }\n\n if (this.$layout) {\n this.$layout.clear();\n }\n\n this._reinit(node);\n };\n\n this._reinit(node);\n };\n\n gantt._quickRefresh = function (code) {\n var stores = this._getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i]._quick_refresh = true;\n }\n\n code();\n\n for (var i = 0; i < stores.length; i++) {\n stores[i]._quick_refresh = false;\n }\n };\n\n var dropLayout = function dropLayout() {\n if (this._clearTaskLayers) {\n this._clearTaskLayers();\n }\n\n if (this._clearLinkLayers) {\n this._clearLinkLayers();\n }\n\n if (this.$layout) {\n this.$layout.destructor();\n this.$layout = null;\n this.$ui.reset();\n }\n }.bind(gantt);\n\n var rebuildLayout = function rebuildLayout() {\n if (isHeadless(gantt)) {\n return;\n }\n\n this.$root.innerHTML = \"\";\n this.$root.gantt = this;\n calculateScaleRange(this);\n this.config.layout.id = \"main\";\n this.$layout = this.$ui.createView(\"layout\", this.$root, this.config.layout);\n this.$layout.attachEvent(\"onBeforeResize\", function () {\n var storeNames = gantt.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeNames.length; i++) {\n gantt.getDatastore(storeNames[i]).filter();\n\n if (gantt.$data.tasksStore._skipTaskRecalculation) {\n // do not repaint items, they will be repainted later in the onStoreUpdate event\n if (gantt.$data.tasksStore._skipTaskRecalculation != \"lightbox\") {\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n }\n } else {\n gantt.getDatastore(storeNames[i]).callEvent(\"onBeforeRefreshAll\", []);\n }\n }\n });\n this.$layout.attachEvent(\"onResize\", function () {\n gantt._quickRefresh(function () {\n gantt.refreshData();\n });\n });\n this.callEvent(\"onGanttLayoutReady\", []);\n this.$layout.render();\n this.$container = this.$layout.$container.firstChild;\n addResizeListener(this);\n }.bind(gantt);\n\n gantt.resetLayout = function () {\n dropLayout();\n rebuildLayout();\n this.render();\n };\n\n gantt._reinit = function (node) {\n this.callEvent(\"onBeforeGanttReady\", []);\n\n this._update_flags();\n\n var config = this.$services.getService(\"templateLoader\");\n config.initTemplates(this);\n dropLayout();\n this.$root = null;\n\n if (node) {\n this.$root = domHelpers.toNode(node);\n rebuildLayout();\n this.$mouseEvents.reset(this.$root);\n }\n\n this.callEvent(\"onTemplatesReady\", []);\n this.callEvent(\"onGanttReady\", []);\n this.render();\n };\n\n gantt.$click = {\n buttons: {\n \"edit\": function edit(id) {\n if (gantt.isReadonly(gantt.getTask(id))) {\n return;\n }\n\n gantt.showLightbox(id);\n },\n \"delete\": function _delete(id) {\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n return;\n }\n\n var question = gantt.locale.labels.confirm_deleting;\n var title = gantt.locale.labels.confirm_deleting_title;\n\n gantt._simple_confirm(question, title, function () {\n if (!gantt.isTaskExists(id)) {\n gantt.hideLightbox();\n return;\n }\n\n if (task.$new) {\n // GS-2170. Do not recalculate the indexes and dates of other tasks\n // as they will be recalculated in the `refreshData`\n gantt.$data.tasksStore._skipTaskRecalculation = \"lightbox\";\n gantt.silent(function () {\n gantt.deleteTask(id, true);\n });\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n gantt.refreshData();\n } else {\n gantt.$data.tasksStore._skipTaskRecalculation = true;\n gantt.deleteTask(id);\n }\n\n gantt.hideLightbox();\n });\n }\n }\n }; //renders self\n\n gantt.render = function () {\n this.callEvent(\"onBeforeGanttRender\", []);\n var visibleDate;\n\n if (!isHeadless(gantt)) {\n if (!this.config.sort && this._sort) {\n this._sort = undefined;\n }\n\n if (this.$root) {\n if (this.config.rtl) {\n this.$root.classList.add(\"gantt_rtl\");\n this.$root.firstChild.classList.add(\"gantt_rtl\"); // GS-1499\n } else {\n this.$root.classList.remove(\"gantt_rtl\");\n this.$root.firstChild.classList.remove(\"gantt_rtl\"); // GS-1499\n }\n }\n\n var pos = this.getScrollState();\n var posX = pos ? pos.x : 0;\n\n if (this._getHorizontalScrollbar()) {\n var scrollbar = this._getHorizontalScrollbar();\n\n posX = scrollbar.$config.codeScrollLeft || posX || 0;\n }\n\n visibleDate = null;\n\n if (posX) {\n visibleDate = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n }\n }\n\n calculateScaleRange(this);\n\n if (!isHeadless(gantt)) {\n this.$layout.$config.autosize = this.config.autosize;\n var preserveScroll = this.config.preserve_scroll;\n this.config.preserve_scroll = false; // prevent scrolling from layout resize, scroll will be called here later on\n\n this.$layout.resize();\n this.config.preserve_scroll = preserveScroll;\n\n if (this.config.preserve_scroll && pos) {\n // GS-1640: We need pos.y, otherwise part of the timeline won't be rendered if the scrollbar disappeared\n if (posX || pos.y) {\n var new_pos = gantt.getScrollState();\n var new_date = gantt.dateFromPos(new_pos.x);\n\n if (!(+visibleDate == +new_date && new_pos.y == pos.y)) {\n var posX = null;\n var posY = null;\n\n if (visibleDate) {\n var posX = Math.max(gantt.posFromDate(visibleDate) - gantt.config.task_scroll_offset, 0);\n }\n\n if (pos.y) {\n posY = pos.y;\n }\n\n gantt.scrollTo(posX, posY);\n }\n } // GS-1640: We need to reset the scroll position for the grid if the scrollbar disappeared and\n // the grid and timeline have different scrollbars\n\n\n var gridCell = gantt.$ui.getView(\"grid\");\n\n if (gridCell) {\n var attachedScrollbar = gridCell.$config.scrollY;\n var verticalScrollbar = gantt.$ui.getView(attachedScrollbar);\n\n if (verticalScrollbar) {\n var scrollbarNodeVisible = gantt.utils.dom.isChildOf(verticalScrollbar.$view, gantt.$container);\n\n if (!scrollbarNodeVisible) {\n gridCell.scrollTo(undefined, 0);\n }\n }\n }\n }\n } else {\n gantt.refreshData();\n }\n\n this.callEvent(\"onGanttRender\", []);\n }; //TODO: add layout.resize method that wouldn't trigger data repaint\n\n\n gantt.setSizes = gantt.render;\n\n gantt.getTaskRowNode = function (id) {\n var els = this.$grid_data.childNodes;\n var attribute = this.config.task_attribute;\n\n for (var i = 0; i < els.length; i++) {\n if (els[i].getAttribute) {\n var value = els[i].getAttribute(attribute);\n if (value == id) return els[i];\n }\n }\n\n return null;\n };\n\n gantt.changeLightboxType = function (type) {\n if (this.getLightboxType() == type) return true;\n\n gantt._silent_redraw_lightbox(type);\n };\n\n gantt._get_link_type = function (from_start, to_start) {\n var type = null;\n\n if (from_start && to_start) {\n type = gantt.config.links.start_to_start;\n } else if (!from_start && to_start) {\n type = gantt.config.links.finish_to_start;\n } else if (!from_start && !to_start) {\n type = gantt.config.links.finish_to_finish;\n } else if (from_start && !to_start) {\n type = gantt.config.links.start_to_finish;\n }\n\n return type;\n };\n\n gantt.isLinkAllowed = function (from, to, from_start, to_start) {\n var link = null;\n\n if (_typeof(from) == \"object\") {\n link = from;\n } else {\n link = {\n source: from,\n target: to,\n type: this._get_link_type(from_start, to_start)\n };\n }\n\n if (!link) return false;\n if (!(link.source && link.target && link.type)) return false;\n if (link.source == link.target) return false;\n var res = true; //any custom rules\n\n if (this.checkEvent(\"onLinkValidation\")) res = this.callEvent(\"onLinkValidation\", [link]);\n return res;\n };\n\n gantt._correct_dst_change = function (date, prevOffset, step, unit) {\n var time_unit = helpers.getSecondsInUnit(unit) * step;\n\n if (time_unit > 60 * 60 && time_unit < 60 * 60 * 24) {\n //correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n var offsetChanged = date.getTimezoneOffset() - prevOffset;\n\n if (offsetChanged) {\n date = gantt.date.add(date, offsetChanged, \"minute\");\n }\n }\n\n return date;\n };\n\n gantt.isSplitTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isSplitTask. Task object was expected\");\n return this.$data.tasksStore._isSplitItem(task);\n };\n\n gantt._is_icon_open_click = function (e) {\n if (!e) return false;\n var target = e.target || e.srcElement;\n if (!(target && target.className)) return false;\n var className = domHelpers.getClassName(target);\n if (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1)) return true;\n return false;\n };\n};","/*\r\n reuse results of functions that can be recalculated during rendering\r\n greatly increases the rendering speed when critical path enabled\r\n Sample - 94_dev/critical_path.html\r\n\r\n */\nmodule.exports = function (gantt) {\n gantt._cached_functions = {\n cache: {},\n mode: false,\n critical_path_mode: false,\n wrap_methods: function wrap_methods(methods, object) {\n if (object._prefetch_originals) {\n for (var i in object._prefetch_originals) {\n object[i] = object._prefetch_originals[i];\n }\n }\n\n object._prefetch_originals = {};\n\n for (var i = 0; i < methods.length; i++) {\n this.prefetch(methods[i], object);\n }\n },\n prefetch: function prefetch(methodname, host) {\n var original = host[methodname];\n\n if (original) {\n var optimizer = this;\n host._prefetch_originals[methodname] = original;\n\n host[methodname] = function get_prefetched_value() {\n var argumentsArray = new Array(arguments.length);\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n argumentsArray[i] = arguments[i];\n }\n\n if (optimizer.active) {\n var args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\n\n if (!optimizer.cache[methodname]) {\n optimizer.cache[methodname] = {};\n }\n\n var cached_values = optimizer.cache[methodname];\n\n if (optimizer.has_cached_value(cached_values, args)) {\n return optimizer.get_cached_value(cached_values, args);\n } else {\n var value = original.apply(this, argumentsArray);\n optimizer.cache_value(cached_values, args, value);\n return value;\n }\n }\n\n return original.apply(this, argumentsArray);\n };\n }\n\n return original;\n },\n cache_value: function cache_value(cache, arguments_hash, value) {\n if (this.is_date(value)) value = new Date(value);\n cache[arguments_hash] = value;\n },\n has_cached_value: function has_cached_value(cache, arguments_hash) {\n return cache.hasOwnProperty(arguments_hash);\n },\n get_cached_value: function get_cached_value(cache, arguments_hash) {\n var data = cache[arguments_hash]; //for cached dates - return copy\n\n if (this.is_date(data)) {\n data = new Date(data);\n }\n\n return data;\n },\n is_date: function is_date(value) {\n return value && value.getUTCDate;\n },\n get_arguments_hash: function get_arguments_hash(args) {\n var values = [];\n\n for (var i = 0; i < args.length; i++) {\n values.push(this.stringify_argument(args[i]));\n }\n\n return \"(\" + values.join(\";\") + \")\";\n },\n stringify_argument: function stringify_argument(value) {\n //expecting task or link, or any other data entries, dates and primitive values\n var ret = \"\";\n\n if (value.id) {\n ret = value.id;\n } else if (this.is_date(value)) {\n ret = value.valueOf();\n } else {\n ret = value;\n }\n\n return ret + \"\";\n },\n activate: function activate() {\n this.clear();\n this.active = true;\n },\n deactivate: function deactivate() {\n this.clear();\n this.active = false;\n },\n clear: function clear() {\n this.cache = {};\n },\n setup: function setup(gantt) {\n var override_gantt = [];\n var gantt_methods = ['_isProjectEnd', '_getProjectEnd', '_getSlack'];\n\n if (this.mode == 'auto') {\n if (gantt.config.highlight_critical_path) {\n override_gantt = gantt_methods;\n }\n } else if (this.mode === true) {\n override_gantt = gantt_methods;\n }\n\n this.wrap_methods(override_gantt, gantt);\n },\n update_if_changed: function update_if_changed(gantt) {\n var changed = this.critical_path_mode != gantt.config.highlight_critical_path || this.mode !== gantt.config.optimize_render;\n\n if (changed) {\n this.critical_path_mode = gantt.config.highlight_critical_path;\n this.mode = gantt.config.optimize_render;\n this.setup(gantt);\n }\n }\n };\n\n function activate() {\n gantt._cached_functions.update_if_changed(gantt);\n\n if (!gantt._cached_functions.active) {\n gantt._cached_functions.activate();\n }\n\n return true;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", activate);\n gantt.attachEvent(\"onBeforeDataRender\", activate);\n gantt.attachEvent(\"onBeforeSmartRender\", function () {\n activate();\n });\n gantt.attachEvent(\"onBeforeParse\", activate);\n gantt.attachEvent(\"onDataRender\", function () {\n gantt._cached_functions.deactivate();\n });\n var deactivTimeout = null;\n gantt.attachEvent(\"onSmartRender\", function () {\n if (deactivTimeout) clearTimeout(deactivTimeout);\n deactivTimeout = setTimeout(function () {\n gantt._cached_functions.deactivate();\n }, 1000);\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n gantt._cached_functions.update_if_changed(gantt);\n\n return true;\n });\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (gantt) {\n gantt.getTaskType = function (type) {\n var checkType = type;\n\n if (type && _typeof(type) == \"object\") {\n checkType = type.type;\n }\n\n for (var i in this.config.types) {\n if (this.config.types[i] == checkType) {\n return checkType;\n }\n }\n\n return gantt.config.types.task;\n };\n};","// all builds except for evaluation version get this mockup\r\n// the evaluation build gets actual codes\r\nexport default () => {};","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function (gantt) {\n gantt.isUnscheduledTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isUnscheduledTask. Task object was expected\");\n return !!task.unscheduled || !task.start_date;\n };\n\n gantt._isAllowedUnscheduledTask = function (task) {\n return !!(task.unscheduled && gantt.config.show_unscheduled);\n };\n\n gantt._isTaskInTimelineLimits = function (task) {\n var taskStart = task.start_date ? task.start_date.valueOf() : null;\n var taskEnd = task.end_date ? task.end_date.valueOf() : null;\n return !!(taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf());\n };\n\n gantt.isTaskVisible = function (id) {\n if (!this.isTaskExists(id)) {\n return false;\n }\n\n var task = this.getTask(id);\n\n if (!(this._isAllowedUnscheduledTask(task) || this._isTaskInTimelineLimits(task))) {\n return false;\n }\n\n return !!(this.getGlobalTaskIndex(id) >= 0);\n };\n\n gantt._getProjectEnd = function () {\n if (gantt.config.project_end) {\n return gantt.config.project_end;\n } else {\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.end_date > +b.end_date ? 1 : -1;\n });\n return tasks.length ? tasks[tasks.length - 1].end_date : null;\n }\n };\n\n gantt._getProjectStart = function () {\n if (gantt.config.project_start) {\n return gantt.config.project_start;\n } // use timeline start if project start is not specified\n\n\n if (gantt.config.start_date) {\n return gantt.config.start_date;\n }\n\n if (gantt.getState().min_date) {\n return gantt.getState().min_date;\n } // earliest task start if neither project start nor timeline are specified\n\n\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.start_date > +b.start_date ? 1 : -1;\n });\n return tasks.length ? tasks[0].start_date : null;\n };\n\n var getDefaultTaskDate = function getDefaultTaskDate(item, parent_id) {\n var parentExists = parent_id && parent_id != gantt.config.root_id && gantt.isTaskExists(parent_id);\n var parent = parentExists ? gantt.getTask(parent_id) : false,\n startDate = null;\n\n if (parent) {\n if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: parent.end_date,\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n startDate = parent.start_date;\n }\n } else if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: gantt._getProjectEnd(),\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n var first = gantt.getTaskByIndex(0);\n var minDate = gantt.config.start_date || gantt.getState().min_date;\n\n if (first) {\n if (first.start_date) {\n startDate = first.start_date;\n } else if (first.end_date) {\n startDate = gantt.calculateEndDate({\n start_date: first.end_date,\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n startDate = minDate;\n }\n } else {\n startDate = minDate;\n }\n }\n\n gantt.assert(startDate, \"Invalid dates\");\n return new Date(startDate);\n };\n\n gantt._set_default_task_timing = function (task) {\n task.start_date = task.start_date || getDefaultTaskDate(task, gantt.getParent(task));\n task.duration = task.duration || gantt.config.duration_step;\n task.end_date = task.end_date || gantt.calculateEndDate(task);\n };\n\n gantt.createTask = function (item, parent, index) {\n item = item || {};\n if (!gantt.defined(item.id)) item.id = gantt.uid();\n\n if (!item.start_date) {\n item.start_date = getDefaultTaskDate(item, parent);\n }\n\n if (item.text === undefined) {\n item.text = gantt.locale.labels.new_task;\n }\n\n if (item.duration === undefined) {\n item.duration = 1;\n }\n\n if (this.isTaskExists(parent)) {\n this.setParent(item, parent, true);\n var parentObj = this.getTask(parent);\n parentObj.$open = true;\n }\n\n if (!this.callEvent(\"onTaskCreated\", [item])) {\n return null;\n }\n\n if (this.config.details_on_create) {\n //GS-761: assert unique ID\n if (gantt.isTaskExists(item.id)) {\n var task = gantt.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n this.$data.tasksStore.updateItem(item.id, item);\n }\n } else {\n item.$new = true;\n this.silent(function () {\n gantt.$data.tasksStore.addItem(item, index);\n });\n }\n\n this.selectTask(item.id);\n this.refreshData();\n this.showLightbox(item.id);\n } else {\n if (this.addTask(item, parent, index)) {\n this.showTask(item.id);\n this.selectTask(item.id);\n }\n }\n\n return item.id;\n };\n\n gantt._update_flags = function (oldid, newid) {\n // TODO: need a proper way to update all possible flags\n var store = gantt.$data.tasksStore;\n\n if (oldid === undefined) {\n this._lightbox_id = null;\n store.silent(function () {\n store.unselect();\n }); // GS-1522. If we have multiselect, unselect all previously selected tasks\n\n if (this.getSelectedTasks) {\n this._multiselect.reset();\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag) {\n this._tasks_dnd.drag.id = null;\n }\n } else {\n if (this._lightbox_id == oldid) this._lightbox_id = newid; // TODO: probably can be removed\n\n if (store.getSelectedId() == oldid) {\n store.silent(function () {\n store.unselect(oldid);\n store.select(newid);\n });\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n this._tasks_dnd.drag.id = newid;\n }\n }\n };\n\n var getTaskTimingMode = function getTaskTimingMode(task, force) {\n var task_type = gantt.getTaskType(task.type);\n var state = {\n type: task_type,\n $no_start: false,\n $no_end: false\n };\n\n if (!force && task_type == task.$rendered_type) {\n state.$no_start = task.$no_start;\n state.$no_end = task.$no_end;\n return state;\n }\n\n if (task_type == gantt.config.types.project) {\n //project duration is always defined by children duration\n state.$no_end = state.$no_start = true;\n } else if (task_type != gantt.config.types.milestone) {\n //tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n state.$no_end = !(task.end_date || task.duration);\n state.$no_start = !task.start_date;\n\n if (gantt._isAllowedUnscheduledTask(task)) {\n state.$no_end = state.$no_start = false;\n }\n }\n\n return state;\n };\n\n gantt._init_task_timing = function (task) {\n var task_mode = getTaskTimingMode(task, true);\n var dirty = task.$rendered_type != task_mode.type;\n var task_type = task_mode.type;\n\n if (dirty) {\n task.$no_start = task_mode.$no_start;\n task.$no_end = task_mode.$no_end;\n task.$rendered_type = task_mode.type;\n }\n\n if (dirty && task_type != this.config.types.milestone) {\n if (task_type == this.config.types.project) {\n //project duration is always defined by children duration\n this._set_default_task_timing(task);\n\n task.$calculate_duration = false; // do not recalculate duration below\n }\n }\n\n if (task_type == this.config.types.milestone) {\n task.end_date = task.start_date;\n }\n\n if (task.start_date && task.end_date && task.$calculate_duration !== false) {\n task.duration = this.calculateDuration(task);\n }\n\n if (!task.$calculate_duration) {\n task.$calculate_duration = true;\n }\n\n if (!task.end_date) {\n task.end_date = task.start_date;\n }\n\n task.duration = task.duration || 0; // GS-1145. We should let tasks to have 0 duration if user wants it\n\n if (this.config.min_duration === 0 && task.duration === 0) {\n task.$no_end = false;\n } // work calendar of task has changed\n\n\n var effectiveCalendar = this.getTaskCalendar(task);\n\n if (task.$effective_calendar && task.$effective_calendar !== effectiveCalendar.id) {\n updateTaskTiming(task);\n\n if (this.config.inherit_calendar && this.isSummaryTask(task)) {\n this.eachTask(function (child) {\n updateTaskTiming(child);\n }, task.id);\n }\n }\n\n task.$effective_calendar = effectiveCalendar.id;\n };\n\n function updateTaskTiming(task) {\n task.$effective_calendar = gantt.getTaskCalendar(task).id;\n task.start_date = gantt.getClosestWorkTime({\n dir: \"future\",\n date: task.start_date,\n unit: gantt.config.duration_unit,\n task: task\n });\n task.end_date = gantt.calculateEndDate(task);\n }\n\n gantt.isSummaryTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isSummaryTask. Task object was expected\");\n var mode = getTaskTimingMode(task);\n return !!(mode.$no_end || mode.$no_start);\n }; // downward calculation of project duration\n\n\n gantt.resetProjectDates = function (task) {\n var taskMode = getTaskTimingMode(task);\n\n if (taskMode.$no_end || taskMode.$no_start) {\n var info = getSubtaskInfo(task.id);\n assignProjectDates.call(this, task, taskMode, info.start_date, info.end_date);\n task.$rollup = info.rollup;\n }\n };\n\n function assignProjectDates(task, taskTiming, from, to) {\n if (taskTiming.$no_start) {\n if (from) {\n task.start_date = new Date(from);\n } else {\n task.start_date = getDefaultTaskDate(task, this.getParent(task));\n }\n }\n\n if (taskTiming.$no_end) {\n if (to) {\n task.end_date = new Date(to);\n } else {\n task.end_date = this.calculateEndDate({\n start_date: task.start_date,\n duration: this.config.duration_step,\n task: task\n });\n }\n }\n\n if (taskTiming.$no_start || taskTiming.$no_end) {\n this._init_task_timing(task);\n }\n }\n\n gantt.getSubtaskDuration = function (taskId) {\n var res = 0,\n root = taskId !== undefined ? taskId : gantt.config.root_id;\n this.eachTask(function (child) {\n if (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child)) return;\n res += child.duration;\n }, root);\n return res;\n };\n\n function getSubtaskInfo(taskId) {\n var min = null,\n max = null,\n root = taskId !== undefined ? taskId : gantt.config.root_id,\n rollup = [];\n gantt.eachTask(function (child) {\n if (gantt.getTaskType(child.type) == gantt.config.types.project || gantt.isUnscheduledTask(child)) return;\n\n if (child.rollup) {\n rollup.push(child.id);\n }\n\n if (child.start_date && !child.$no_start && (!min || min > child.start_date.valueOf())) min = child.start_date.valueOf();\n if (child.end_date && !child.$no_end && (!max || max < child.end_date.valueOf())) max = child.end_date.valueOf();\n }, root);\n return {\n start_date: min ? new Date(min) : null,\n end_date: max ? new Date(max) : null,\n rollup: rollup\n };\n }\n\n gantt.getSubtaskDates = function (task_id) {\n var info = getSubtaskInfo(task_id);\n return {\n start_date: info.start_date,\n end_date: info.end_date\n };\n }; // upward calculation of project duration\n\n\n gantt._update_parents = function (taskId, silent, updateAll) {\n if (!taskId) return;\n var task = this.getTask(taskId);\n\n if (task.rollup) {\n updateAll = true;\n }\n\n var pid = this.getParent(task);\n var taskTiming = getTaskTimingMode(task);\n var has_changed = true; // GS-761 the dates check is necessary for adding empty tasks: gantt.addTask({id:\"2\"})\n\n if (updateAll || task.start_date && task.end_date && (taskTiming.$no_start || taskTiming.$no_end)) {\n var oldStart = task.start_date.valueOf(),\n oldEnd = task.end_date.valueOf();\n gantt.resetProjectDates(task); // not refresh parent projects if dates hasn't changed\n\n if (!updateAll && oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\n has_changed = false;\n }\n\n if (has_changed && !silent) {\n this.refreshTask(task.id, true);\n }\n }\n\n if (has_changed && pid && this.isTaskExists(pid)) {\n this._update_parents(pid, silent, updateAll);\n }\n };\n\n gantt.roundDate = function (config) {\n var scale = gantt.getScale();\n\n if (helpers.isDate(config)) {\n config = {\n date: config,\n unit: scale ? scale.unit : gantt.config.duration_unit,\n step: scale ? scale.step : gantt.config.duration_step\n };\n }\n\n var date = config.date,\n steps = config.step,\n unit = config.unit;\n\n if (!scale) {\n return date;\n }\n\n var upper, lower, colIndex;\n\n if (unit == scale.unit && steps == scale.step && +date >= +scale.min_date && +date <= +scale.max_date) {\n //find date in time scale config\n colIndex = Math.floor(gantt.columnIndexByDate(date));\n\n if (!scale.trace_x[colIndex]) {\n colIndex -= 1; // end of time scale\n\n if (scale.rtl) {\n colIndex = 0;\n }\n }\n\n lower = new Date(scale.trace_x[colIndex]);\n upper = gantt.date.add(lower, steps, unit);\n } else {\n colIndex = Math.floor(gantt.columnIndexByDate(date));\n upper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\n\n if (scale.trace_x[colIndex]) {\n upper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]); // end of time scale\n }\n\n while (+upper < +date) {\n upper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\n var tzOffset = upper.getTimezoneOffset();\n upper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\n if (gantt.date[unit + '_start']) upper = gantt.date[unit + '_start'](upper);\n }\n\n lower = gantt.date.add(upper, -1 * steps, unit);\n }\n\n if (config.dir && config.dir == 'future') return upper;\n if (config.dir && config.dir == 'past') return lower;\n\n if (Math.abs(date - lower) < Math.abs(upper - date)) {\n return lower;\n } else {\n return upper;\n }\n };\n\n gantt.correctTaskWorkTime = function (task) {\n if (gantt.config.work_time && gantt.config.correct_work_time) {\n if (!this.isWorkTime(task.start_date, undefined, task)) {\n task.start_date = this.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n task.end_date = this.calculateEndDate(task);\n } else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\n task.end_date = this.calculateEndDate(task);\n }\n }\n };\n\n gantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\n gantt._init_task_timing(task);\n\n return true;\n });\n gantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\n gantt._init_task_timing(task);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskMove\", function (id, parent, tindex) {\n gantt._init_task_timing(gantt.getTask(id));\n\n return true;\n });\n};","// TODO: rework public api for date methods\nvar utils = require(\"../../utils/utils\");\n\nvar createWorkTimeFacade = function createWorkTimeFacade(calendarManager, timeCalculator) {\n return {\n getWorkHours: function getWorkHours(date) {\n return timeCalculator.getWorkHours(date);\n },\n setWorkTime: function setWorkTime(config) {\n return timeCalculator.setWorkTime(config);\n },\n unsetWorkTime: function unsetWorkTime(config) {\n timeCalculator.unsetWorkTime(config);\n },\n isWorkTime: function isWorkTime(date, unit, task) {\n return timeCalculator.isWorkTime(date, unit, task);\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n return timeCalculator.getClosestWorkTime(config);\n },\n calculateDuration: function calculateDuration(start_date, end_date, task) {\n return timeCalculator.calculateDuration(start_date, end_date, task);\n },\n _hasDuration: function _hasDuration(start_date, end_date, task) {\n return timeCalculator.hasDuration(start_date, end_date, task);\n },\n calculateEndDate: function calculateEndDate(start, duration, unit, task) {\n return timeCalculator.calculateEndDate(start, duration, unit, task);\n },\n mergeCalendars: utils.bind(calendarManager.mergeCalendars, calendarManager),\n createCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\n addCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\n getCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\n getCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\n getResourceCalendar: utils.bind(calendarManager.getResourceCalendar, calendarManager),\n getTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\n deleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\n };\n};\n\nmodule.exports = {\n create: createWorkTimeFacade\n};","function CalendarDisabledTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n}\n\nCalendarDisabledTimeStrategy.prototype = {\n getWorkHours: function getWorkHours() {\n return [0, 24];\n },\n setWorkTime: function setWorkTime() {\n return true;\n },\n unsetWorkTime: function unsetWorkTime() {\n return true;\n },\n isWorkTime: function isWorkTime() {\n return true;\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n var config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return config.date;\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n return this._calculateDuration(from, to, unit, step);\n },\n _calculateDuration: function _calculateDuration(start, end, unit, step) {\n var dateHelper = this.$gantt.date;\n var fixedUnits = {\n \"week\": 1000 * 60 * 60 * 24 * 7,\n \"day\": 1000 * 60 * 60 * 24,\n \"hour\": 1000 * 60 * 60,\n \"minute\": 1000 * 60\n };\n var res = 0;\n\n if (fixedUnits[unit]) {\n res = Math.round((end - start) / (step * fixedUnits[unit]));\n } else {\n var from = new Date(start),\n to = new Date(end);\n\n while (from.valueOf() < to.valueOf()) {\n res += 1;\n from = dateHelper.add(from, step, unit);\n }\n\n if (from.valueOf() != end.valueOf()) {\n res += (to - from) / (dateHelper.add(from, step, unit) - from);\n }\n }\n\n return Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit;\n\n if (!unit) {\n return false;\n }\n\n from = new Date(from);\n to = new Date(to);\n return from.valueOf() < to.valueOf();\n },\n hasWorkTime: function hasWorkTime() {\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarDisabledTimeStrategy)) {\n return false;\n }\n\n return true;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var start = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n return this.$gantt.date.add(start, step * duration, unit);\n }\n};\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\n NoWorkTimeCalendar = require(\"./strategy/no_work_time\");\n\nfunction TimeCalculator(calendarManager) {\n this.$gantt = calendarManager.$gantt;\n this.argumentsHelper = createArgumentsHelper(this.$gantt);\n this.calendarManager = calendarManager;\n this.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\n}\n\nTimeCalculator.prototype = {\n _getCalendar: function _getCalendar(config) {\n var calendar;\n\n if (!this.$gantt.config.work_time) {\n calendar = this.$disabledCalendar;\n } else {\n var manager = this.calendarManager;\n\n if (config.task) {\n calendar = manager.getTaskCalendar(config.task);\n } else if (config.id) {\n calendar = manager.getTaskCalendar(config);\n } else if (config.calendar) {\n calendar = config.calendar;\n }\n\n if (!calendar) {\n calendar = manager.getTaskCalendar();\n }\n }\n\n return calendar;\n },\n getWorkHours: function getWorkHours(config) {\n config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.getWorkHours(config.date);\n },\n setWorkTime: function setWorkTime(config, calendar) {\n config = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\n if (!calendar) calendar = this.calendarManager.getCalendar(); // Global\n\n return calendar.setWorkTime(config);\n },\n unsetWorkTime: function unsetWorkTime(config, calendar) {\n config = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\n if (!calendar) calendar = this.calendarManager.getCalendar(); // Global\n\n return calendar.unsetWorkTime(config);\n },\n isWorkTime: function isWorkTime(date, unit, task, calendar) {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n calendar = this._getCalendar(config);\n return calendar.isWorkTime(config);\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.getClosestWorkTime(config);\n },\n calculateDuration: function calculateDuration() {\n // start_date_date, end_date, task\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.calculateDuration(config);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.hasDuration(config);\n },\n calculateEndDate: function calculateEndDate(config) {\n // start_date, duration, unit, task\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.calculateEndDate(config);\n }\n};\nmodule.exports = TimeCalculator;","module.exports = function () {\n function getResourcesCalendarKey(resourceAssignments) {\n return resourceAssignments.map(function (res) {\n if (res && res.resource_id) {\n return res.resource_id;\n } else {\n return res;\n }\n }).sort().join(\"-\");\n }\n\n var dynamicCalendars = {};\n\n function mergeResourceCalendars(resourceAssignments, manager) {\n return manager.mergeCalendars(resourceAssignments.map(function (assignment) {\n var resourceId = assignment && assignment.resource_id ? assignment.resource_id : assignment;\n return manager.getResourceCalendar(resourceId);\n }));\n }\n\n function getCalendarIdFromMultipleResources(resourceAssignments, manager) {\n var key = getResourcesCalendarKey(resourceAssignments);\n\n if (!resourceAssignments.length) {\n return null;\n } else if (resourceAssignments.length === 1) {\n return manager.getResourceCalendar(key).id;\n } else if (dynamicCalendars[key]) {\n return dynamicCalendars[key].id;\n } else {\n var tempCalendar = mergeResourceCalendars(resourceAssignments, manager);\n dynamicCalendars[key] = tempCalendar;\n return manager.addCalendar(tempCalendar);\n }\n }\n\n return {\n getCalendarIdFromMultipleResources: getCalendarIdFromMultipleResources\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = {\n isLegacyResourceCalendarFormat: function isLegacyResourceCalendarFormat(resourceCalendarsProperty) {\n // modern format:\n //gantt.config.resource_calendars = {\n //\tresourceId: calendarId,\n //\tresourceId: calendarId,\n //\tresourceId: calendarId\n //\t};\n // legacy format:\n // gantt.config.resource_calendars = {\n //\t\"resourceProperty\": {\n //\t\tresourceId: calendarId,\n //\t\tresourceId: calendarId,\n //\t\tresourceId: calendarId\n //\t\t}\n //\t};\n if (!resourceCalendarsProperty) {\n return false;\n }\n\n for (var i in resourceCalendarsProperty) {\n if (resourceCalendarsProperty[i] && _typeof(resourceCalendarsProperty[i]) === \"object\") {\n return true;\n }\n }\n\n return false;\n },\n getResourceProperty: function getResourceProperty(config) {\n var resourceCalendarsConfig = config.resource_calendars;\n var propertyName = config.resource_property;\n\n if (this.isLegacyResourceCalendarFormat(resourceCalendarsConfig)) {\n for (var i in config) {\n propertyName = i;\n break;\n }\n }\n\n return propertyName;\n },\n getCalendarIdFromLegacyConfig: function getCalendarIdFromLegacyConfig(task, config) {\n if (config) {\n for (var field in config) {\n var resource = config[field];\n\n if (task[field]) {\n var calendarId = resource[task[field]];\n\n if (calendarId) {\n return calendarId;\n }\n }\n }\n }\n\n return null;\n }\n};","export class DateDurationCache {\r\n\tprivate _cache: any;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\t_getCacheObject(startDate: Date, unit: string, step:number){\r\n\t\tconst cache = this._cache;\r\n\t\tif (!cache[unit]) {\r\n\t\t\tcache[unit] = [];\r\n\t\t}\r\n\t\tlet unitCache = cache[unit];\r\n\t\tif(!unitCache) {\r\n\t\t\tunitCache = cache[unit] = {};\r\n\t\t}\r\n\r\n\t\tlet stepCache = unitCache[step];\r\n\t\tif(!stepCache) {\r\n\t\t\tstepCache = unitCache[step] = {};\r\n\t\t}\r\n\r\n\t\tconst year = startDate.getFullYear();\r\n\t\tlet yearCache = stepCache[year];\r\n\t\tif(!yearCache){\r\n\t\t\tyearCache = stepCache[year] = {durations: {}, endDates: {}};\r\n\t\t}\r\n\r\n\t\treturn yearCache;\r\n\t}\r\n\t_endDateCacheKey(startDate: number, duration: number){\r\n\t\treturn String(startDate) + \"-\" + String(duration);\r\n\t}\r\n\t_durationCacheKey(startDate: number, endDate: number){\r\n\t\treturn String(startDate) + \"-\" + String(endDate);\r\n\t}\r\n\tgetEndDate(startDate: Date, duration: number, unit: string, step: number, compute: () => Date): number|null{\r\n\t\tconst cache = this._getCacheObject(startDate, unit, step);\r\n\r\n\t\tconst startDateTimestamp = startDate.valueOf();\r\n\t\tconst key = this._endDateCacheKey(startDateTimestamp, duration);\r\n\t\tlet endDate;\r\n\t\tif(cache.endDates[key] === undefined){\r\n\t\t\tconst result = compute();\r\n\t\t\tconst resultTimestamp = result.valueOf();\r\n\t\t\tcache.endDates[key] = resultTimestamp;\r\n\t\t\tcache.durations[this._durationCacheKey(startDateTimestamp, resultTimestamp)] = duration;\r\n\t\t\tendDate = result;\r\n\t\t}else{\r\n\t\t\tendDate = new Date(cache.endDates[key]);\r\n\t\t}\r\n\r\n\t\treturn endDate;\r\n\t}\r\n\r\n\tgetDuration(startDate: Date, endDate: Date, unit: string, step: number, compute: () => number): number|null{\r\n\t\tconst cache = this._getCacheObject(startDate, unit, step);\r\n\r\n\t\tconst startDateTimestamp = startDate.valueOf();\r\n\t\tconst endDateTimestamp = endDate.valueOf();\r\n\t\tconst key = this._durationCacheKey(startDateTimestamp, endDateTimestamp);\r\n\t\tlet duration;\r\n\t\tif(cache.durations[key] === undefined){\r\n\t\t\tconst result = compute();\r\n\t\t\tcache.durations[key] = result.valueOf();\r\n\r\n\t\t\t// can't populate end date due to logic of end date calculation, current unit tests capture it\r\n\t\t\t// cache.endDates[this._endDateCacheKey(startDateTimestamp, result)] = endDateTimestamp;\r\n\t\t\tduration = result;\r\n\t\t}else{\r\n\t\t\tduration = cache.durations[key];\r\n\t\t}\r\n\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tclear(): void{\r\n\t\tthis._cache = {};\r\n\t}\r\n}","\r\n\r\nexport class LargerUnitsCache {\r\n\tprivate _weekCache: Map<number, number>;\r\n\tprivate _monthCache: Map<number, number>;\r\n\tprivate _calendar: any;\r\n\tconstructor(calendar) {\r\n\t\tthis.clear();\r\n\t\tthis._calendar = calendar;\r\n\t}\r\n\r\n\tgetMinutesPerWeek = (weekStart: Date) => {\r\n\t\tconst key = weekStart.valueOf();\r\n\r\n\t\tif(this._weekCache.has(key)){\r\n\t\t\treturn this._weekCache.get(key);\r\n\t\t}\r\n\r\n\t\tconst calendar = this._calendar;\r\n\t\tconst gantt = this._calendar.$gantt;\r\n\r\n\t\tlet minutesPerWeek = 0;\r\n\t\tlet start = gantt.date.week_start(new Date(weekStart));\r\n\t\tfor(let i = 0; i < 7; i++){\r\n\t\t\tminutesPerWeek += calendar.getHoursPerDay(start) * 60;\r\n\t\t\tstart = gantt.date.add(start, 1, \"day\");\r\n\t\t}\r\n\r\n\t\tthis._weekCache.set(key, minutesPerWeek);\r\n\t\treturn minutesPerWeek;\r\n\t}\r\n\r\n\tgetMinutesPerMonth = (monthStart: Date) => {\r\n\t\tconst key = monthStart.valueOf();\r\n\r\n\t\tif(this._monthCache.has(key)){\r\n\t\t\treturn this._monthCache.get(key);\r\n\t\t}\r\n\r\n\t\tconst calendar = this._calendar;\r\n\t\tconst gantt = this._calendar.$gantt;\r\n\r\n\t\tlet minutesPerMonth = 0;\r\n\t\tlet start = gantt.date.week_start(new Date(monthStart));\r\n\t\tconst nextMonth = gantt.date.add(start, 1, \"month\").valueOf();\r\n\t\twhile(start.valueOf() < nextMonth){\r\n\t\t\tminutesPerMonth += calendar.getHoursPerDay(start) * 60;\r\n\t\t\tstart = gantt.date.add(start, 1, \"day\");\r\n\t\t}\r\n\r\n\t\tthis._monthCache.set(key, minutesPerMonth);\r\n\t\treturn minutesPerMonth;\r\n\t}\r\n\r\n\tclear = (): void => {\r\n\t\tthis._weekCache = new Map<number, number>();\r\n\t\tthis._monthCache = new Map<number, number>();\r\n\t}\r\n}","import { IWorkUnitCache } from \"./workunit_cache_interface\";\r\n\r\nexport class WorkUnitsObjectCache implements IWorkUnitCache {\r\n\tprivate _cache: any;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\tgetItem(unit: string, timestamp: string, value: Date): number|boolean {\r\n\t\tconst cache = this._cache;\r\n\t\tif (cache && cache[unit]) {\r\n\t\t\tconst units = cache[unit];\r\n\t\t\tif(units === undefined){\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tconst subCache = units[value.getFullYear()];\r\n\t\t\tif (subCache && subCache[timestamp] !== undefined) {\r\n\t\t\t\treturn subCache[timestamp];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\tsetItem(unit: string, timestamp: string, value: boolean, rawValue: Date): void {\r\n\t\tif (!unit || !timestamp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cache = this._cache;\r\n\r\n\t\tif (!cache) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!cache[unit]) {\r\n\t\t\tcache[unit] = [];\r\n\t\t}\r\n\t\tconst unitCache = cache[unit];\r\n\r\n\t\tconst year = rawValue.getFullYear();\r\n\t\tlet yearCache = unitCache[year];\r\n\t\tif(!yearCache){\r\n\t\t\tyearCache = unitCache[year] = {};\r\n\t\t}\r\n\t\tyearCache[timestamp] = value;\r\n\t}\r\n\tclear(): void{\r\n\t\tthis._cache = {};\r\n\t}\r\n}","\r\n\r\nimport { IWorkUnitCache } from \"./workunit_cache_interface\";\r\n\r\nexport class WorkUnitsMapCache implements IWorkUnitCache {\r\n\tprivate _cache: Map<string, Array<Map<string, boolean>>>;\r\n\tconstructor() {\r\n\t\tthis.clear();\r\n\t}\r\n\r\n\tgetItem(unit: string, timestamp: string, value: Date): number|boolean {\r\n\t\tif (this._cache.has(unit)) {\r\n\t\t\tconst unitCache = this._cache.get(unit);\r\n\r\n\t\t\tconst subCache = unitCache[value.getFullYear()];\r\n\t\t\tif (subCache && subCache.has(timestamp)) {\r\n\t\t\t\treturn subCache.get(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn -1;\r\n\t}\r\n\tsetItem(unit: string, timestamp: string, value: boolean, rawValue: Date): void {\r\n\t\tif (!unit || !timestamp) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cache = this._cache;\r\n\t\tconst year = rawValue.getFullYear();\r\n\r\n\t\tlet unitCache;\r\n\t\tif (!cache.has(unit)) {\r\n\t\t\tunitCache = [];\r\n\t\t\tcache.set(unit, unitCache);\r\n\t\t} else {\r\n\t\t\tunitCache = cache.get(unit);\r\n\t\t}\r\n\r\n\t\tlet yearCache = unitCache[year];\r\n\t\tif(!yearCache){\r\n\t\t\tyearCache = unitCache[year] = new Map<string, boolean>();\r\n\t\t}\r\n\r\n\r\n\t\tyearCache.set(timestamp, value);\r\n\t}\r\n\tclear(): void{\r\n\t\tthis._cache = new Map<string, Array<Map<string, boolean>>>();\r\n\t}\r\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar createCacheObject = require(\"./work_unit_cache\").createCacheObject;\n\nvar LargerUnitsCache = require(\"./work_unit_cache\").LargerUnitsCache;\n\nvar utils = require(\"../../../utils/utils\");\n\nvar DateDurationCache = require(\"./work_unit_cache/date_duration_cache\").DateDurationCache;\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n this._workingUnitsCache = createCacheObject();\n this._largeUnitsCache = new LargerUnitsCache(this);\n this._dateDurationCache = new DateDurationCache();\n this._worktime = null;\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n}\n\nCalendarWorkTimeStrategy.prototype = {\n units: [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\"],\n _clearCaches: function _clearCaches() {\n this._workingUnitsCache.clear();\n\n this._largeUnitsCache.clear();\n\n this._dateDurationCache.clear();\n },\n // cache previously calculated worktime\n _getUnitOrder: function _getUnitOrder(unit) {\n for (var i = 0, len = this.units.length; i < len; i++) {\n if (this.units[i] == unit) return i;\n }\n },\n _resetTimestampCache: function _resetTimestampCache() {\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n },\n _timestamp: function _timestamp(settings) {\n // minor optimization, store calculated timestamps to reduce computations\n // reset cache when number of keys exceeds large number where key lookup may became more expensive than the recalculation\n if (this._cached_timestamps_count > 1000000) {\n this._resetTimestampCache();\n }\n\n var timestamp = null;\n\n if (settings.day || settings.day === 0) {\n timestamp = settings.day;\n } else if (settings.date) {\n var value = String(settings.date.valueOf());\n\n if (this._cached_timestamps[value]) {\n timestamp = this._cached_timestamps[value];\n } else {\n // store worktime datestamp in utc so it could be recognized in different timezones (e.g. opened locally and sent to the export service in different timezone)\n timestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n this._cached_timestamps[value] = timestamp;\n this._cached_timestamps_count++;\n }\n }\n\n return timestamp;\n },\n _checkIfWorkingUnit: function _checkIfWorkingUnit(date, unit) {\n // GS-596: If unit is larger than day or has a custom logic\n if (!this[\"_is_work_\" + unit]) {\n var from = this.$gantt.date[\"\".concat(unit, \"_start\")](new Date(date));\n var to = this.$gantt.date.add(from, 1, unit);\n return this.hasDuration(from, to);\n }\n\n return this[\"_is_work_\" + unit](date);\n },\n //checkings for particular time units\n //methods for month-year-week can be defined, otherwise always return 'true'\n _is_work_day: function _is_work_day(date) {\n var val = this._getWorkHours(date);\n\n if (Array.isArray(val)) {\n return val.length > 0;\n }\n\n return false;\n },\n _is_work_hour: function _is_work_hour(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var value = date.getHours();\n\n for (var i = 0; i < hours.length; i++) {\n if (value >= hours[i].startHour && value < hours[i].endHour) {\n return true;\n }\n }\n\n return false;\n },\n _getTimeOfDayStamp: function _getTimeOfDayStamp(date, dayEnd) {\n var hours = date.getHours();\n\n if (!date.getHours() && !date.getMinutes() && dayEnd) {\n hours = 24;\n }\n\n return hours * 60 * 60 + date.getMinutes() * 60;\n },\n _is_work_minute: function _is_work_minute(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var checkTime = this._getTimeOfDayStamp(date);\n\n for (var i = 0; i < hours.length; i++) {\n if (checkTime >= hours[i].start && checkTime < hours[i].end) {\n return true;\n }\n }\n\n return false;\n },\n _nextDate: function _nextDate(start, unit, step) {\n return this.$gantt.date.add(start, step, unit);\n },\n _getWorkUnitsBetweenGeneric: function _getWorkUnitsBetweenGeneric(from, to, unit, step) {\n var dateHelper = this.$gantt.date;\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var units = 0;\n var next = null;\n var stepStart, stepEnd; // calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n // and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n // durations must be rounded later\n\n var checkFirst = false;\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n\n if (stepStart.valueOf() != start.valueOf()) {\n checkFirst = true;\n }\n\n var checkLast = false;\n stepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\n if (stepEnd.valueOf() != to.valueOf()) {\n checkLast = true;\n }\n\n var isLastStep = false;\n\n while (start.valueOf() < end.valueOf()) {\n next = this._nextDate(start, unit, step);\n isLastStep = next.valueOf() > end.valueOf();\n\n if (this._isWorkTime(start, unit)) {\n if (checkFirst || checkLast && isLastStep) {\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n stepEnd = dateHelper.add(stepStart, step, unit);\n }\n\n if (checkFirst) {\n checkFirst = false;\n next = this._nextDate(stepStart, unit, step);\n units += (stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else if (checkLast && isLastStep) {\n checkLast = false;\n units += (end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else {\n units++;\n }\n } else {\n var unitOrder = this._getUnitOrder(unit);\n\n var biggerTimeUnit = this.units[unitOrder - 1];\n\n if (biggerTimeUnit && !this._isWorkTime(start, biggerTimeUnit)) {\n next = this._getClosestWorkTimeFuture(start, biggerTimeUnit);\n }\n }\n\n start = next;\n }\n\n return units;\n },\n _getMinutesPerHour: function _getMinutesPerHour(date) {\n var hourStart = this._getTimeOfDayStamp(date);\n\n var hourEnd = this._getTimeOfDayStamp(this._nextDate(date, \"hour\", 1));\n\n if (hourEnd === 0) {\n hourEnd = 24 * 60 * 60;\n }\n\n var worktimes = this._getWorkHours(date);\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (hourStart >= interval.start && hourEnd <= interval.end) {\n return 60; // hour inside a working interval, all hour is a work hour\n } else if (hourStart < interval.end && hourEnd > interval.start) {\n // hour is partially work time\n var duration = Math.min(hourEnd, interval.end) - Math.max(hourStart, interval.start);\n return duration / 60;\n }\n }\n\n return 0;\n },\n _getMinutesPerDay: function _getMinutesPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationMinutes;\n });\n return res;\n },\n getHoursPerDay: function getHoursPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationHours;\n });\n return res;\n },\n _getWorkUnitsForRange: function _getWorkUnitsForRange(from, to, unit, step) {\n var total = 0;\n var start = new Date(from),\n end = new Date(to);\n var getUnitsPerDay;\n\n if (unit == \"minute\") {\n getUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\n } else {\n getUnitsPerDay = utils.bind(this.getHoursPerDay, this);\n }\n\n while (start.valueOf() < end.valueOf()) {\n if (end - start > 1000 * 60 * 60 * 24 * 32 && start.getDate() === 0) {\n var units = this._largeUnitsCache.getMinutesPerMonth(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 1, \"month\");\n continue;\n } else if (end - start > 1000 * 60 * 60 * 24 * 16) {\n var weekStart = this.$gantt.date.week_start(new Date(start));\n\n if (start.valueOf() === weekStart.valueOf()) {\n var units = this._largeUnitsCache.getMinutesPerWeek(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 7, \"day\");\n continue;\n }\n } //\tif (this._isWorkTime(start, \"day\")) {\n\n\n total += getUnitsPerDay(start); //\t}\n\n start = this._nextDate(start, \"day\", 1);\n }\n\n return total / step;\n },\n _getMinutesBetweenSingleDay: function _getMinutesBetweenSingleDay(from, to) {\n var range = this._getIntervalTimestamp(from, to);\n\n var worktimes = this._getWorkHours(from);\n\n var result = 0;\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n result += (minuteTo - minuteFrom) / 60;\n range.start = minuteTo;\n }\n }\n\n return Math.floor(result);\n },\n _getMinutesBetween: function _getMinutesBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return this._getMinutesBetweenSingleDay(from, to);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd);\n\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd);\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return total;\n }\n },\n // optimized method for calculating work units duration of large time spans\n // implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\n _getHoursBetween: function _getHoursBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return Math.round(this._getMinutesBetweenSingleDay(from, to) / 60);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd, unit, step) / 60;\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd, unit, step) / 60;\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return Math.round(total);\n }\n },\n getConfig: function getConfig() {\n return this._worktime;\n },\n _setConfig: function _setConfig(settings) {\n this._worktime = settings;\n\n this._parseSettings();\n\n this._clearCaches();\n },\n _parseSettings: function _parseSettings() {\n var settings = this.getConfig();\n settings.parsed = {\n dates: {},\n hours: null,\n haveCustomWeeks: false,\n customWeeks: {},\n customWeeksRangeStart: null,\n customWeeksRangeEnd: null,\n customWeeksBoundaries: []\n };\n settings.parsed.hours = this._parseHours(settings.hours);\n\n for (var i in settings.dates) {\n settings.parsed.dates[i] = this._parseHours(settings.dates[i]);\n }\n\n if (settings.customWeeks) {\n var minCustomRangeStart = null;\n var maxCustomRangeEnd = null;\n\n for (var i in settings.customWeeks) {\n var customTime = settings.customWeeks[i];\n\n if (customTime.from && customTime.to) {\n var rangeStart = customTime.from;\n var rangeEnd = customTime.to;\n\n if (!minCustomRangeStart || minCustomRangeStart > rangeStart.valueOf()) {\n minCustomRangeStart = rangeStart.valueOf();\n }\n\n if (!maxCustomRangeEnd || maxCustomRangeEnd < rangeEnd.valueOf()) {\n maxCustomRangeEnd = rangeEnd.valueOf();\n }\n\n settings.parsed.customWeeksBoundaries.push({\n from: rangeStart.valueOf(),\n fromReadable: new Date(rangeStart),\n to: rangeEnd.valueOf(),\n toReadable: new Date(rangeEnd),\n name: i\n });\n settings.parsed.haveCustomWeeks = true;\n var currentWeek = settings.parsed.customWeeks[i] = {\n from: customTime.from,\n to: customTime.to,\n hours: this._parseHours(customTime.hours),\n dates: {}\n };\n\n for (var d in customTime.dates) {\n currentWeek.dates[d] = this._parseHours(customTime.dates[d]);\n }\n }\n }\n\n settings.parsed.customWeeksRangeStart = minCustomRangeStart;\n settings.parsed.customWeeksRangeEnd = maxCustomRangeEnd;\n }\n },\n _tryChangeCalendarSettings: function _tryChangeCalendarSettings(payload) {\n var backup = JSON.stringify(this.getConfig());\n payload();\n\n if (!this.hasWorkTime()) {\n //\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n this._setConfig(JSON.parse(backup));\n\n this._clearCaches();\n\n return false;\n }\n\n return true;\n },\n _arraysEqual: function _arraysEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n if (a.length != b.length) return false;\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n },\n _compareSettings: function _compareSettings(mySettings, thatSettings) {\n if (!this._arraysEqual(mySettings.hours, thatSettings.hours)) {\n return false;\n }\n\n var myDays = Object.keys(mySettings.dates);\n var otherDates = Object.keys(thatSettings.dates);\n myDays.sort();\n otherDates.sort();\n\n if (!this._arraysEqual(myDays, otherDates)) {\n return false;\n }\n\n for (var i = 0; i < myDays.length; i++) {\n var timestamp = myDays[i];\n var myHours = mySettings.dates[timestamp];\n var otherHours = mySettings.dates[timestamp]; // day settings not equal\n\n if (myHours !== otherHours && // but still can be two arrays with the equivalent hour settings\n !(Array.isArray(myHours) && Array.isArray(otherHours) && this._arraysEqual(myHours, otherHours))) {\n return false;\n }\n }\n\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarWorkTimeStrategy)) {\n return false;\n }\n\n var mySettings = this.getConfig();\n var thatSettings = calendar.getConfig();\n\n if (!this._compareSettings(mySettings, thatSettings)) {\n return false;\n }\n\n if (mySettings.parsed.haveCustomWeeks && thatSettings.parsed.haveCustomWeeks) {\n if (mySettings.parsed.customWeeksBoundaries.length != thatSettings.parsed.customWeeksBoundaries.length) {\n return false;\n }\n\n for (var i in mySettings.parsed.customWeeks) {\n var myWeek = mySettings.parsed.customWeeks[i];\n var thatWeek = thatSettings.parsed.customWeeks[i];\n\n if (!thatWeek) {\n return false;\n }\n\n if (!this._compareSettings(myWeek, thatWeek)) {\n return false;\n }\n }\n } else if (mySettings.parse.haveCustomWeeks !== thatSettings.parsed.haveCustomWeeks) {\n return false;\n }\n\n return true;\n },\n getWorkHours: function getWorkHours() {\n var config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n return this._getWorkHours(config.date, false);\n },\n _getWorkHours: function _getWorkHours(date, parsed) {\n var calendar = this.getConfig();\n\n if (parsed !== false) {\n calendar = calendar.parsed;\n }\n\n if (!date) {\n return calendar.hours;\n }\n\n var dateValue = this._timestamp({\n date: date\n });\n\n if (calendar.haveCustomWeeks) {\n if (calendar.customWeeksRangeStart <= dateValue && calendar.customWeeksRangeEnd > dateValue) {\n for (var i = 0; i < calendar.customWeeksBoundaries.length; i++) {\n if (calendar.customWeeksBoundaries[i].from <= dateValue && calendar.customWeeksBoundaries[i].to > dateValue) {\n calendar = calendar.customWeeks[calendar.customWeeksBoundaries[i].name];\n break;\n }\n }\n }\n }\n\n var hours = true;\n\n if (calendar.dates[dateValue] !== undefined) {\n hours = calendar.dates[dateValue]; //custom day\n } else if (calendar.dates[date.getDay()] !== undefined) {\n hours = calendar.dates[date.getDay()]; //week day\n }\n\n if (hours === true) {\n return calendar.hours;\n } else if (hours) {\n return hours;\n }\n\n return [];\n },\n _getIntervalTimestamp: function _getIntervalTimestamp(from, to) {\n var res = {\n start: 0,\n end: 0\n };\n res.start = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n var endHours = to.getHours();\n\n if (!endHours && !to.getMinutes() && !to.getSeconds() && from.valueOf() < to.valueOf()) {\n endHours = 24;\n }\n\n res.end = endHours * 60 * 60 + to.getMinutes() * 60 + to.getSeconds();\n return res;\n },\n _parseHours: function _parseHours(hours) {\n if (Array.isArray(hours)) {\n var timestampRanges = []; // worktime as seconds range\n\n hours.forEach(function (hour) {\n if (typeof hour === \"number\") {\n timestampRanges.push(hour * 60 * 60);\n } else if (typeof hour === \"string\") {\n // \"12-13\", or \"12:00-13:00\", or \"12:00:00-13:00:00\"\n hour.split(\"-\").map(function (time) {\n return time.trim();\n }).forEach(function (part) {\n var parsed = part.split(\":\").map(function (time) {\n return time.trim();\n });\n var value = parseInt(parsed[0] * 60 * 60);\n\n if (parsed[1]) {\n value += parseInt(parsed[1] * 60);\n }\n\n if (parsed[2]) {\n value += parseInt(parsed[2]);\n }\n\n timestampRanges.push(value);\n });\n }\n });\n var timerangeConfig = [];\n\n for (var i = 0; i < timestampRanges.length; i += 2) {\n var start = timestampRanges[i];\n var end = timestampRanges[i + 1];\n var duration = end - start;\n timerangeConfig.push({\n start: start,\n end: end,\n startHour: Math.floor(start / (60 * 60)),\n startMinute: Math.floor(start / 60),\n endHour: Math.ceil(end / (60 * 60)),\n endMinute: Math.ceil(end / 60),\n durationSeconds: duration,\n durationMinutes: duration / 60,\n durationHours: duration / (60 * 60)\n });\n }\n\n return timerangeConfig;\n } else {\n return hours;\n }\n },\n setWorkTime: function setWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n var hours = settings.hours !== undefined ? settings.hours : true;\n\n var timestamp = this._timestamp(settings);\n\n var calendarConfig = this.getConfig();\n\n if (timestamp !== null) {\n calendarConfig.dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.hours = hours;\n }\n\n if (settings.customWeeks) {\n if (!calendarConfig.customWeeks) {\n calendarConfig.customWeeks = {};\n } // GS-1867. allow setWorkTime to exclude dates in the customWeeks range\n\n\n if (typeof settings.customWeeks == \"string\") {\n if (timestamp !== null) {\n calendarConfig.customWeeks[settings.customWeeks].dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.customWeeks[settings.customWeeks].hours = hours;\n }\n } else if (_typeof(settings.customWeeks) === \"object\" && Function.prototype.toString.call(settings.customWeeks.constructor) === \"function Object() { [native code] }\") {\n for (var i in settings.customWeeks) {\n calendarConfig.customWeeks[i] = settings.customWeeks[i];\n }\n }\n }\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n unsetWorkTime: function unsetWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n if (!settings) {\n this.reset_calendar();\n } else {\n var timestamp = this._timestamp(settings);\n\n if (timestamp !== null) {\n delete this.getConfig().dates[timestamp];\n }\n } // Load updated settings and clear work units cache\n\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n _isWorkTime: function _isWorkTime(date, unit) {\n // Check if this item has in the cache\n var useCache = true; //unit === \"day\"; // use cache only for days. In case of hours/minutes cache size grows too large and the overhead exceeds the gains\n\n var isWorkUnit = -1;\n var dateKey = null;\n\n if (useCache) {\n // use string keys\n dateKey = String(date.valueOf());\n isWorkUnit = this._workingUnitsCache.getItem(unit, dateKey, date);\n }\n\n if (isWorkUnit == -1) {\n // calculate if not cached\n isWorkUnit = this._checkIfWorkingUnit(date, unit);\n\n if (useCache) {\n this._workingUnitsCache.setItem(unit, dateKey, isWorkUnit, date);\n }\n }\n\n return isWorkUnit;\n },\n isWorkTime: function isWorkTime() {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._isWorkTime(config.date, config.unit);\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n if (!config.unit) {\n return false;\n } //return this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n\n\n var self = this;\n return this._dateDurationCache.getDuration(config.start_date, config.end_date, config.unit, config.step, function () {\n return self._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n });\n },\n _calculateDuration: function _calculateDuration(from, to, unit, step) {\n var res = 0;\n var sign = 1;\n\n if (from.valueOf() > to.valueOf()) {\n var tmp = to;\n to = from;\n from = tmp;\n sign = -1;\n }\n\n if (unit == \"hour\" && step == 1) {\n res = this._getHoursBetween(from, to, unit, step);\n } else if (unit == \"minute\" && step == 1) {\n // quick calculation for minutes with 1 minute step\n res = this._getMinutesBetween(from, to, unit, step);\n } else {\n res = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n } // getWorkUnits.. returns decimal durations\n\n\n return sign * Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n\n if (!unit) {\n return false;\n }\n\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n\n while (start.valueOf() < end.valueOf()) {\n if (this._isWorkTime(start, unit)) return true;\n start = this._nextDate(start, unit, step);\n }\n\n return false;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n if (!unit) return false;\n var mult = config.duration >= 0 ? 1 : -1;\n duration = Math.abs(duration * 1); //\tvar endDate = this._calculateEndDate(from, duration, unit, step * mult);\n //\treturn endDate;\n\n var self = this;\n return this._dateDurationCache.getEndDate(from, duration, unit, step * mult, function () {\n return self._calculateEndDate(from, duration, unit, step * mult);\n });\n },\n _calculateEndDate: function _calculateEndDate(from, duration, unit, step) {\n if (!unit) return false;\n\n if (step == 1 && unit == \"minute\") {\n return this._calculateMinuteEndDate(from, duration, step);\n } else if (step == -1 && unit == \"minute\") {\n return this._subtractMinuteDate(from, duration, step);\n } else if (step == 1 && unit == \"hour\") {\n return this._calculateHourEndDate(from, duration, step);\n } else {\n var interval = this._addInterval(from, duration, unit, step, null);\n\n return interval.end;\n }\n },\n _addInterval: function _addInterval(start, duration, unit, step, stopAction) {\n var added = 0;\n var current = start;\n var dstShift = false;\n\n while (added < duration && !(stopAction && stopAction(current))) {\n var next = this._nextDate(current, unit, step); // GS-1501. Correct hours after DST change\n\n\n if (unit == \"day\") {\n dstShift = dstShift || !current.getHours() && next.getHours();\n\n if (dstShift) {\n next.setHours(0);\n\n if (next.getHours()) {// the day when the timezone is changed, try to correct hours next time\n } else {\n dstShift = false;\n }\n }\n }\n\n var dateValue = new Date(next.valueOf() + 1);\n\n if (step > 0) {\n dateValue = new Date(next.valueOf() - 1);\n }\n\n var workTimeCheck = this._isWorkTime(dateValue, unit);\n\n if (workTimeCheck && !dstShift) {\n added++;\n }\n\n current = next;\n }\n\n return {\n end: current,\n start: start,\n added: added\n };\n },\n _addHoursUntilDayEnd: function _addHoursUntilDayEnd(from, duration) {\n var dayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(from)), 1, \"day\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, dayEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeHours = (minuteTo - minuteFrom) / (60 * 60);\n\n if (rangeHours > left) {\n rangeHours = left;\n minuteTo = minuteFrom + left * 60 * 60;\n }\n\n var addHours = Math.round((minuteTo - minuteFrom) / (60 * 60));\n added += addHours;\n left -= addHours;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = dayEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _calculateHourEndDate: function _calculateHourEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n\n var interval = this._addHoursUntilDayEnd(start, duration);\n\n added = interval.added;\n start = interval.end;\n var durationLeft = duration - added;\n\n if (durationLeft) {\n var current = start;\n\n while (added < duration) {\n var next = this._nextDate(current, \"day\", step); // reset to day start in case DST switch happens in the process\n\n\n next.setHours(0);\n next.setMinutes(0);\n next.setSeconds(0);\n var hoursPerDay = 0;\n\n if (step > 0) {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() - 1));\n } else {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() + 1));\n }\n\n if (added + hoursPerDay >= duration) {\n break;\n } else {\n added += hoursPerDay;\n }\n\n current = next;\n }\n\n start = current;\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n interval = this._addHoursUntilDayEnd(start, durationLeft);\n start = interval.end;\n }\n\n return start;\n },\n _addMinutesUntilHourEnd: function _addMinutesUntilHourEnd(from, duration) {\n if (from.getMinutes() === 0) {\n // already at hour end\n return {\n added: 0,\n end: new Date(from)\n };\n }\n\n var hourEnd = this.$gantt.date.add(this.$gantt.date.hour_start(new Date(from)), 1, \"hour\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, hourEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeMinutes = (minuteTo - minuteFrom) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom + left * 60;\n } // TODO: verify testcase https://dhtmlxsupport.teamwork.com/desk/tickets/9625700/messages\n\n /*if (rangeMinutes === 0) {\r\n \trangeMinutes = left;\r\n \tminuteTo = minuteFrom + (left * 60);\r\n }*/\n\n\n var addMinutes = Math.round((minuteTo - minuteFrom) / 60);\n left -= addMinutes;\n added += addMinutes;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = hourEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinutesUntilHourStart: function _subtractMinutesUntilHourStart(from, duration) {\n var hourStart = this.$gantt.date.hour_start(new Date(from));\n var added = 0;\n var left = duration;\n var hourStartTimestamp = hourStart.getHours() * 60 * 60 + hourStart.getMinutes() * 60 + hourStart.getSeconds();\n var initialDateTimestamp = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = worktimes.length - 1; i >= 0 && added < duration; i--) {\n var interval = worktimes[i];\n\n if (initialDateTimestamp > interval.start && hourStartTimestamp <= interval.end) {\n var minuteFrom = Math.min(initialDateTimestamp, interval.end);\n var minuteTo = Math.max(hourStartTimestamp, interval.start); //\tvar minuteFrom = Math.max(interval.start, currentHour.start);\n //\tvar minuteTo = Math.min(interval.end, currentHour.end);\n\n var rangeMinutes = (minuteFrom - minuteTo) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom - left * 60;\n } // TODO: verify testcase https://dhtmlxsupport.teamwork.com/desk/tickets/9625700/messages\n\n /*if (rangeMinutes === 0) {\r\n \trangeMinutes = left;\r\n \tminuteTo = minuteFrom - (left * 60);\r\n }*/\n\n\n var addMinutes = Math.abs(Math.round((minuteFrom - minuteTo) / 60));\n left -= addMinutes;\n added += addMinutes;\n initialDateTimestamp = minuteTo;\n }\n }\n\n var intervalEnd = hourStart;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, initialDateTimestamp);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinuteDate: function _subtractMinuteDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || -1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var minutePrecision = this._isMinutePrecision(start);\n\n var addedInterval = this._subtractMinutesUntilHourStart(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start));\n var iterateFromDayEnd = false;\n\n if (start.valueOf() === dayStart.valueOf()) {\n dayStart = this.$gantt.date.add(dayStart, -1, \"day\");\n iterateFromDayEnd = true;\n } //var dayStartTimestamp = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n\n var dayEnd = new Date(dayStart.getFullYear(), dayStart.getMonth(), dayStart.getDate(), 23, 59, 59, 999).valueOf();\n\n if (dayEnd !== calculatedDay) {\n daySchedule = this._getWorkHours(dayStart);\n minutesInDay = this._getMinutesPerDay(dayStart);\n calculatedDay = dayEnd;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start, iterateFromDayEnd);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n\n if (daySchedule[daySchedule.length - 1].end <= timestamp) {\n if (left > minutesInDay) {\n added += minutesInDay;\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n var prevInterval = null;\n\n for (var i = daySchedule.length - 1; i >= 0; i--) {\n if (daySchedule[i].start < timestamp - 1 && daySchedule[i].end >= timestamp - 1) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n prevInterval = daySchedule[i - 1];\n break;\n }\n }\n\n if (isWorkHour) {\n // we're at the end of worktime interval and subtracting more than the duration of the interval\n // -> subtract the duration of the interval and move to the start of the interval (we're moving from end)\n if (timestamp === workInterval.end && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, -workInterval.durationMinutes, \"minute\");\n } // worktime is set in whole hours (no intervals like 9:15-10:00)\n // the amount we need to subtract lies inside the interval\n else if (!minutePrecision && left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else if (minutePrecision) {\n // GS-2129. If the working time is set in minutes, we accumulate the working time in minutes from right to left\n // duration we need to subtract lies completely inside the work interval\n if (left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else {\n // we need to go trough multiple work intervals to subtract needed time\n added += timestamp / 60 - workInterval.startMinute;\n\n if (prevInterval) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, prevInterval.end);\n } else {\n start = this.$gantt.date.day_start(start);\n }\n }\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n start = this._nextDate(start, \"hour\", step);\n } else {\n addedInterval = this._subtractMinutesUntilHourStart(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n if (start.getHours() === 0 && start.getMinutes() === 0 && start.getSeconds() === 0) {\n var prev = this._getClosestWorkTimePast(start, \"hour\");\n\n if (prev.valueOf() === start.valueOf()) {\n var prev = this.$gantt.date.add(start, -1, \"day\");\n\n var times = this._getWorkHours(prev);\n\n if (times.length) {\n var lastInterval = times[times.length - 1];\n prev.setSeconds(lastInterval.durationSeconds);\n }\n }\n\n start = prev;\n } else {\n start = this._getClosestWorkTimePast(new Date(start - 1), \"hour\");\n }\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._subtractMinutesUntilHourStart(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n _calculateMinuteEndDate: function _calculateMinuteEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._addMinutesUntilHourEnd(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n var minutePrecision = this._isMinutePrecision(start);\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n if (dayStart !== calculatedDay) {\n daySchedule = this._getWorkHours(start);\n minutesInDay = this._getMinutesPerDay(start);\n calculatedDay = dayStart;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(this.$gantt.date.day_start(start), 1, \"day\");\n continue;\n }\n\n if (daySchedule[0].start >= timestamp) {\n if (left >= minutesInDay) {\n added += minutesInDay;\n\n if (left == minutesInDay) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, daySchedule[daySchedule.length - 1].end);\n break;\n } else {\n start = this.$gantt.date.add(start, 1, \"day\");\n start = this.$gantt.date.day_start(start);\n }\n\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = 0; i < daySchedule.length; i++) {\n if (daySchedule[i].start <= timestamp && daySchedule[i].end > timestamp) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.start && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, workInterval.durationMinutes, \"minute\");\n } else if (left <= workInterval.endMinute - timestamp / 60) {\n added += left;\n start = this.$gantt.date.add(start, left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour; // when the working time settings are set in minutes move to the next minutes\n\n if (minutePrecision) {\n start = this.$gantt.date.add(start, minutesInHour, \"minute\");\n } else {\n start = this._nextDate(start, \"hour\", step);\n }\n } else {\n addedInterval = this._addMinutesUntilHourEnd(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n start = this._getClosestWorkTimeFuture(start, \"hour\");\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._addMinutesUntilHourEnd(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n getClosestWorkTime: function getClosestWorkTime() {\n var settings = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\n },\n _getClosestWorkTime: function _getClosestWorkTime(inputDate, unit, direction) {\n var result = new Date(inputDate);\n\n if (this._isWorkTime(result, unit)) {\n return result;\n }\n\n result = this.$gantt.date[unit + '_start'](result);\n\n if (direction == 'any' || !direction) {\n var closestFuture = this._getClosestWorkTimeFuture(result, unit);\n\n var closestPast = this._getClosestWorkTimePast(result, unit);\n\n if (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\n result = closestFuture;\n } else {\n result = closestPast;\n }\n } else if (direction == \"past\") {\n result = this._getClosestWorkTimePast(result, unit);\n } else {\n result = this._getClosestWorkTimeFuture(result, unit);\n }\n\n return result;\n },\n _getClosestWorkTimeFuture: function _getClosestWorkTimeFuture(date, unit) {\n return this._getClosestWorkTimeGeneric(date, unit, 1);\n },\n _getClosestWorkTimePast: function _getClosestWorkTimePast(date, unit) {\n var result = this._getClosestWorkTimeGeneric(date, unit, -1); // should return the end of the closest work interval\n\n\n return this.$gantt.date.add(result, 1, unit);\n },\n _findClosestTimeInDay: function _findClosestTimeInDay(date, direction, worktimes) {\n var start = new Date(date);\n var resultDate = null;\n var fromDayEnd = false;\n\n if (!this._getWorkHours(start).length) {\n start = this._getClosestWorkTime(start, \"day\", direction < 0 ? \"past\" : \"future\");\n\n if (direction < 0) {\n start = new Date(start.valueOf() - 1);\n fromDayEnd = true;\n }\n\n worktimes = this._getWorkHours(start);\n }\n\n var value = this._getTimeOfDayStamp(start);\n\n if (fromDayEnd) {\n value = this._getTimeOfDayStamp(new Date(start.valueOf() + 1), fromDayEnd);\n }\n\n if (direction > 0) {\n for (var i = 0; i < worktimes.length; i++) {\n if (worktimes[i].start >= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].start);\n break;\n }\n }\n } else {\n for (var i = worktimes.length - 1; i >= 0; i--) {\n if (worktimes[i].end <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].end);\n break;\n } else if (worktimes[i].end > value && worktimes[i].start <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, value);\n break;\n }\n }\n }\n\n return resultDate;\n },\n _getClosestWorkMinute: function _getClosestWorkMinute(date, unit, direction) {\n var start = new Date(date);\n\n var worktimes = this._getWorkHours(start);\n\n var resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n\n if (!resultDate) {\n start = this.calculateEndDate(start, direction, \"day\");\n\n if (direction > 0) {\n start = this.$gantt.date.day_start(start);\n } else {\n start = this.$gantt.date.day_start(start);\n start = this.$gantt.date.add(start, 1, \"day\");\n start = new Date(start.valueOf() - 1);\n }\n\n worktimes = this._getWorkHours(start);\n resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n }\n\n if (direction < 0) {\n // getClosestWorkTimePast adds one time unit to the result date after this\n resultDate = this.$gantt.date.add(resultDate, -1, unit);\n }\n\n return resultDate;\n },\n _getClosestWorkTimeGeneric: function _getClosestWorkTimeGeneric(date, unit, increment) {\n if (unit === \"hour\" || unit === \"minute\") {\n return this._getClosestWorkMinute(date, unit, increment);\n }\n\n var unitOrder = this._getUnitOrder(unit),\n biggerTimeUnit = this.units[unitOrder - 1];\n\n var result = date; // be extra sure we won't fall into infinite loop, 3k seems big enough\n\n var maximumLoop = 3000,\n count = 0;\n\n while (!this._isWorkTime(result, unit)) {\n if (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\n // if we look for closest work hour and detect a week-end - first find the closest work day,\n // and continue iterations after that\n if (increment > 0) {\n result = this._getClosestWorkTimeFuture(result, biggerTimeUnit);\n } else {\n result = this._getClosestWorkTimePast(result, biggerTimeUnit);\n }\n\n if (this._isWorkTime(result, unit)) {\n break;\n }\n }\n\n count++;\n\n if (count > maximumLoop) {\n this.$gantt.assert(false, \"Invalid working time check\");\n return false;\n }\n\n var tzOffset = result.getTimezoneOffset();\n result = this.$gantt.date.add(result, increment, unit);\n result = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\n\n if (this.$gantt.date[unit + '_start']) {\n result = this.$gantt.date[unit + '_start'](result);\n }\n }\n\n return result;\n },\n\n /**\r\n * Check whether this calendar has working time. Calendar has working time only if there are regular working days of week\r\n *\r\n */\n hasWorkTime: function hasWorkTime() {\n var worktime = this.getConfig();\n var dates = worktime.dates;\n var daysOfWeek = [0, 1, 2, 3, 4, 5, 6];\n var exceptions = [];\n\n for (var i in worktime.dates) {\n if (Number(i) > 6) {\n exceptions.push(Number(i));\n }\n }\n\n var hasRegularHours = this._checkWorkHours(worktime.hours);\n\n var result = false;\n daysOfWeek.forEach(function (day) {\n if (result) {\n return;\n }\n\n var dayConfig = dates[day];\n\n if (dayConfig === true) {\n // workday uses global hours\n result = hasRegularHours;\n } else if (Array.isArray(dayConfig)) {\n // workday uses custom hours\n result = this._checkWorkHours(dayConfig);\n }\n }.bind(this));\n return result;\n },\n _checkWorkHours: function _checkWorkHours(hoursArray) {\n if (hoursArray.length === 0) {\n return false;\n }\n\n var result = false;\n\n for (var i = 0; i < hoursArray.length; i += 2) {\n if (hoursArray[i] !== hoursArray[i + 1]) {\n result = true;\n }\n }\n\n return result;\n },\n _isMinutePrecision: function _isMinutePrecision(date) {\n var minutePrecision = false;\n\n this._getWorkHours(date).forEach(function (interval) {\n if (interval.startMinute % 60 || interval.endMinute % 60) {\n minutePrecision = true;\n }\n });\n\n return minutePrecision;\n }\n};\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../../utils/utils\");\n\nfunction WorkTimeCalendarMerger() {}\n\nWorkTimeCalendarMerger.prototype = {\n /**\r\n * convert hours array items into objects, e.g. [8, 12, 17, 18] -> [{start: 8, end: 12}, {start:17, end:18}]\r\n * @param {Array} hoursArray\r\n */\n _getIntervals: function _getIntervals(hoursArray) {\n var result = [];\n\n for (var i = 0; i < hoursArray.length; i += 2) {\n result.push({\n start: hoursArray[i],\n end: hoursArray[i + 1]\n });\n }\n\n return result;\n },\n\n /**\r\n * Convert ranges config into hours array\r\n * [{start: 8, end: 12}, {start:17, end:18}] --> [8, 12, 17, 18]\r\n * @param {*} intervalsArray\r\n */\n _toHoursArray: function _toHoursArray(intervalsArray) {\n var result = [];\n\n function toFixed(value) {\n var str = String(value);\n\n if (str.length < 2) {\n str = \"0\" + str;\n }\n\n return str;\n }\n\n function formatHHMM(secondsValue) {\n var hours = Math.floor(secondsValue / (60 * 60));\n var minutePart = secondsValue - hours * 60 * 60;\n var minutes = Math.floor(minutePart / 60);\n return hours + \":\" + toFixed(minutes);\n }\n\n for (var i = 0; i < intervalsArray.length; i++) {\n result.push(formatHHMM(intervalsArray[i].start) + \"-\" + formatHHMM(intervalsArray[i].end));\n }\n\n return result;\n },\n\n /**\r\n * Build intersection of hour intervals. e.g.\r\n * first: [{start: 8, end: 12}, {start:13, end:18}]\r\n * second: [{start: 10, end: 15}]\r\n * result: [{start: 10, end: 12}, {start: 13, end: 15}]\r\n * @param {Array} first\r\n * @param {Array} second\r\n */\n _intersectHourRanges: function _intersectHourRanges(first, second) {\n var result = [];\n var baseArray = first.length > second.length ? first : second;\n var overridesArray = first === baseArray ? second : first;\n baseArray = baseArray.slice();\n overridesArray = overridesArray.slice();\n var result = [];\n\n for (var i = 0; i < baseArray.length; i++) {\n var base = baseArray[i];\n\n for (var j = 0; j < overridesArray.length; j++) {\n var current = overridesArray[j];\n\n if (current.start < base.end && current.end > base.start) {\n result.push({\n start: Math.max(base.start, current.start),\n end: Math.min(base.end, current.end)\n });\n\n if (base.end > current.end) {\n overridesArray.splice(j, 1);\n j--;\n i--;\n }\n }\n }\n }\n\n return result;\n },\n\n /**\r\n * Reduce the number of ranges in config when possible,\r\n * joins ranges that can be merged\r\n * parts: [{start: 8, end: 12}, {start:12, end:13}, {start: 15, end: 17}]\r\n * result: [{start: 8, end: 13}, {start: 15, end: 17}]\r\n * @param {Array} parts\r\n */\n _mergeAdjacentIntervals: function _mergeAdjacentIntervals(parts) {\n var result = parts.slice();\n result.sort(function (a, b) {\n return a.start - b.start;\n });\n var base = result[0];\n\n for (var i = 1; i < result.length; i++) {\n var current = result[i];\n\n if (current.start <= base.end) {\n if (current.end > base.end) {\n base.end = current.end;\n }\n\n result.splice(i, 1);\n i--;\n } else {\n base = current;\n }\n }\n\n return result;\n },\n _mergeHoursConfig: function _mergeHoursConfig(firstHours, secondHours) {\n //var firstIntervals = this._getIntervals(firstHours);\n //var secondIntervals = this._getIntervals(secondHours);\n return this._mergeAdjacentIntervals(this._intersectHourRanges(firstHours, secondHours));\n },\n merge: function merge(first, second) {\n var firstConfig = utils.copy(first.getConfig().parsed);\n var secondConfig = utils.copy(second.getConfig().parsed);\n var mergedSettings = {\n hours: this._toHoursArray(this._mergeHoursConfig(firstConfig.hours, secondConfig.hours)),\n dates: {},\n customWeeks: {}\n };\n\n for (var i in firstConfig.dates) {\n var firstDate = firstConfig.dates[i];\n var secondDate = secondConfig.dates[i]; // if this key is a working date in both calendars\n\n if (firstDate && secondDate) {\n // if at least one of working date is set by hours config - build intersection\n if (Array.isArray(firstDate) || Array.isArray(secondDate)) {\n var firstHours = Array.isArray(firstDate) ? firstDate : firstConfig.hours;\n var secondHours = Array.isArray(secondDate) ? secondDate : secondConfig.hours;\n mergedSettings.dates[i] = this._toHoursArray(this._mergeHoursConfig(firstHours, secondHours));\n } else {\n // date will use global hours\n mergedSettings.dates[i] = true;\n }\n } else {\n mergedSettings.dates[i] = false;\n }\n } // transfer and overwrite custom week calendars\n\n\n if (firstConfig.customWeeks) {\n for (var i in firstConfig.customWeeks) {\n mergedSettings.customWeeks[i] = firstConfig.customWeeks[i];\n }\n }\n\n if (secondConfig.customWeeks) {\n for (var i in secondConfig.customWeeks) {\n mergedSettings.customWeeks[i] = secondConfig.customWeeks[i];\n }\n }\n\n return mergedSettings;\n }\n};\nmodule.exports = WorkTimeCalendarMerger;","var utils = require(\"../../utils/utils\");\n\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\n\nvar CalendarMergeHelper = require(\"./strategy/work_calendar_merger\");\n\nvar CalendarWorkTimeStrategy = require(\"./strategy/calendar_strategy\");\n\nvar legacyResourceCalendarConfig = require(\"./legacy_resource_config\");\n\nvar dynamicResourceCalendars = require(\"./dynamic_resource_calendars\")();\n\nfunction CalendarManager(gantt) {\n this.$gantt = gantt;\n this._calendars = {};\n this._legacyConfig = undefined;\n this.$gantt.attachEvent(\"onGanttReady\", function () {\n if (this.$gantt.config.resource_calendars) {\n this._isLegacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(this.$gantt.config.resource_calendars);\n }\n }.bind(this));\n this.$gantt.attachEvent(\"onBeforeGanttReady\", function () {\n this.createDefaultCalendars();\n }.bind(this));\n this.$gantt.attachEvent(\"onBeforeGanttRender\", function () {\n this.createDefaultCalendars();\n }.bind(this));\n}\n\nCalendarManager.prototype = {\n _calendars: {},\n _convertWorkTimeSettings: function _convertWorkTimeSettings(settings) {\n var days = settings.days;\n\n if (days && !settings.dates) {\n settings.dates = settings.dates || {};\n\n for (var i = 0; i < days.length; i++) {\n settings.dates[i] = days[i];\n\n if (!(days[i] instanceof Array)) {\n settings.dates[i] = !!days[i];\n }\n }\n }\n\n delete settings.days;\n return settings;\n },\n mergeCalendars: function mergeCalendars() {\n var calendars = [];\n var args = arguments;\n\n if (Array.isArray(args[0])) {\n calendars = args[0].slice();\n } else {\n for (var i = 0; i < arguments.length; i++) {\n calendars.push(arguments[i]);\n }\n }\n\n var mergeHelper = new CalendarMergeHelper();\n var result;\n calendars.forEach(function (calendar) {\n if (!result) {\n result = calendar;\n } else {\n result = this._createCalendarFromConfig(mergeHelper.merge(result, calendar));\n }\n }.bind(this));\n return this.createCalendar(result);\n },\n _createCalendarFromConfig: function _createCalendarFromConfig(config) {\n var apiCore = new CalendarWorkTimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\n apiCore.id = String(utils.uid());\n\n var preparedConfig = this._convertWorkTimeSettings(config);\n\n if (preparedConfig.customWeeks) {\n for (var i in preparedConfig.customWeeks) {\n preparedConfig.customWeeks[i] = this._convertWorkTimeSettings(preparedConfig.customWeeks[i]);\n }\n }\n\n apiCore._setConfig(preparedConfig);\n\n return apiCore;\n },\n createCalendar: function createCalendar(parentCalendar) {\n var settings;\n\n if (!parentCalendar) {\n parentCalendar = {};\n }\n\n if (parentCalendar.getConfig) {\n settings = utils.copy(parentCalendar.getConfig());\n } else if (parentCalendar.worktime) {\n settings = utils.copy(parentCalendar.worktime);\n } else {\n settings = utils.copy(parentCalendar);\n }\n\n var defaults = utils.copy(this.defaults.fulltime.worktime);\n utils.mixin(settings, defaults);\n return this._createCalendarFromConfig(settings);\n },\n getCalendar: function getCalendar(id) {\n id = id || \"global\";\n var calendar = this._calendars[id];\n\n if (!calendar) {\n this.createDefaultCalendars();\n calendar = this._calendars[id];\n }\n\n return calendar;\n },\n getCalendars: function getCalendars() {\n var res = [];\n\n for (var i in this._calendars) {\n res.push(this.getCalendar(i));\n }\n\n return res;\n },\n _getOwnCalendar: function _getOwnCalendar(task) {\n var config = this.$gantt.config;\n\n if (task[config.calendar_property]) {\n return this.getCalendar(task[config.calendar_property]);\n }\n\n if (config.resource_calendars) {\n var calendar;\n var calendarId;\n var resourceProperty;\n\n if (this._legacyConfig === false) {\n resourceProperty = config.resource_property;\n } else {\n resourceProperty = legacyResourceCalendarConfig.getResourceProperty(config);\n }\n\n if (Array.isArray(task[resourceProperty])) {\n // if multiple resources are attached to the task - merge their calendars\n if (config.dynamic_resource_calendars) {\n calendarId = dynamicResourceCalendars.getCalendarIdFromMultipleResources(task[resourceProperty], this);\n }\n } else {\n if (this._legacyConfig === undefined) {\n this._legacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars);\n }\n\n if (this._legacyConfig) {\n var calendarId = legacyResourceCalendarConfig.getCalendarIdFromLegacyConfig(task, config.resource_calendars);\n } else if (resourceProperty && task[resourceProperty] && config.resource_calendars[task[resourceProperty]]) {\n var calendar = this.getResourceCalendar(task[resourceProperty]);\n }\n }\n\n if (calendarId) {\n calendar = this.getCalendar(calendarId);\n }\n\n if (calendar) {\n return calendar;\n }\n }\n\n return null;\n },\n\n /**\r\n * Returns calendar assigned to the specified resource.\r\n * Returns the global calendar if no custom calendar is associated with the resource.\r\n * @param {(string|number|Object)} resource - resource object or resource id\r\n * @returns {object} Calendar object\r\n */\n getResourceCalendar: function getResourceCalendar(resource) {\n if (resource === null || resource === undefined) {\n return this.getCalendar();\n }\n\n var resourceId = null; // if task id is provided\n\n if (typeof resource === \"number\" || typeof resource === \"string\") {\n resourceId = resource;\n } else {\n resourceId = resource.id || resource.key;\n }\n\n var config = this.$gantt.config;\n var calendarsConfig = config.resource_calendars;\n var calendarId = null;\n\n if (calendarsConfig) {\n if (this._legacyConfig === undefined) {\n this._legacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars);\n }\n\n if (this._legacyConfig) {\n for (var field in calendarsConfig) {\n if (calendarsConfig[field][resourceId]) {\n calendarId = calendarsConfig[field][resourceId];\n break;\n }\n }\n } else {\n var calendarId = calendarsConfig[resourceId];\n }\n\n if (calendarId) {\n return this.getCalendar(calendarId);\n }\n }\n\n return this.getCalendar();\n },\n\n /**\r\n * Returns the calendar assigned to a task.\r\n * - Returns a calendar assigned via task[gantt.config.calendar_property] if specified.\r\n * - Returns a calendar assigned to the task resource if specified.\r\n * - Returns the global calendar otherwise.\r\n * @param {(string|number|Object)} task - task object or task id\r\n * @returns {object} Calendar object\r\n */\n getTaskCalendar: function getTaskCalendar(task) {\n var gantt = this.$gantt;\n var taskObject;\n\n if (task === null || task === undefined) {\n return this.getCalendar();\n } // if task id is provided\n\n\n if ((typeof task === \"number\" || typeof task === \"string\") && gantt.isTaskExists(task)) {\n taskObject = gantt.getTask(task);\n } else {\n taskObject = task;\n }\n\n if (!taskObject) {\n return this.getCalendar();\n }\n\n var calendar = this._getOwnCalendar(taskObject);\n\n var groupMode = !!gantt.getState().group_mode;\n\n if (!calendar && gantt.config.inherit_calendar && gantt.isTaskExists(taskObject.parent)) {\n // GS-1579 group mode overrides tree hierarchy, iterate using `.parent` property, instead of using eachParent iterator\n var currentTask = taskObject;\n\n while (gantt.isTaskExists(currentTask.parent)) {\n currentTask = gantt.getTask(currentTask.parent);\n\n if (gantt.isSummaryTask(currentTask)) {\n calendar = this._getOwnCalendar(currentTask);\n\n if (calendar) {\n break;\n }\n }\n }\n\n if (groupMode && !calendar) {\n // if group mode and inherit_calendars is enabled - preserve previously applied parent calendar\n // we may need it when groupBy parses grouped data, old parent may be not loaded yet\n if (task.$effective_calendar) {\n calendar = this.getCalendar(task.$effective_calendar);\n }\n }\n }\n\n return calendar || this.getCalendar();\n },\n addCalendar: function addCalendar(calendar) {\n // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\n if (!this.isCalendar(calendar)) {\n var id = calendar.id;\n calendar = this.createCalendar(calendar);\n calendar.id = id;\n } // validate/check if empty calendar\n\n\n if (!calendar._tryChangeCalendarSettings(function () {})) {\n this.$gantt.callEvent(\"onCalendarError\", [{\n message: \"Invalid calendar settings, no worktime available\"\n }, calendar]);\n return null;\n } else {\n var config = this.$gantt.config;\n calendar.id = calendar.id || utils.uid();\n this._calendars[calendar.id] = calendar;\n if (!config.worktimes) config.worktimes = {};\n config.worktimes[calendar.id] = calendar.getConfig();\n return calendar.id;\n }\n },\n deleteCalendar: function deleteCalendar(calendar) {\n var config = this.$gantt.config;\n if (!calendar) return false;\n\n if (this._calendars[calendar]) {\n delete this._calendars[calendar];\n if (config.worktimes && config.worktimes[calendar]) delete config.worktimes[calendar];\n return true;\n } else {\n return false;\n }\n },\n restoreConfigCalendars: function restoreConfigCalendars(configs) {\n for (var i in configs) {\n if (this._calendars[i]) continue;\n var settings = configs[i];\n var calendar = this.createCalendar(settings);\n calendar.id = i;\n this.addCalendar(calendar);\n }\n },\n defaults: {\n global: {\n id: \"global\",\n worktime: {\n hours: [8, 12, 13, 17],\n days: [0, 1, 1, 1, 1, 1, 0]\n }\n },\n fulltime: {\n id: \"fulltime\",\n worktime: {\n hours: [0, 24],\n days: [1, 1, 1, 1, 1, 1, 1]\n }\n }\n },\n createDefaultCalendars: function createDefaultCalendars() {\n var config = this.$gantt.config;\n this.restoreConfigCalendars(this.defaults);\n this.restoreConfigCalendars(config.worktimes);\n },\n isCalendar: function isCalendar(possibleCalendar) {\n // because we don't have any way to check without dependency to CalendarWorkTimeStrategy\n var props = [possibleCalendar.isWorkTime, possibleCalendar.setWorkTime, possibleCalendar.getWorkHours, possibleCalendar.unsetWorkTime, possibleCalendar.getClosestWorkTime, possibleCalendar.calculateDuration, possibleCalendar.hasDuration, possibleCalendar.calculateEndDate];\n return props.every(function (entry) {\n return entry instanceof Function;\n });\n }\n};\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\n TimeCalculator = require(\"./time_calculator\"),\n worktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\n utils = require(\"../../utils/utils\");\n\nmodule.exports = function (gantt) {\n var manager = new CalendarManager(gantt),\n timeCalculator = new TimeCalculator(manager);\n var facade = worktimeFacadeFactory.create(manager, timeCalculator);\n utils.mixin(gantt, facade);\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"../utils/helpers\");\n\nmodule.exports = function (gantt) {\n gantt.load = function (url, type, callback) {\n this._load_url = url;\n this.assert(arguments.length, \"Invalid load arguments\");\n var tp = 'json',\n cl = null;\n\n if (arguments.length >= 3) {\n tp = type;\n cl = callback;\n } else {\n if (typeof arguments[1] == \"string\") tp = arguments[1];else if (typeof arguments[1] == \"function\") cl = arguments[1];\n }\n\n this._load_type = tp;\n this.callEvent(\"onLoadStart\", [url, tp]);\n return this.ajax.get(url, gantt.bind(function (l) {\n this.on_load(l, tp);\n this.callEvent(\"onLoadEnd\", [url, tp]);\n if (typeof cl == \"function\") cl.call(this);\n }, this));\n };\n\n gantt.parse = function (data, type) {\n this.on_load({\n xmlDoc: {\n responseText: data\n }\n }, type);\n };\n\n gantt.serialize = function (type) {\n type = type || \"json\";\n return this[type].serialize();\n };\n /*\r\n tasks and relations\r\n {\r\n data:[\r\n \t{\r\n \t\t\"id\":\"string\",\r\n \t\t\"text\":\"...\",\r\n \t\t\"start_date\":\"Date or string\",\r\n \t\t\"end_date\":\"Date or string\",\r\n \t\t\"duration\":\"number\",\r\n \t\t\"progress\":\"0..1\",\r\n \t\t\"parent_id\":\"string\",\r\n \t\t\"order\":\"number\"\r\n \t},...],\r\n links:[\r\n \t{\r\n \t\tid:\"string\",\r\n \t\tsource:\"string\",\r\n \t\ttarget:\"string\",\r\n \t\ttype:\"string\"\r\n \t},...],\r\n collections:{\r\n \t\tcollectionName:[\r\n \t\t\t{key:, label:, optional:...},...\r\n \t\t],...\r\n \t}\r\n }\r\n \n * */\n\n\n gantt.on_load = function (resp, type) {\n if (resp.xmlDoc && resp.xmlDoc.status === 404) {\n // work if we don't have a file at current url\n this.assert(false, \"Failed to load the data from <a href='\" + resp.xmlDoc.responseURL + \"' target='_blank'>\" + resp.xmlDoc.responseURL + \"</a>, server returns 404\");\n return;\n }\n\n if (gantt.$destroyed) {\n return;\n }\n\n this.callEvent(\"onBeforeParse\", []);\n if (!type) type = \"json\";\n this.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n var raw = resp.xmlDoc.responseText;\n var data = this[type].parse(raw, resp);\n\n this._process_loading(data);\n };\n\n function attachAssignmentsToTasks(tasks, assignments) {\n var assignmentsByTasks = {};\n assignments.forEach(function (a) {\n if (!assignmentsByTasks[a.task_id]) {\n assignmentsByTasks[a.task_id] = [];\n }\n\n assignmentsByTasks[a.task_id].push(a);\n });\n tasks.forEach(function (t) {\n t[gantt.config.resource_property] = assignmentsByTasks[t.id] || [];\n });\n }\n\n gantt._process_loading = function (data) {\n if (data.collections) this._load_collections(data.collections);\n\n if (data.resources && this.$data.resourcesStore) {\n this.$data.resourcesStore.parse(data.resources);\n }\n\n var tasks = data.data || data.tasks;\n\n if (data.assignments) {\n attachAssignmentsToTasks(tasks, data.assignments);\n }\n\n this.$data.tasksStore.parse(tasks);\n var links = data.links || (data.collections ? data.collections.links : []);\n this.$data.linksStore.parse(links); //this._sync_links();\n\n this.callEvent(\"onParse\", []);\n this.render();\n };\n\n gantt._load_collections = function (collections) {\n var collections_loaded = false;\n\n for (var key in collections) {\n if (collections.hasOwnProperty(key)) {\n collections_loaded = true;\n var collection = collections[key]; // GS-1728. Create an empty serverList if it doesn't exist\n\n this.serverList[key] = this.serverList[key] || [];\n var arr = this.serverList[key];\n if (!arr) continue;\n arr.splice(0, arr.length); //clear old options\n\n for (var j = 0; j < collection.length; j++) {\n var option = collection[j];\n var obj = this.copy(option);\n obj.key = obj.value; // resulting option object\n\n for (var option_key in option) {\n if (option.hasOwnProperty(option_key)) {\n if (option_key == \"value\" || option_key == \"label\") continue;\n obj[option_key] = option[option_key]; // obj['value'] = option['value']\n }\n }\n\n arr.push(obj);\n }\n }\n }\n\n if (collections_loaded) this.callEvent(\"onOptionsLoad\", []);\n };\n\n gantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n return !task.$ignore;\n });\n\n function jsonParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.json = {\n parse: function parse(data) {\n if (!data) {\n jsonParseError(data);\n }\n\n if (typeof data == \"string\") {\n if ((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) != undefined) {\n try {\n data = JSON.parse(data);\n } catch (e) {\n jsonParseError(data);\n }\n } else {\n gantt.assert(false, \"JSON is not supported\");\n }\n }\n\n if (!data.data && !data.tasks) {\n jsonParseError(data);\n }\n\n if (data.dhx_security) gantt.security_key = data.dhx_security;\n return data;\n },\n serializeTask: function serializeTask(task) {\n return this._copyObject(task);\n },\n serializeLink: function serializeLink(link) {\n return this._copyLink(link);\n },\n _copyLink: function _copyLink(obj) {\n var copy = {};\n\n for (var key in obj) {\n copy[key] = obj[key];\n }\n\n return copy;\n },\n _copyObject: function _copyObject(obj) {\n var copy = {};\n\n for (var key in obj) {\n if (key.charAt(0) == \"$\") continue;\n copy[key] = obj[key];\n\n if (helpers.isDate(copy[key])) {\n copy[key] = gantt.defined(gantt.templates.xml_format) ? gantt.templates.xml_format(copy[key]) : gantt.templates.format_date(copy[key]);\n }\n }\n\n return copy;\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n gantt.eachTask(function (obj) {\n gantt.resetProjectDates(obj);\n tasks.push(this.serializeTask(obj));\n }, gantt.config.root_id, this);\n var rawLinks = gantt.getLinks();\n\n for (var i = 0; i < rawLinks.length; i++) {\n links.push(this.serializeLink(rawLinks[i]));\n }\n\n return {\n data: tasks,\n links: links\n };\n }\n };\n /*\r\n <data>\r\n \t<task id:\"some\" parent_id=\"0\" progress=\"0.5\">\r\n \t\t<text>My task 1</text>\r\n \t\t<start_date>16.08.2013</start_date>\r\n \t\t<end_date>22.08.2013</end_date>\r\n \t</task>\r\n \t<coll_options>\r\n \t\t<links>\r\n \t\t\t<link source='a1' target='b2' type='c3' />\r\n \t\t</links>\r\n \t</coll_options>\r\n </data>\r\n */\n\n function xmlParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An XML of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#xmldhtmlxgantt20 is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.xml = {\n _xmlNodeToJSON: function _xmlNodeToJSON(node, attrs_only) {\n var t = {};\n\n for (var i = 0; i < node.attributes.length; i++) {\n t[node.attributes[i].name] = node.attributes[i].value;\n }\n\n if (!attrs_only) {\n for (var i = 0; i < node.childNodes.length; i++) {\n var child = node.childNodes[i];\n if (child.nodeType == 1) t[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n }\n\n if (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n }\n\n return t;\n },\n _getCollections: function _getCollections(loader) {\n var collection = {};\n var opts = gantt.ajax.xpath(\"//coll_options\", loader);\n\n for (var i = 0; i < opts.length; i++) {\n var bind = opts[i].getAttribute(\"for\");\n var arr = collection[bind] = [];\n var itms = gantt.ajax.xpath(\".//item\", opts[i]);\n\n for (var j = 0; j < itms.length; j++) {\n var itm = itms[j];\n var attrs = itm.attributes;\n var obj = {\n key: itms[j].getAttribute(\"value\"),\n label: itms[j].getAttribute(\"label\")\n };\n\n for (var k = 0; k < attrs.length; k++) {\n var attr = attrs[k];\n if (attr.nodeName == \"value\" || attr.nodeName == \"label\") continue;\n obj[attr.nodeName] = attr.nodeValue;\n }\n\n arr.push(obj);\n }\n }\n\n return collection;\n },\n _getXML: function _getXML(text, loader, toptag) {\n toptag = toptag || \"data\";\n\n if (!loader.getXMLTopNode) {\n loader = gantt.ajax.parse(loader);\n }\n\n var xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\n\n if (!xml || xml.tagName != toptag) {\n xmlParseError(text);\n }\n\n var skey = xml.getAttribute(\"dhx_security\");\n if (skey) gantt.security_key = skey;\n return xml;\n },\n parse: function parse(text, loader) {\n loader = this._getXML(text, loader);\n var data = {};\n var evs = data.data = [];\n var xml = gantt.ajax.xpath(\"//task\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n evs[i] = this._xmlNodeToJSON(xml[i]);\n }\n\n data.collections = this._getCollections(loader);\n return data;\n },\n _copyLink: function _copyLink(obj) {\n return \"<item id='\" + obj.id + \"' source='\" + obj.source + \"' target='\" + obj.target + \"' type='\" + obj.type + \"' />\";\n },\n _copyObject: function _copyObject(obj) {\n return \"<task id='\" + obj.id + \"' parent='\" + (obj.parent || \"\") + \"' start_date='\" + obj.start_date + \"' duration='\" + obj.duration + \"' open='\" + !!obj.open + \"' progress='\" + obj.progress + \"' end_date='\" + obj.end_date + \"'><![CDATA[\" + obj.text + \"]]></task>\";\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n var json = gantt.json.serialize();\n\n for (var i = 0, len = json.data.length; i < len; i++) {\n tasks.push(this._copyObject(json.data[i]));\n }\n\n for (var i = 0, len = json.links.length; i < len; i++) {\n links.push(this._copyLink(json.links[i]));\n }\n\n return \"<data>\" + tasks.join(\"\") + \"<coll_options for='links'>\" + links.join(\"\") + \"</coll_options></data>\";\n }\n };\n gantt.oldxml = {\n parse: function parse(text, loader) {\n loader = gantt.xml._getXML(text, loader, \"projects\");\n var data = {\n collections: {\n links: []\n }\n };\n var evs = data.data = [];\n var xml = gantt.ajax.xpath(\"//task\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n evs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\n var parent = xml[i].parentNode;\n if (parent.tagName == \"project\") evs[i].parent = \"project-\" + parent.getAttribute(\"id\");else evs[i].parent = parent.parentNode.getAttribute(\"id\");\n }\n\n xml = gantt.ajax.xpath(\"//project\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n var ev = gantt.xml._xmlNodeToJSON(xml[i], true);\n\n ev.id = \"project-\" + ev.id;\n evs.push(ev);\n }\n\n for (var i = 0; i < evs.length; i++) {\n var ev = evs[i];\n ev.start_date = ev.startdate || ev.est;\n ev.end_date = ev.enddate;\n ev.text = ev.name;\n ev.duration = ev.duration / 8;\n ev.open = 1;\n if (!ev.duration && !ev.end_date) ev.duration = 1;\n if (ev.predecessortasks) data.collections.links.push({\n target: ev.id,\n source: ev.predecessortasks,\n type: gantt.config.links.finish_to_start\n });\n }\n\n return data;\n },\n serialize: function serialize() {\n gantt.message(\"Serialization to 'old XML' is not implemented\");\n }\n };\n\n gantt.serverList = function (name, array) {\n if (array) {\n this.serverList[name] = array.slice(0);\n } else if (!this.serverList[name]) {\n this.serverList[name] = [];\n }\n\n return this.serverList[name];\n };\n};","module.exports = function (gantt) {\n gantt.isReadonly = function (item) {\n if ((typeof item == \"number\" || typeof item == \"string\") && gantt.isTaskExists(item)) {\n item = gantt.getTask(item);\n }\n\n if (item && item[this.config.editable_property]) {\n return false;\n } else {\n return item && item[this.config.readonly_property] || this.config.readonly;\n }\n };\n};","module.exports = function (gantt) {\n gantt.getGridColumn = function (name) {\n var columns = gantt.config.columns;\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == name) return columns[i];\n }\n\n return null;\n };\n\n gantt.getGridColumns = function () {\n return gantt.config.columns.slice();\n };\n};","const SENSITIVITY = 20;\r\nconst TIMEOUT = 50;\r\nconst SCROLLSTEP = 10;\r\n\r\nexport default class ScrollableGrid {\r\n\tpublic getCurrentX;\r\n\tprivate $gantt;\r\n\tprivate $grid;\r\n\tprivate _dnd;\r\n\tprivate _scrollView;\r\n\tprivate _scrollOrder: 0 | 1 | -1 = 0;\r\n\r\n\tconstructor(params) {\r\n\t\tconst {gantt, grid, dnd, getCurrentX} = params;\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$grid = grid;\r\n\t\tthis._dnd = dnd;\r\n\t\tthis.getCurrentX = getCurrentX;\r\n\t\tthis._scrollView = this.$gantt.$ui.getView(this.$grid.$config.scrollX);\r\n\t\tthis.attachEvents();\r\n\t}\r\n\tattachEvents() {\r\n\t\tif (this.isScrollable()) {\r\n\t\t\tthis._dnd.attachEvent(\"onDragMove\", (obj, e) => {\r\n\t\t\t\tconst gridBoundingRect = this.$grid.$grid.getBoundingClientRect();\r\n\t\t\t\tconst maxLeft = gridBoundingRect.right;\r\n\t\t\t\tconst minLeft = gridBoundingRect.left;\r\n\t\t\t\tconst currentX = this.getCurrentX(e.clientX);\r\n\r\n\t\t\t\tif (currentX >= maxLeft - SENSITIVITY) {\r\n\t\t\t\t\tthis.autoscrollRight();\r\n\t\t\t\t\tthis.autoscrollStart();\r\n\t\t\t\t}\r\n\t\t\t\tif (currentX <= minLeft + SENSITIVITY) {\r\n\t\t\t\t\tthis.autoscrollLeft();\r\n\t\t\t\t\tthis.autoscrollStart();\r\n\t\t\t\t}\r\n\t\t\t\tif (currentX < maxLeft - SENSITIVITY && currentX > minLeft + SENSITIVITY) {\r\n\t\t\t\t\tthis.autoscrollStop();\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t\tthis._dnd.attachEvent(\"onDragEnd\", () => {\r\n\t\t\t\tthis.autoscrollStop();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tautoscrollStart() {\r\n\t\tif (this._scrollOrder === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst scrollStep = SCROLLSTEP * this._scrollOrder;\r\n\t\tconst scrollState = this._scrollView.getScrollState();\r\n\t\tthis._scrollView.scrollTo(scrollState.position + scrollStep);\r\n\t\tsetTimeout(() => { this.autoscrollStart(); }, TIMEOUT);\r\n\t}\r\n\tautoscrollRight() {\r\n\t\tthis._scrollOrder = 1;\r\n\t}\r\n\tautoscrollLeft() {\r\n\t\tthis._scrollOrder = -1;\r\n\t}\r\n\tautoscrollStop() {\r\n\t\tthis._scrollOrder = 0;\r\n\t}\r\n\tgetCorrection() {\r\n\t\tif (!this.isScrollable()) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn this._scrollView.getScrollState().position;\r\n\t}\r\n\tisScrollable() {\r\n\t\treturn !!this.$grid.$config.scrollable;\r\n\t}\r\n}","import * as domHelpers from \"../../utils/dom_helpers\";\r\nimport ScrollableGrid from \"./scrollable_grid\";\r\n\r\nconst COLUMN_ID_ATTR_NAME = \"data-column-id\";\r\n\r\nexport class ColumnsGridDnd {\r\n\tprivate $gantt;\r\n\tprivate $grid;\r\n\tprivate _dragX;\r\n\tprivate _dnd;\r\n\tprivate _originAutoscroll;\r\n\tprivate _scrollableGrid: ScrollableGrid;\r\n\tprivate _draggedCell;\r\n\tprivate _targetMarker = null;\r\n\tprivate _gridConfig;\r\n\tconstructor(gantt, grid) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$grid = grid;\r\n\t}\r\n\tinit() {\r\n\t\tconst DND = this.$gantt.$services.getService(\"dnd\");\r\n\t\tthis._dnd = new DND(this.$grid.$grid_scale, { updates_per_second: 60 });\r\n\t\tthis._scrollableGrid = new ScrollableGrid({\r\n\t\t\tgantt: this.$gantt,\r\n\t\t\tgrid: this.$grid,\r\n\t\t\tdnd: this._dnd,\r\n\t\t\tgetCurrentX: this.calculateCurrentPosition\r\n\t\t});\r\n\t\tthis.attachEvents();\r\n\t}\r\n\tattachEvents() {\r\n\t\tthis._dnd.attachEvent(\"onBeforeDragStart\", (obj, e) => {\r\n\t\t\tthis._draggedCell = this.$gantt.utils.dom.closest(e.target, \".gantt_grid_head_cell\");\r\n\t\t\tif(!this._draggedCell){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst columns = this.$grid.$getConfig().columns;\r\n\t\t\tconst columnName = this._draggedCell.getAttribute(COLUMN_ID_ATTR_NAME);\r\n\t\t\tlet draggedColumn;\r\n\t\t\tlet draggedIndex;\r\n\t\t\tcolumns.map(function(column, index){\r\n\t\t\t\tif(column.name === columnName){\r\n\t\t\t\t\tdraggedColumn = column;\r\n\t\t\t\t\tdraggedIndex = index;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (this.$grid.callEvent(\"onBeforeColumnDragStart\", [{ draggedColumn, draggedIndex}]) === false) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this._draggedCell || !draggedColumn) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis._gridConfig = this.$grid.$getConfig();\r\n\t\t\tthis._originAutoscroll = this.$gantt.config.autoscroll;\r\n\t\t\tthis.$gantt.config.autoscroll = false;\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tthis._dnd.attachEvent(\"onAfterDragStart\", (obj, e) => {\r\n\t\t\tif (!this._draggedCell) {\r\n\t\t\t\treturn; // GS-1333: don't try to reorder a column when we resize it\r\n\t\t\t}\r\n\t\t\tthis._dnd.config.column = this._draggedCell.getAttribute(COLUMN_ID_ATTR_NAME);\r\n\t\t\tthis._dnd.config.marker.innerHTML = this._draggedCell.outerHTML;\r\n\t\t\tthis._dnd.config.marker.classList.add(\"gantt_column_drag_marker\");\r\n\t\t\tthis._dnd.config.marker.style.height = this._gridConfig.scale_height + \"px\";\r\n\t\t\tthis._dnd.config.marker.style.lineHeight = this._gridConfig.scale_height + \"px\";\r\n\t\t\tthis._draggedCell.classList.add(\"gantt_grid_head_cell_dragged\");\r\n\t\t});\r\n\r\n\t\tthis._dnd.attachEvent(\"onDragMove\", (obj, e) => {\r\n\t\t\tif(!this._draggedCell){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._dragX = e.clientX;\r\n\t\t\tconst x = this.calculateCurrentPosition(e.clientX);\r\n\t\t\tconst columnIndexes = this.findColumnsIndexes();\r\n\t\t\tconst targetIndex = columnIndexes.targetIndex;\r\n\t\t\tconst draggedIndex = columnIndexes.draggedIndex;\r\n\t\t\tconst columns = this.$grid.$getConfig().columns;\r\n\r\n\t\t\tconst draggedColumn = columns[draggedIndex];\r\n\t\t\tconst targetColumn = columns[targetIndex];\r\n\t\t\tif (this.$grid.callEvent(\"onColumnDragMove\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]) === false) {\r\n\t\t\t\tthis.cleanTargetMarker();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis.setMarkerPosition(x);\r\n\t\t\tthis.drawTargetMarker(columnIndexes);\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tthis._dnd.attachEvent(\"onDragEnd\", () => {\r\n\t\t\tif (!this._draggedCell) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.$gantt.config.autoscroll = this._originAutoscroll;\r\n\t\t\tthis._draggedCell.classList.remove(\"gantt_grid_head_cell_dragged\");\r\n\t\t\tthis.cleanTargetMarker();\r\n\t\t\tthis.reorderColumns();\r\n\t\t});\r\n\r\n\t}\r\n\treorderColumns() {\r\n\t\tconst { targetIndex, draggedIndex } = this.findColumnsIndexes();\r\n\r\n\t\tconst columns = this.$grid.$getConfig().columns;\r\n\t\tconst draggedColumn = columns[draggedIndex];\r\n\t\tconst targetColumn = columns[targetIndex];\r\n\r\n\t\tif (this.$grid.callEvent(\"onBeforeColumnReorder\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (targetIndex === draggedIndex) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcolumns.splice(draggedIndex, 1);\r\n\t\tcolumns.splice(targetIndex, 0, draggedColumn);\r\n\t\tthis.$gantt.render();\r\n\t\tthis.$grid.callEvent(\"onAfterColumnReorder\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]);\r\n\t}\r\n\tfindColumnsIndexes() {\r\n\t\tconst draggedId = this._dnd.config.column;\r\n\t\tconst columns = this.$grid.$getConfig().columns;\r\n\t\tlet targetIndex: number;\r\n\t\tlet draggedIndex: number;\r\n\t\tlet xBefore: number;\r\n\t\tlet xAfter: number;\r\n\t\tconst currentColumn = { startX: 0, endX: 0 };\r\n\r\n\t\tlet start = 0;\r\n\t\tlet end = columns.length - 1;\r\n\t\tlet compare = (a, b) => a <= b;\r\n\t\tlet next = (index) => ++index;\r\n\t\tif (this.$gantt.config.rtl) {\r\n\t\t\tstart = columns.length - 1;\r\n\t\t\tend = 0;\r\n\t\t\tcompare = (a, b) => a >= b;\r\n\t\t\tnext = (index) => --index;\r\n\t\t}\r\n\r\n\t\tlet columnRelativePos: number;\r\n\r\n\t\tconst relativeX = this._dragX - this.$grid.$grid.getBoundingClientRect().left + this._scrollableGrid.getCorrection();\r\n\t\tfor (let i = start; compare(i, end); i = next(i)) {\r\n\t\t\tif (targetIndex !== undefined && draggedIndex !== undefined) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(!columns[i].hide) {\r\n\t\t\t\tcurrentColumn.startX = currentColumn.endX;\r\n\t\t\t\tcurrentColumn.endX += columns[i].width;\r\n\r\n\t\t\t\t// if drop on a column or drop after the last column\r\n\t\t\t\tif (relativeX >= currentColumn.startX && (relativeX <= currentColumn.endX || !compare(next(i), end))) {\r\n\t\t\t\t\ttargetIndex = i;\r\n\t\t\t\t\txBefore = currentColumn.startX;\r\n\t\t\t\t\txAfter = currentColumn.endX;\r\n\t\t\t\t\tcolumnRelativePos = (relativeX - currentColumn.startX) / (currentColumn.endX - currentColumn.startX);\r\n\t\t\t\t}\r\n\t\t\t\tif (draggedId === columns[i].name) {\r\n\t\t\t\t\tdraggedIndex = i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttargetIndex,\r\n\t\t\tdraggedIndex,\r\n\t\t\txBefore,\r\n\t\t\txAfter,\r\n\t\t\tcolumnRelativePos\r\n\t\t};\r\n\t}\r\n\tsetMarkerPosition(x: number, y: number = 10) {\r\n\t\tconst { marker } = this._dnd.config;\r\n\t\tconst gridOffset = this._dnd._obj.getBoundingClientRect();\r\n\t\tmarker.style.top = `${gridOffset.y + y}px`;\r\n\t\tmarker.style.left = `${x}px`;\r\n\t}\r\n\tcalculateCurrentPosition = (eventX: number) => {\r\n\t\tconst gridBoundingRect = this.$grid.$grid.getBoundingClientRect();\r\n\t\tconst maxLeft = gridBoundingRect.right;\r\n\t\tconst minLeft = gridBoundingRect.left;\r\n\t\tlet x = eventX;\r\n\t\tif (x > maxLeft) {\r\n\t\t\tx = maxLeft;\r\n\t\t}\r\n\t\tif (x < minLeft) {\r\n\t\t\tx = minLeft;\r\n\t\t}\r\n\t\treturn x;\r\n\t}\r\n\tdrawTargetMarker({ targetIndex, draggedIndex, xBefore, xAfter, columnRelativePos }) {\r\n\t\tif (!this._targetMarker) {\r\n\t\t\tthis._targetMarker = document.createElement(\"div\");\r\n\t\t\tdomHelpers.addClassName(this._targetMarker, \"gantt_grid_target_marker\");\r\n\t\t\tthis._targetMarker.style.display = \"none\";\r\n\t\t\tthis._targetMarker.style.height = `${this._gridConfig.scale_height}px`;\r\n\t\t}\r\n\r\n\t\t// marker can be detached after gantt.render\r\n\t\tif(!this._targetMarker.parentNode){\r\n\t\t\tthis.$grid.$grid_scale.appendChild(this._targetMarker);\r\n\t\t}\r\n\r\n\t\tlet nextPosition: number;\r\n\t\tif (targetIndex > draggedIndex) {\r\n\t\t\tnextPosition = xAfter;\r\n\t\t} else if (targetIndex < draggedIndex) {\r\n\t\t\tnextPosition = xBefore;\r\n\t\t} else {\r\n\t\t\tif(columnRelativePos > 0.5){\r\n\t\t\t\tnextPosition = xAfter;\r\n\t\t\t}else{\r\n\t\t\t\tnextPosition = xBefore;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._targetMarker.style.left = `${nextPosition}px`;\r\n\t\tthis._targetMarker.style.display = \"block\";\r\n\t}\r\n\tcleanTargetMarker() {\r\n\t\tif (this._targetMarker && this._targetMarker.parentNode) {\r\n\t\t\tthis.$grid.$grid_scale.removeChild(this._targetMarker);\r\n\t\t}\r\n\t\tthis._targetMarker = null;\r\n\t}\r\n}","import {ColumnsGridDnd} from \"./column_grid_dnd\";\r\nexport default ColumnsGridDnd;","var domHelpers = require(\"../utils/dom_helpers\");\n\nfunction createRowResizer(gantt, grid) {\n var _task_grid_row_resize = {\n row_before_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var store = grid.$config.rowStore;\n var el = domHelpers.locateAttribute(e, config.task_grid_row_resizer_attribute);\n if (!el) return false;\n var row_id = this.locate(e, config.task_grid_row_resizer_attribute),\n row = store.getItem(row_id);\n if (grid.callEvent(\"onBeforeRowResize\", [row]) === false) return false;\n }, gantt),\n row_after_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var row_id = this.locate(e, config.task_grid_row_resizer_attribute);\n dnd.config.marker.innerHTML = \"\";\n dnd.config.marker.className += \" gantt_row_grid_resize_area\";\n dnd.config.marker.style.width = grid.$grid.offsetWidth + \"px\";\n dnd.config.drag_id = row_id;\n }, gantt),\n row_drag_move: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var dd = dnd.config;\n var id = dd.drag_id,\n itemHeight = grid.getItemHeight(id),\n itemTop = grid.getItemTop(id) - obj.scrollTop;\n var pos = domHelpers.getNodePosition(grid.$grid_data),\n pointerPosition = parseInt(dd.marker.style.top, 10),\n markerStartPosition = itemTop + pos.y,\n marker_height = 0,\n minPointerPosition = config.min_task_grid_row_height;\n marker_height = pointerPosition - markerStartPosition;\n\n if (marker_height < minPointerPosition) {\n marker_height = minPointerPosition;\n }\n\n dd.marker.style.left = pos.x + \"px\";\n dd.marker.style.top = markerStartPosition - 1 + \"px\";\n dd.marker.style.height = Math.abs(marker_height) + 1 + \"px\";\n dd.marker_height = marker_height;\n grid.callEvent(\"onRowResize\", [id, store.getItem(id), marker_height + itemHeight]);\n return true;\n }, gantt),\n row_drag_end: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var dd = dnd.config;\n var id = dd.drag_id,\n item = store.getItem(id),\n oldItemHeight = grid.getItemHeight(id);\n var finalHeight = dd.marker_height;\n if (grid.callEvent(\"onBeforeRowResizeEnd\", [id, item, finalHeight]) === false) return;\n if (item.row_height == finalHeight) return;\n item.row_height = finalHeight;\n gantt.updateTask(id);\n grid.callEvent(\"onAfterRowResize\", [id, item, oldItemHeight, finalHeight]);\n this.render();\n }, gantt)\n }; // calls the initialization of the D'n'D events for resize elements\n\n var _init_resize = function _init_resize() {\n var DnD = gantt.$services.getService(\"dnd\");\n var config = grid.$getConfig();\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(config.dnd_sensitivity)) dnd.config.sensitivity = config.dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_before_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onAfterDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_after_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragMove\", function (obj, e) {\n return _task_grid_row_resize.row_drag_move(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragEnd\", function (obj, e) {\n return _task_grid_row_resize.row_drag_end(dnd, obj, e);\n });\n };\n\n return {\n init: _init_resize\n };\n}\n\nmodule.exports = createRowResizer;","function createHelper(view) {\n var cachedRowHeight = -1;\n var canUseSimpleCalc = -1;\n return {\n resetCache: function resetCache() {\n cachedRowHeight = -1;\n canUseSimpleCalc = -1;\n },\n _getRowHeight: function _getRowHeight() {\n if (cachedRowHeight === -1) {\n cachedRowHeight = view.$getConfig().row_height;\n }\n\n return cachedRowHeight;\n },\n _refreshState: function _refreshState() {\n this.resetCache();\n canUseSimpleCalc = true;\n var store = view.$config.rowStore;\n\n if (!store) {\n return;\n }\n\n var globalRowHeight = this._getRowHeight();\n\n for (var i = 0; i < store.fullOrder.length; i++) {\n var item = store.getItem(store.fullOrder[i]); // GS-1491: ignore the task when it is filtered:\n\n if (!item) {\n continue;\n }\n\n if (item.row_height && item.row_height !== globalRowHeight) {\n canUseSimpleCalc = false;\n break;\n }\n }\n },\n canUseSimpleCalculation: function canUseSimpleCalculation() {\n if (canUseSimpleCalc === -1) {\n this._refreshState();\n }\n\n return canUseSimpleCalc;\n },\n\n /**\r\n * Get top coordinate by row index (order)\r\n * @param {number} index\r\n */\n getRowTop: function getRowTop(index) {\n var store = view.$config.rowStore;\n\n if (!store) {\n return 0;\n }\n\n return index * this._getRowHeight();\n },\n\n /**\r\n * Get height of the item by item id\r\n * @param {*} itemId\r\n */\n getItemHeight: function getItemHeight(itemId) {\n return this._getRowHeight();\n },\n\n /**\r\n * Get total height of items\r\n */\n getTotalHeight: function getTotalHeight() {\n if (view.$config.rowStore) {\n var store = view.$config.rowStore;\n return store.countVisible() * this._getRowHeight();\n } else {\n return 0;\n }\n },\n\n /**\r\n * Get item by top position\r\n * @param {*} top\r\n */\n getItemIndexByTopPosition: function getItemIndexByTopPosition(top) {\n if (view.$config.rowStore) {\n return Math.floor(top / this._getRowHeight());\n } else {\n return 0;\n }\n }\n };\n}\n\nmodule.exports = createHelper;","function createResizer(gantt, grid) {\n return {\n init: function init() {},\n doOnRender: function doOnRender() {}\n };\n}\n\nmodule.exports = createResizer;","var Grid = require(\"./ui/grid/grid\");\n\nmodule.exports = function (gantt) {\n require(\"./grid_column_api.gpl\")(gantt);\n\n Grid.prototype.getGridColumns = function () {\n var config = this.$getConfig();\n var columns = config.columns,\n visibleColumns = [];\n\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].hide) visibleColumns.push(columns[i]);\n }\n\n return visibleColumns;\n };\n};","module.exports = function (gantt) {\n var TreeDataStore = require(\"./datastore/treedatastore\");\n\n var loadedBranches = {};\n gantt.attachEvent(\"onClearAll\", function () {\n loadedBranches = {};\n });\n var oldHasChildren = TreeDataStore.prototype.hasChild;\n\n gantt.$data.tasksStore.hasChild = function (id) {\n if (!gantt.config.branch_loading) {\n return oldHasChildren.call(this, id);\n } else {\n if (oldHasChildren.call(this, id)) return true;\n\n if (this.exists(id)) {\n return this.getItem(id)[gantt.config.branch_loading_property];\n }\n }\n\n return false;\n };\n\n function needLoading(id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n var alreadyLoaded = !!loadedBranches[id]; // call ajax only if branch has children\n\n if (!alreadyLoaded && !gantt.getChildren(id).length && gantt.hasChild(id)) {\n return true;\n }\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onTaskOpened\", function (id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n // call ajax only if branch has children\n if (needLoading(id)) {\n var url = gantt._load_url;\n url = url.replace(/(\\?|&)?parent_id=.+&?/, \"\");\n var param = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n var y = gantt.getScrollState().y || 0;\n var requestData = {\n taskId: id,\n url: url + param + \"parent_id=\" + encodeURIComponent(id)\n };\n\n if (gantt.callEvent(\"onBeforeBranchLoading\", [requestData]) === false) {\n return;\n }\n\n gantt.load(requestData.url, this._load_type, function () {\n if (y) {\n gantt.scrollTo(null, y);\n }\n\n gantt.callEvent(\"onAfterBranchLoading\", [requestData]);\n });\n loadedBranches[id] = true;\n }\n }\n });\n};","export default function(gantt: any){\r\n\r\n\tgantt.ext = gantt.ext || {};\r\n\tgantt.config.show_empty_state = false;\r\n\r\n\tgantt.ext.emptyStateElement = gantt.ext.emptyStateElement || {\r\n\t\tisEnabled() {\r\n\t\t\treturn gantt.config.show_empty_state === true;\r\n\t\t},\r\n\t\tisGanttEmpty(){\r\n\t\t\treturn !gantt.getTaskByTime().length;\r\n\t\t},\r\n\t\trenderContent(container){\r\n\t\t\tconst placeholderTextElement = `<div class='gantt_empty_state_text'>\r\n <div class='gantt_empty_state_text_link' data-empty-state-create-task>${gantt.locale.labels.empty_state_text_link}</div>\r\n <div class='gantt_empty_state_text_description'>${gantt.locale.labels.empty_state_text_description}</div>\r\n </div>`;\r\n\t\t\tconst placeholderImageElement = \"<div class='gantt_empty_state_image'></div>\";\r\n\r\n\t\t\tconst placeholderContainer = `<div class='gantt_empty_state'>${placeholderImageElement}${placeholderTextElement}</div>`;\r\n\t\t\tcontainer.innerHTML = placeholderContainer;\r\n\t\t},\r\n\r\n\t\tclickEvents: [],\r\n\t\tattachAddTaskEvent(){\r\n\t\t\tconst id = gantt.attachEvent(\"onEmptyClick\", function(e){\r\n\t\t\t\tconst domHelpers = gantt.utils.dom;\r\n\t\t\t\tconst gridPlaceholder = domHelpers.closest(e.target, \"[data-empty-state-create-task]\");\r\n\t\t\t\tif (gridPlaceholder){\r\n\t\t\t\t\tgantt.createTask({\r\n\t\t\t\t\t\tid: gantt.uid(),\r\n\t\t\t\t\t\ttext: \"New Task\"\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.clickEvents.push(id);\r\n\t\t},\r\n\t\tdetachAddTaskEvents(){\r\n\t\t\tthis.clickEvents.forEach(function(event){\r\n\t\t\t\tgantt.detachEvent(event);\r\n\t\t\t});\r\n\t\t\tthis.clickEvents = [];\r\n\t\t},\r\n\r\n\t\tgetContainer(){\r\n\t\t\tif (gantt.$container) {\r\n\t\t\t\tconst domHelpers = gantt.utils.dom;\r\n\t\t\t\tif (gantt.$container.contains(gantt.$grid_data)) {\r\n\t\t\t\t\treturn domHelpers.closest(gantt.$grid_data, \".gantt_layout_content\");\r\n\t\t\t\t}\r\n\t\t\t\tif (gantt.$container.contains(gantt.$task_data)){\r\n\t\t\t\t\treturn domHelpers.closest(gantt.$task_data, \".gantt_layout_content\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tgetNode(){\r\n\t\t\tconst container = this.getContainer();\r\n\t\t\tif (!container){\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tconst emptyStateElementNode = container.querySelector(\".gantt_empty_state_wrapper\");\r\n\t\t\treturn emptyStateElementNode;\r\n\t\t},\r\n\r\n\t\tshow(){\r\n\t\t\tconst container = this.getContainer();\r\n\t\t\tif (!container && this.isGanttEmpty()){\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tconst wrapper = document.createElement(\"div\");\r\n\t\t\twrapper.className = \"gantt_empty_state_wrapper\";\r\n\t\t\twrapper.style.marginTop = (gantt.config.scale_height - container.offsetHeight) + \"px\";\r\n\t\t\tconst oldNodes = gantt.$container.querySelectorAll(\".gantt_empty_state_wrapper\");\r\n\t\t\t// for IE11\r\n\t\t\tArray.prototype.forEach.call(oldNodes, function(node){\r\n\t\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\t});\r\n\r\n\t\t\tthis.detachAddTaskEvents();\r\n\t\t\tthis.attachAddTaskEvent();\r\n\r\n\t\t\tcontainer.appendChild(wrapper);\r\n\t\t\tthis.renderContent(wrapper);\r\n\t\t},\r\n\t\thide(){\r\n\t\t\tconst emptyStateElementNode = this.getNode();\r\n\t\t\tif (emptyStateElementNode){\r\n\t\t\t\temptyStateElementNode.parentNode.removeChild(emptyStateElementNode);\r\n\t\t\t} else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tinit(){ }\r\n\t};\r\n\r\n\tgantt.attachEvent(\"onDataRender\", function() {\r\n\t\tconst emptyStateElement = gantt.ext.emptyStateElement;\r\n\t\tif (emptyStateElement.isEnabled() && emptyStateElement.isGanttEmpty()) {\r\n\t\t\temptyStateElement.show();\r\n\t\t} else {\r\n\t\t\temptyStateElement.hide();\r\n\t\t}\r\n\t});\r\n\r\n\r\n\r\n\r\n}\r\n","export default class LinkFormatterSimple implements ILinkFormatter {\r\n\tstatic create = (settings: ILinkFormatterConfig = null, gantt: any): LinkFormatterSimple => {\r\n\t\treturn new LinkFormatterSimple(gantt);\r\n\t}\r\n\tprotected _linkReg: RegExp;\r\n\tprotected _gantt: any;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis._linkReg = /^[0-9\\.]+/;\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\r\n\tformat = (link: ILink) : string => {\r\n\t\tconst wbs = this._getWBSCode(link.source);\r\n\t\treturn wbs;\r\n\t}\r\n\r\n\tcanParse = (value: string) : boolean => {\r\n\t\treturn this._linkReg.test(value);\r\n\t}\r\n\tparse = (value: string) : ILink => {\r\n\t\tif(!this.canParse(value)){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst linkPart = this._linkReg.exec(value)[0].trim();\r\n\r\n\t\tconst source = this._findSource(linkPart) || null;\r\n\r\n\t\treturn {\r\n\t\t\tid: undefined,\r\n\t\t\tsource,\r\n\t\t\ttarget: null,\r\n\t\t\ttype: this._gantt.config.links.finish_to_start,\r\n\t\t\tlag: 0\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _getWBSCode = (source: number | string) => {\r\n\t\tconst pred = this._gantt.getTask(source);\r\n\t\treturn this._gantt.getWBSCode(pred);\r\n\t}\r\n\r\n\tprotected _findSource = (value: string) => {\r\n\t\tconst reqTemplate = new RegExp(\"^[0-9\\.]+\", \"i\");\r\n\t\tif(reqTemplate.exec(value)){\r\n\t\t\tconst wbs = reqTemplate.exec(value)[0];\r\n\t\t\tconst task = this._gantt.getTaskByWBSCode(wbs);\r\n\t\t\tif(task){\r\n\t\t\t\treturn task.id;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}","var DurationFormatter = require(\"../common/duration_formatter\")[\"default\"];\n\nvar LinkFormatter = require(\"../common/link_formatter\")[\"default\"];\n\nmodule.exports = function (gantt) {\n gantt.ext.formatters = {\n durationFormatter: function durationFormatter(settings) {\n if (!settings) {\n settings = {};\n }\n\n if (!settings.store) {\n settings.store = gantt.config.duration_unit;\n }\n\n if (!settings.enter) {\n settings.enter = gantt.config.duration_unit;\n }\n\n return DurationFormatter.create(settings, gantt);\n },\n linkFormatter: function linkFormatter(settings) {\n return LinkFormatter.create(settings, gantt);\n }\n };\n};","module.exports = function (gantt) {\n function isEnabled() {\n return gantt.config.auto_types && // if enabled\n gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project; // and supported\n }\n\n function callIfEnabled(callback) {\n return function () {\n if (!isEnabled()) {\n return true;\n }\n\n return callback.apply(this, arguments);\n };\n }\n\n function checkTaskType(id, changedTypes) {\n var task = gantt.getTask(id);\n var targetType = getTaskTypeToUpdate(task);\n\n if (targetType !== false && gantt.getTaskType(task) !== targetType) {\n changedTypes.$needsUpdate = true;\n changedTypes[task.id] = {\n task: task,\n type: targetType\n };\n }\n }\n\n function getUpdatedTypes(id, changedTypes) {\n changedTypes = changedTypes || {};\n checkTaskType(id, changedTypes);\n gantt.eachParent(function (parent) {\n checkTaskType(parent.id, changedTypes);\n }, id);\n return changedTypes;\n }\n\n function applyChanges(changedTypes) {\n for (var i in changedTypes) {\n if (changedTypes[i] && changedTypes[i].task) {\n var task = changedTypes[i].task;\n task.type = changedTypes[i].type;\n gantt.updateTask(task.id);\n }\n }\n }\n\n function updateParentTypes(startId) {\n if (gantt.getState().group_mode) {\n return;\n }\n\n var changedTypes = getUpdatedTypes(startId);\n\n if (changedTypes.$needsUpdate) {\n gantt.batchUpdate(function () {\n applyChanges(changedTypes);\n });\n }\n }\n\n var delTaskParent;\n\n function updateTaskType(task, targetType) {\n if (!gantt.getState().group_mode) {\n task.type = targetType;\n gantt.updateTask(task.id);\n }\n }\n\n function getTaskTypeToUpdate(task) {\n var allTypes = gantt.config.types;\n var hasChildren = gantt.hasChild(task.id);\n var taskType = gantt.getTaskType(task.type);\n\n if (hasChildren && taskType === allTypes.task) {\n return allTypes.project;\n }\n\n if (!hasChildren && taskType === allTypes.project) {\n return allTypes.task;\n }\n\n return false;\n }\n\n var isParsingDone = true;\n gantt.attachEvent(\"onParse\", callIfEnabled(function () {\n isParsingDone = false;\n\n if (gantt.getState().group_mode) {\n return;\n }\n\n gantt.batchUpdate(function () {\n gantt.eachTask(function (task) {\n var targetType = getTaskTypeToUpdate(task);\n\n if (targetType !== false) {\n updateTaskType(task, targetType);\n }\n });\n });\n isParsingDone = true;\n }));\n gantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function (id) {\n if (isParsingDone) {\n updateParentTypes(id);\n }\n }));\n gantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(function (id) {\n if (isParsingDone) {\n updateParentTypes(id);\n }\n }));\n\n function updateAfterRemoveChild(id) {\n if (id != gantt.config.root_id && gantt.isTaskExists(id)) {\n updateParentTypes(id);\n }\n }\n\n gantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function (id, task) {\n delTaskParent = gantt.getParent(id);\n return true;\n }));\n gantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function (id, task) {\n updateAfterRemoveChild(delTaskParent);\n }));\n var originalRowDndParent;\n gantt.attachEvent(\"onRowDragStart\", callIfEnabled(function (id, target, e) {\n originalRowDndParent = gantt.getParent(id);\n return true;\n }));\n gantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function (id, target) {\n updateAfterRemoveChild(originalRowDndParent);\n updateParentTypes(id);\n }));\n var originalMoveTaskParent;\n gantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function (sid, parent, tindex) {\n originalMoveTaskParent = gantt.getParent(sid);\n return true;\n }));\n gantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function (id, parent, tindex) {\n if (document.querySelector(\".gantt_drag_marker\")) {\n // vertical dnd in progress\n return;\n }\n\n updateAfterRemoveChild(originalMoveTaskParent);\n updateParentTypes(id);\n }));\n};","module.exports = function addPlaceholder(gantt) {\n function isEnabled() {\n return gantt.config.placeholder_task;\n }\n\n function callIfEnabled(callback) {\n return function () {\n if (!isEnabled()) {\n return true;\n }\n\n return callback.apply(this, arguments);\n };\n }\n\n function silenceDataProcessor(dataProcessor) {\n if (dataProcessor && !dataProcessor._silencedPlaceholder) {\n dataProcessor._silencedPlaceholder = true;\n dataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function (id, state, data) {\n if (data.type == gantt.config.types.placeholder) {\n dataProcessor.setUpdated(id, false);\n return false;\n }\n\n return true;\n }));\n }\n }\n\n function insertPlaceholder() {\n var placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\n if (!placeholders.length || !gantt.isTaskExists(placeholders[0].id)) {\n var placeholder = {\n unscheduled: true,\n type: gantt.config.types.placeholder,\n duration: 0,\n text: gantt.locale.labels.new_task\n };\n\n if (gantt.callEvent(\"onTaskCreated\", [placeholder]) === false) {\n return;\n }\n\n gantt.addTask(placeholder);\n }\n }\n\n function afterEdit(id) {\n var item = gantt.getTask(id);\n\n if (item.type == gantt.config.types.placeholder) {\n if (item.start_date && item.end_date && item.unscheduled) {\n item.unscheduled = false;\n }\n\n gantt.batchUpdate(function () {\n var newTask = gantt.copy(item);\n gantt.silent(function () {\n gantt.deleteTask(item.id);\n });\n delete newTask[\"!nativeeditor_status\"];\n newTask.type = gantt.config.types.task;\n newTask.id = gantt.uid();\n gantt.addTask(newTask); //insertPlaceholder();\n });\n }\n }\n\n gantt.config.types.placeholder = \"placeholder\";\n gantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\n var ready = false;\n gantt.attachEvent(\"onGanttReady\", function () {\n if (ready) {\n return;\n }\n\n ready = true;\n gantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\n gantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function (id, task) {\n if (task.type != gantt.config.types.placeholder) {\n var placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n placeholders.forEach(function (p) {\n gantt.silent(function () {\n if (gantt.isTaskExists(p.id)) gantt.deleteTask(p.id);\n });\n });\n insertPlaceholder();\n }\n }));\n gantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\n });\n\n function isPlaceholderTask(taskId) {\n if (gantt.config.types.placeholder && gantt.isTaskExists(taskId)) {\n var task = gantt.getTask(taskId);\n\n if (task.type == gantt.config.types.placeholder) {\n return true;\n }\n }\n\n return false;\n }\n\n function isPlaceholderLink(link) {\n if (isPlaceholderTask(link.source) || isPlaceholderTask(link.target)) {\n return true;\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (isPlaceholderLink(link)) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeLinkAdd\", function (id, link) {\n if (isPlaceholderLink(link)) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeUndoStack\", function (action) {\n for (var i = 0; i < action.commands.length; i++) {\n var command = action.commands[i];\n\n if (command.entity === \"task\" && command.value.type === gantt.config.types.placeholder) {\n action.commands.splice(i, 1);\n i--;\n }\n }\n\n return true;\n });\n};","module.exports = function (gantt) {\n var resourceAssignmentsProperty = \"$resourceAssignments\";\n gantt.config.resource_assignment_store = \"resourceAssignments\";\n gantt.config.process_resource_assignments = true;\n var resourceAssignmentFormats = {\n auto: \"auto\",\n singleValue: \"singleValue\",\n valueArray: \"valueArray\",\n resourceValueArray: \"resourceValueArray\",\n assignmentsArray: \"assignmentsArray\"\n };\n var resourceAssignmentFormat = resourceAssignmentFormats.auto; //\"primitiveSingle\";//\"primitive\";//\"object\"|\"assignment\"\n\n var assignmentModes = {\n fixedDates: \"fixedDates\",\n fixedDuration: \"fixedDuration\",\n \"default\": \"default\"\n };\n\n function initAssignmentFields(item, task) {\n if (item.start_date) {\n item.start_date = gantt.date.parseDate(item.start_date, \"parse_date\");\n } else {\n item.start_date = null;\n }\n\n if (item.end_date) {\n item.end_date = gantt.date.parseDate(item.end_date, \"parse_date\");\n } else {\n item.end_date = null;\n }\n\n var delay = Number(item.delay);\n var initDelay = false;\n\n if (!isNaN(delay)) {\n item.delay = delay;\n } else {\n item.delay = 0;\n initDelay = true;\n }\n\n if (!gantt.defined(item.value)) {\n item.value = null;\n }\n\n if (!item.task_id || !item.resource_id) {\n return false;\n }\n\n item.mode = item.mode || assignmentModes[\"default\"];\n\n if (item.mode === assignmentModes.fixedDuration) {\n if (isNaN(Number(item.duration))) {\n task = task || gantt.getTask(item.task_id);\n item.duration = gantt.calculateDuration({\n start_date: item.start_date,\n end_date: item.end_date,\n id: task\n });\n }\n\n if (initDelay) {\n task = task || gantt.getTask(item.task_id);\n item.delay = gantt.calculateDuration({\n start_date: task.start_date,\n end_date: item.start_date,\n id: task\n });\n }\n }\n\n if (item.mode !== assignmentModes.fixedDates && (task || gantt.isTaskExists(item.task_id))) {\n task = task || gantt.getTask(item.task_id);\n\n var timing = _assignmentTimeFromTask(item, task);\n\n item.start_date = timing.start_date;\n item.end_date = timing.end_date;\n item.duration = timing.duration;\n }\n } // gantt init\n\n\n var resourceAssignmentsStore = gantt.createDatastore({\n name: gantt.config.resource_assignment_store,\n initItem: function initItem(item) {\n if (!item.id) {\n item.id = gantt.uid();\n }\n\n initAssignmentFields(item);\n return item;\n }\n });\n gantt.$data.assignmentsStore = resourceAssignmentsStore;\n\n function _assignmentTimeFromTask(assignment, task) {\n if (assignment.mode === assignmentModes.fixedDates) {\n return {\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n duration: assignment.duration\n };\n } else {\n var start = assignment.delay ? gantt.calculateEndDate({\n start_date: task.start_date,\n duration: assignment.delay,\n task: task\n }) : new Date(task.start_date);\n var end;\n var duration;\n\n if (assignment.mode === assignmentModes.fixedDuration) {\n end = gantt.calculateEndDate({\n start_date: start,\n duration: assignment.duration,\n task: task\n });\n duration = assignment.duration;\n } else {\n end = new Date(task.end_date);\n duration = task.duration - assignment.delay;\n }\n }\n\n return {\n start_date: start,\n end_date: end,\n duration: duration\n };\n } // data loading\n\n\n function _makeAssignmentsFromTask(task) {\n var property = gantt.config.resource_property;\n var assignments = task[property];\n var resourceAssignments = [];\n var detectFormat = resourceAssignmentFormat === resourceAssignmentFormats.auto;\n\n if (gantt.defined(assignments) && assignments) {\n if (!Array.isArray(assignments)) {\n assignments = [assignments];\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.singleValue;\n detectFormat = false;\n }\n }\n\n var usedIds = {};\n assignments.forEach(function (res) {\n if (!res.resource_id) {\n // when resource is a string/number\n res = {\n resource_id: res\n };\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.valueArray;\n detectFormat = false;\n } //\tisSimpleArray = true;\n\n }\n\n if (detectFormat) {\n if (res.id && res.resource_id) {\n resourceAssignmentFormat = resourceAssignmentFormats.assignmentsArray;\n detectFormat = false;\n } else {\n resourceAssignmentFormat = resourceAssignmentFormats.resourceValueArray;\n detectFormat = false;\n }\n }\n\n var defaultMode = assignmentModes[\"default\"];\n\n if (!res.mode) {\n if (res.start_date && res.end_date || res.start_date && res.duration) {\n defaultMode = assignmentModes.fixedDuration;\n }\n }\n\n var id;\n\n if (!res.id && res.$id && !usedIds[res.$id]) {\n id = res.$id;\n } else if (res.id && !usedIds[res.id]) {\n id = res.id;\n } else {\n id = gantt.uid();\n }\n\n usedIds[id] = true;\n var assignment = {\n id: id,\n start_date: res.start_date,\n duration: res.duration,\n end_date: res.end_date,\n delay: res.delay,\n task_id: task.id,\n resource_id: res.resource_id,\n value: res.value,\n mode: res.mode || defaultMode\n };\n\n if (!(assignment.start_date && assignment.start_date.getMonth && assignment.end_date && assignment.end_date.getMonth && typeof assignment.duration === \"number\")) {\n initAssignmentFields(assignment, task);\n }\n\n resourceAssignments.push(assignment);\n });\n }\n\n return resourceAssignments;\n }\n\n function _updateTaskBack(taskId) {\n // GS-1493. In some cases, the resource assignment store has the tasks that no longer exist\n if (!gantt.isTaskExists(taskId)) {\n return;\n }\n\n var task = gantt.getTask(taskId);\n var assignments = gantt.getTaskAssignments(task.id);\n\n _assignAssignments(task, assignments);\n }\n\n function _assignAssignments(task, assignments) {\n assignments.sort(function (a, b) {\n if (a.start_date && b.start_date && a.start_date.valueOf() != b.start_date.valueOf()) {\n return a.start_date - b.start_date;\n } else {\n return 0;\n }\n });\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray) {\n task[gantt.config.resource_property] = assignments;\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n task[gantt.config.resource_property] = assignments.map(function (a) {\n return {\n $id: a.id,\n start_date: a.start_date,\n duration: a.duration,\n end_date: a.end_date,\n delay: a.delay,\n resource_id: a.resource_id,\n value: a.value,\n mode: a.mode\n };\n });\n }\n\n task[resourceAssignmentsProperty] = assignments;\n }\n\n function _loadAssignmentsFromTask(task) {\n var assignments = _makeAssignmentsFromTask(task);\n\n var taskAssignments = [];\n assignments.forEach(function (a) {\n a.id = a.id || gantt.uid(); //var newId = resourceAssignmentsStore.addItem(a);\n\n taskAssignments.push(a);\n });\n return assignments;\n }\n\n function diffAssignments(taskValues, assignmentsStoreValues) {\n var result = {\n inBoth: [],\n inTaskNotInStore: [],\n inStoreNotInTask: []\n };\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.singleValue) {\n var taskOwner = taskValues[0];\n var ownerId = taskOwner ? taskOwner.resource_id : null;\n var foundOwnerAssignment = false;\n assignmentsStoreValues.forEach(function (a) {\n if (a.resource_id != ownerId) {\n result.inStoreNotInTask.push(a);\n } else if (a.resource_id == ownerId) {\n result.inBoth.push({\n store: a,\n task: taskOwner\n });\n foundOwnerAssignment = true;\n }\n });\n\n if (!foundOwnerAssignment && taskOwner) {\n result.inTaskNotInStore.push(taskOwner);\n }\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.valueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.resource_id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.resource_id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n if (processedIds[a.resource_id]) {\n return;\n }\n\n processedIds[a.resource_id] = true;\n var inTask = taskSearch[a.resource_id];\n var inStore = storeSearch[a.resource_id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray || resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.id || a.$id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n var id = a.id || a.$id;\n\n if (processedIds[id]) {\n return;\n }\n\n processedIds[id] = true;\n var inTask = taskSearch[id];\n var inStore = storeSearch[id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n }\n\n return result;\n }\n\n function assignmentHasChanged(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n if (String(source[i]) !== String(target[i])) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function updateAssignment(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n target[i] = source[i];\n }\n }\n }\n\n function _syncAssignments(task, storeAssignments) {\n var tasksAssignments = _makeAssignmentsFromTask(task);\n\n var diff = diffAssignments(tasksAssignments, storeAssignments);\n diff.inStoreNotInTask.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n diff.inTaskNotInStore.forEach(function (a) {\n resourceAssignmentsStore.addItem(a);\n });\n diff.inBoth.forEach(function (a) {\n if (assignmentHasChanged(a.task, a.store)) {\n updateAssignment(a.task, a.store);\n resourceAssignmentsStore.updateItem(a.store.id);\n } else {\n if (a.task.start_date && a.task.end_date && a.task.mode !== assignmentModes.fixedDates) {\n var timing = _assignmentTimeFromTask(a.store, task);\n\n if (a.store.start_date.valueOf() != timing.start_date.valueOf() || a.store.end_date.valueOf() != timing.end_date.valueOf()) {\n a.store.start_date = timing.start_date;\n a.store.end_date = timing.end_date;\n a.store.duration = timing.duration;\n resourceAssignmentsStore.updateItem(a.store.id);\n }\n }\n }\n });\n\n _updateTaskBack(task.id);\n }\n\n function _syncOnTaskUpdate(task) {\n var storeAssignments = task[resourceAssignmentsProperty] || resourceAssignmentsStore.find(function (a) {\n return a.task_id == task.id;\n });\n\n _syncAssignments(task, storeAssignments);\n }\n\n function _syncOnTaskDelete(ids) {\n var idsSearch = {};\n ids.forEach(function (id) {\n idsSearch[id] = true;\n });\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return idsSearch[a.task_id];\n });\n taskResources.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (gantt.config.process_resource_assignments) {\n gantt.attachEvent(\"onParse\", function () {\n gantt.silent(function () {\n resourceAssignmentsStore.clearAll();\n var totalAssignments = [];\n gantt.eachTask(function (task) {\n if (task.type === gantt.config.types.project) {\n return;\n }\n\n var assignments = _loadAssignmentsFromTask(task);\n\n _assignAssignments(task, assignments);\n\n assignments.forEach(function (a) {\n totalAssignments.push(a);\n });\n });\n resourceAssignmentsStore.parse(totalAssignments);\n });\n });\n var batchUpdate = false;\n var needUpdate = false;\n var needUpdateFor = {};\n var undoBatchCancel = false;\n gantt.attachEvent(\"onBeforeBatchUpdate\", function () {\n batchUpdate = true;\n });\n gantt.attachEvent(\"onAfterBatchUpdate\", function () {\n if (needUpdate) {\n var assignmentsHash = {};\n\n for (var i in needUpdateFor) {\n assignmentsHash[i] = gantt.getTaskAssignments(needUpdateFor[i].id);\n }\n\n for (var i in needUpdateFor) {\n _syncAssignments(needUpdateFor[i], assignmentsHash[i]);\n }\n }\n\n needUpdate = false;\n batchUpdate = false;\n needUpdateFor = {};\n });\n gantt.attachEvent(\"onTaskCreated\", function (item) {\n var assignments = _loadAssignmentsFromTask(item);\n\n resourceAssignmentsStore.parse(assignments);\n\n _assignAssignments(item, assignments);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskUpdate\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else if (!item.unscheduled) {\n _syncOnTaskUpdate(item);\n }\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n /*\tgantt.attachEvent(\"onRowDragMove\", function (id) {\r\n \t\t_syncOnTaskUpdate(gantt.getTask(id));\r\n \t});*/\n\n gantt.attachEvent(\"onRowDragEnd\", function (id) {\n _syncOnTaskUpdate(gantt.getTask(id));\n });\n gantt.$data.tasksStore.attachEvent(\"onAfterDeleteConfirmed\", function (id, item) {\n var deleteIds = [id];\n gantt.eachTask(function (task) {\n deleteIds.push(task.id);\n }, id);\n\n _syncOnTaskDelete(deleteIds);\n });\n gantt.$data.tasksStore.attachEvent(\"onClearAll\", function () {\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n resourceAssignmentsStore.clearAll();\n return true;\n });\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return a.task_id == id;\n });\n taskResources.forEach(function (a) {\n a.task_id = new_id;\n resourceAssignmentsStore.updateItem(a.id);\n });\n\n _updateTaskBack(new_id); //any custom logic here\n\n }); // GS-2144. When we Undo something, the cache should be reset\n // during the `onStoreUpdated` event to properly update the assignments\n\n gantt.attachEvent(\"onBeforeUndo\", function (action) {\n undoBatchCancel = true;\n return true;\n });\n gantt.attachEvent(\"onAfterUndo\", function (action) {\n undoBatchCancel = true;\n });\n var resourceAssignmentsCache = null;\n var resourceTaskAssignmentsCache = null;\n var taskAssignmentsCache = null;\n resourceAssignmentsStore.attachEvent(\"onStoreUpdated\", function resetCache() {\n if (batchUpdate && !undoBatchCancel) {\n return true;\n }\n\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n return true;\n });\n\n gantt.getResourceAssignments = function (resourceId, taskId) {\n var searchTaskId = gantt.defined(taskId) && taskId !== null;\n\n if (resourceAssignmentsCache === null) {\n resourceAssignmentsCache = {};\n resourceTaskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!resourceAssignmentsCache[a.resource_id]) {\n resourceAssignmentsCache[a.resource_id] = [];\n }\n\n resourceAssignmentsCache[a.resource_id].push(a);\n var resourceTaskCacheKey = a.resource_id + \"-\" + a.task_id;\n\n if (!resourceTaskAssignmentsCache[resourceTaskCacheKey]) {\n resourceTaskAssignmentsCache[resourceTaskCacheKey] = [];\n }\n\n resourceTaskAssignmentsCache[resourceTaskCacheKey].push(a);\n });\n }\n\n if (searchTaskId) {\n return (resourceTaskAssignmentsCache[resourceId + \"-\" + taskId] || []).slice();\n } else {\n return (resourceAssignmentsCache[resourceId] || []).slice();\n }\n };\n\n gantt.getTaskAssignments = function (taskId) {\n if (taskAssignmentsCache === null) {\n var result = [];\n taskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!taskAssignmentsCache[a.task_id]) {\n taskAssignmentsCache[a.task_id] = [];\n }\n\n taskAssignmentsCache[a.task_id].push(a);\n\n if (a.task_id == taskId) {\n result.push(a);\n }\n });\n }\n\n return (taskAssignmentsCache[taskId] || []).slice();\n };\n\n gantt.getTaskResources = function (taskId) {\n var store = gantt.getDatastore(\"resource\");\n var assignments = gantt.getTaskAssignments(taskId);\n var uniqueResources = {};\n assignments.forEach(function (a) {\n if (!uniqueResources[a.resource_id]) {\n uniqueResources[a.resource_id] = a.resource_id;\n }\n });\n var resources = [];\n\n for (var i in uniqueResources) {\n var res = store.getItem(uniqueResources[i]);\n\n if (res) {\n resources.push(res);\n }\n }\n\n return resources;\n };\n\n gantt.updateTaskAssignments = _updateTaskBack;\n }\n }, {\n once: true\n });\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt) {\n var resourceTaskCache = {};\n var singleResourceCacheBuilt = false;\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n singleResourceCacheBuilt = false;\n });\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n resourceTaskCache = {};\n });\n\n function getTaskBy(propertyName, propertyValue, typeFilter) {\n if (typeof propertyName == \"function\") {\n return filterResourceTasks(propertyName);\n } else {\n if (helpers.isArray(propertyValue)) {\n return getResourceTasks(propertyName, propertyValue, typeFilter);\n } else {\n return getResourceTasks(propertyName, [propertyValue], typeFilter);\n }\n }\n }\n\n function filterResourceTasks(filter) {\n var res = [];\n gantt.eachTask(function (task) {\n if (filter(task)) {\n res.push(task);\n }\n });\n return res;\n }\n\n var falsyValuePrefix = String(Math.random());\n\n function resourceHashFunction(value) {\n if (value === null) {\n return falsyValuePrefix + String(value);\n }\n\n return String(value);\n }\n\n function getCacheKey(resourceIds, property, typeFilter) {\n if (Array.isArray(resourceIds)) {\n return resourceIds.map(function (value) {\n return resourceHashFunction(value);\n }).join(\"_\") + \"_\".concat(property, \"_\").concat(typeFilter);\n } else {\n return resourceHashFunction(resourceIds) + \"_\".concat(property, \"_\").concat(typeFilter);\n }\n }\n\n function getResourceTasks(property, resourceIds, typeFilter) {\n var res;\n var cacheKey = getCacheKey(resourceIds, property, JSON.stringify(typeFilter));\n var matchingResources = {};\n helpers.forEach(resourceIds, function (resourceId) {\n matchingResources[resourceHashFunction(resourceId)] = true;\n });\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = [];\n gantt.eachTask(function (task) {\n if (typeFilter) {\n if (!typeFilter[gantt.getTaskType(task)]) {\n return;\n }\n } else if (task.type == gantt.config.types.project) {\n return;\n }\n\n if (property in task) {\n var resourceValue;\n\n if (!helpers.isArray(task[property])) {\n resourceValue = [task[property]];\n } else {\n resourceValue = task[property];\n }\n\n helpers.forEach(resourceValue, function (value) {\n var resourceValue = value && value.resource_id ? value.resource_id : value;\n\n if (matchingResources[resourceHashFunction(resourceValue)]) {\n res.push(task);\n } else if (!singleResourceCacheBuilt) {\n var key = getCacheKey(value, property);\n\n if (!resourceTaskCache[key]) {\n resourceTaskCache[key] = [];\n }\n\n resourceTaskCache[key].push(task);\n }\n });\n }\n });\n singleResourceCacheBuilt = true;\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function selectAssignments(resourceId, taskId, result) {\n var property = gantt.config.resource_property;\n var owners = [];\n\n if (gantt.getDatastore(\"task\").exists(taskId)) {\n var task = gantt.getTask(taskId);\n owners = task[property] || [];\n }\n\n if (!Array.isArray(owners)) {\n owners = [owners];\n }\n\n for (var i = 0; i < owners.length; i++) {\n if (owners[i].resource_id == resourceId) {\n result.push({\n task_id: task.id,\n resource_id: owners[i].resource_id,\n value: owners[i].value\n });\n }\n }\n }\n\n function getResourceAssignments(resourceId, taskId) {\n // resource assignment as an independent module:\n // {taskId:, resourceId, value}\n // TODO: probably should add a separate datastore for these\n var assignments = [];\n var property = gantt.config.resource_property;\n\n if (taskId !== undefined) {\n selectAssignments(resourceId, taskId, assignments);\n } else {\n var tasks = gantt.getTaskBy(property, resourceId);\n tasks.forEach(function (task) {\n selectAssignments(resourceId, task.id, assignments);\n });\n }\n\n return assignments;\n }\n\n return {\n getTaskBy: getTaskBy,\n getResourceAssignments: getResourceAssignments\n };\n}\n\nfunction createHelper(gantt) {\n var resourcePlugin = {\n renderEditableLabel: function renderEditableLabel(start_date, end_date, resource, tasks, assignments) {\n var editable = gantt.config.readonly ? \"\" : \"contenteditable\";\n\n if (start_date < resource.end_date && end_date > resource.start_date) {\n for (var i = 0; i < assignments.length; i++) {\n var a = assignments[i];\n return \"<div \" + editable + \" data-assignment-cell data-assignment-id='\" + a.id + \"'\" + \" data-row-id='\" + resource.id + \"'\" + \" data-task='\" + resource.$task_id + \"'\" + \" data-start-date='\" + gantt.templates.format_date(start_date) + \"'\" + \" data-end-date='\" + gantt.templates.format_date(end_date) + \"'>\" + a.value + \"</div>\";\n }\n\n return \"<div \" + editable + \" data-assignment-cell data-empty \" + \" data-row-id='\" + resource.id + \"'\" + \" data-resource-id='\" + resource.$resource_id + \"'\" + \" data-task='\" + resource.$task_id + \"'\" + \" data-start-date='\" + gantt.templates.format_date(start_date) + \"'\" + \"' data-end-date='\" + gantt.templates.format_date(end_date) + \"'>-</div>\";\n }\n\n return \"\";\n },\n renderSummaryLabel: function renderSummaryLabel(start_date, end_date, resource, tasks, assignments) {\n var sum = assignments.reduce(function (total, assignment) {\n return total + Number(assignment.value);\n }, 0);\n\n if (sum % 1) {\n sum = Math.round(sum * 10) / 10;\n }\n\n if (sum) {\n return \"<div>\" + sum + \"</div>\";\n }\n\n return \"\";\n },\n editableResourceCellTemplate: function editableResourceCellTemplate(start_date, end_date, resource, tasks, assignments) {\n if (resource.$role === \"task\") {\n return resourcePlugin.renderEditableLabel(start_date, end_date, resource, tasks, assignments);\n } else {\n return resourcePlugin.renderSummaryLabel(start_date, end_date, resource, tasks, assignments);\n }\n },\n editableResourceCellClass: function editableResourceCellClass(start_date, end_date, resource, tasks, assignments) {\n var css = [];\n css.push(\"resource_marker\");\n\n if (resource.$role === \"task\") {\n css.push(\"task_cell\");\n } else {\n css.push(\"resource_cell\");\n }\n\n var sum = assignments.reduce(function (total, assignment) {\n return total + Number(assignment.value);\n }, 0);\n var capacity = Number(resource.capacity);\n\n if (isNaN(capacity)) {\n capacity = 8;\n }\n\n if (sum <= capacity) {\n css.push(\"workday_ok\");\n } else {\n css.push(\"workday_over\");\n }\n\n return css.join(\" \");\n },\n getSummaryResourceAssignments: function getResourceAssignments(resourceId) {\n var assignments;\n var store = gantt.getDatastore(gantt.config.resource_store);\n var resource = store.getItem(resourceId);\n\n if (resource.$role === \"task\") {\n assignments = gantt.getResourceAssignments(resource.$resource_id, resource.$task_id);\n } else {\n assignments = gantt.getResourceAssignments(resourceId);\n\n if (store.eachItem) {\n store.eachItem(function (childResource) {\n if (childResource.$role !== \"task\") {\n assignments = assignments.concat(gantt.getResourceAssignments(childResource.id));\n }\n }, resourceId);\n }\n }\n\n return assignments;\n },\n initEditableDiagram: function initEditableDiagram() {\n gantt.config.resource_render_empty_cells = true;\n\n (function () {\n /// salesforce locker workaround\n // SF removes 'contenteditable' attribute from cells\n // restore it on render\n var timeoutId = null;\n\n function makeEditable() {\n if (timeoutId) {\n cancelAnimationFrame(timeoutId);\n }\n\n timeoutId = requestAnimationFrame(function () {\n var cells = Array.prototype.slice.call(gantt.$container.querySelectorAll(\".resourceTimeline_cell [data-assignment-cell]\"));\n cells.forEach(function (cell) {\n cell.contentEditable = true;\n });\n });\n return true;\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n gantt.getDatastore(gantt.config.resource_assignment_store).attachEvent(\"onStoreUpdated\", makeEditable);\n gantt.getDatastore(gantt.config.resource_store).attachEvent(\"onStoreUpdated\", makeEditable);\n }, {\n once: true\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n var ganttViews = gantt.$layout.getCellsByType(\"viewCell\");\n ganttViews.forEach(function (view) {\n if (view.$config && view.$config.view === \"resourceTimeline\" && view.$content) {\n view.$content.attachEvent(\"onScroll\", makeEditable);\n }\n });\n });\n })();\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var assignmentEditInProcess = false;\n gantt.event(gantt.$container, \"keypress\", function (e) {\n var target = e.target.closest(\".resourceTimeline_cell [data-assignment-cell]\");\n\n if (target) {\n if (e.keyCode === 13 || e.keyCode === 27) {\n target.blur();\n }\n }\n });\n gantt.event(gantt.$container, \"focusout\", function (e) {\n if (assignmentEditInProcess) {\n return;\n }\n\n assignmentEditInProcess = true;\n setTimeout(function () {\n assignmentEditInProcess = false;\n }, 300);\n var target = e.target.closest(\".resourceTimeline_cell [data-assignment-cell]\");\n\n if (target) {\n var strValue = (target.innerText || \"\").trim();\n\n if (strValue == \"-\") {\n strValue = \"0\";\n }\n\n var value = Number(strValue);\n var rowId = target.getAttribute(\"data-row-id\");\n var assignmentId = target.getAttribute(\"data-assignment-id\");\n var taskId = target.getAttribute(\"data-task\");\n var resourceId = target.getAttribute(\"data-resource-id\");\n var startDate = gantt.templates.parse_date(target.getAttribute(\"data-start-date\"));\n var endDate = gantt.templates.parse_date(target.getAttribute(\"data-end-date\"));\n var assignmentStore = gantt.getDatastore(gantt.config.resource_assignment_store);\n\n if (isNaN(value)) {\n gantt.getDatastore(gantt.config.resource_store).refresh(rowId);\n } else {\n var task = gantt.getTask(taskId); // GS-2141. Track the changes by the Undo extension\n\n if (gantt.plugins().undo) {\n gantt.ext.undo.saveState(taskId, \"task\");\n }\n\n if (assignmentId) {\n var assignment = assignmentStore.getItem(assignmentId);\n\n if (value === assignment.value) {\n return;\n }\n\n if (assignment.start_date.valueOf() === startDate.valueOf() && assignment.end_date.valueOf() === endDate.valueOf()) {\n assignment.value = value;\n\n if (!value) {\n assignmentStore.removeItem(assignment.id);\n } else {\n assignmentStore.updateItem(assignment.id);\n }\n } else {\n if (assignment.end_date.valueOf() > endDate.valueOf()) {\n var nextChunk = gantt.copy(assignment);\n nextChunk.id = gantt.uid();\n nextChunk.start_date = endDate;\n nextChunk.duration = gantt.calculateDuration({\n start_date: nextChunk.start_date,\n end_date: nextChunk.end_date,\n task: task\n });\n nextChunk.delay = gantt.calculateDuration({\n start_date: task.start_date,\n end_date: nextChunk.start_date,\n task: task\n });\n nextChunk.mode = assignment.mode || \"default\";\n\n if (nextChunk.duration !== 0) {\n assignmentStore.addItem(nextChunk);\n }\n }\n\n if (assignment.start_date.valueOf() < startDate.valueOf()) {\n assignment.end_date = startDate;\n assignment.duration = gantt.calculateDuration({\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n task: task\n });\n assignment.mode = \"fixedDuration\";\n\n if (assignment.duration === 0) {\n assignmentStore.removeItem(assignment.id);\n } else {\n assignmentStore.updateItem(assignment.id);\n }\n } else {\n assignmentStore.removeItem(assignment.id);\n }\n\n if (value) {\n assignmentStore.addItem({\n task_id: assignment.task_id,\n resource_id: assignment.resource_id,\n value: value,\n start_date: startDate,\n end_date: endDate,\n duration: gantt.calculateDuration({\n start_date: startDate,\n end_date: endDate,\n task: task\n }),\n delay: gantt.calculateDuration({\n start_date: task.start_date,\n end_date: startDate,\n task: task\n }),\n mode: \"fixedDuration\"\n });\n }\n }\n\n gantt.updateTaskAssignments(task.id);\n gantt.updateTask(task.id);\n } else if (value) {\n var assignment = {\n task_id: taskId,\n resource_id: resourceId,\n value: value,\n start_date: startDate,\n end_date: endDate,\n duration: gantt.calculateDuration({\n start_date: startDate,\n end_date: endDate,\n task: task\n }),\n delay: gantt.calculateDuration({\n start_date: task.start_date,\n end_date: startDate,\n task: task\n }),\n mode: \"fixedDuration\"\n };\n assignmentStore.addItem(assignment);\n gantt.updateTaskAssignments(task.id);\n gantt.updateTask(task.id);\n }\n }\n }\n });\n }, {\n once: true\n });\n }\n };\n return resourcePlugin;\n}\n\nmodule.exports = function (gantt) {\n var methods = createResourceMethods(gantt);\n gantt.ext.resources = createHelper(gantt);\n gantt.config.resources = {\n dataprocessor_assignments: false,\n dataprocessor_resources: false,\n editable_resource_diagram: false,\n resource_store: {\n type: \"treeDataStore\",\n fetchTasks: false,\n initItem: function initItem(item) {\n item.parent = item.parent || gantt.config.root_id;\n item[gantt.config.resource_property] = item.parent;\n item.open = true;\n return item;\n }\n },\n lightbox_resources: function selectResourceControlOptions(resources) {\n var lightboxOptions = [];\n var store = gantt.getDatastore(gantt.config.resource_store);\n resources.forEach(function (res) {\n if (!store.hasChild(res.id)) {\n var copy = gantt.copy(res);\n copy.key = res.id;\n copy.label = res.text;\n lightboxOptions.push(copy);\n }\n });\n return lightboxOptions;\n }\n };\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (gantt.getDatastore(gantt.config.resource_store)) {\n return;\n }\n\n var resourceStoreConfig = gantt.config.resources ? gantt.config.resources.resource_store : undefined;\n var fetchTasks = resourceStoreConfig ? resourceStoreConfig.fetchTasks : undefined;\n\n if (gantt.config.resources && gantt.config.resources.editable_resource_diagram) {\n fetchTasks = true;\n }\n\n var initItems = function initItems(item) {\n item.parent = item.parent || gantt.config.root_id;\n item[gantt.config.resource_property] = item.parent;\n item.open = true;\n return item;\n };\n\n if (resourceStoreConfig && resourceStoreConfig.initItem) {\n initItems = resourceStoreConfig.initItem;\n }\n\n var storeType = resourceStoreConfig && resourceStoreConfig.type ? resourceStoreConfig.type : \"treeDatastore\";\n gantt.$resourcesStore = gantt.createDatastore({\n name: gantt.config.resource_store,\n type: storeType,\n fetchTasks: fetchTasks !== undefined ? fetchTasks : false,\n initItem: initItems\n });\n gantt.$data.resourcesStore = gantt.$resourcesStore;\n gantt.$resourcesStore.attachEvent(\"onParse\", function () {\n function selectResourceControlOptions(resources) {\n var lightboxOptions = [];\n resources.forEach(function (res) {\n if (!gantt.$resourcesStore.hasChild(res.id)) {\n var copy = gantt.copy(res);\n copy.key = res.id;\n copy.label = res.text;\n lightboxOptions.push(copy);\n }\n });\n return lightboxOptions;\n }\n\n var lightboxOptionsFnc = selectResourceControlOptions;\n\n if (gantt.config.resources && gantt.config.resources.lightbox_resources) {\n lightboxOptionsFnc = gantt.config.resources.lightbox_resources;\n }\n\n var options = lightboxOptionsFnc(gantt.$resourcesStore.getItems());\n gantt.updateCollection(\"resourceOptions\", options);\n });\n });\n gantt.getTaskBy = methods.getTaskBy;\n gantt.getResourceAssignments = methods.getResourceAssignments;\n gantt.config.resource_property = \"owner_id\";\n gantt.config.resource_store = \"resource\";\n gantt.config.resource_render_empty_cells = false;\n /**\r\n * these are placeholder functions that should be redefined by the user\r\n */\n\n gantt.templates.histogram_cell_class = function (start_date, end_date, resource, tasks, assignments) {};\n\n gantt.templates.histogram_cell_label = function (start_date, end_date, resource, tasks, assignments) {\n return tasks.length + \"/3\";\n };\n\n gantt.templates.histogram_cell_allocated = function (start_date, end_date, resource, tasks, assignments) {\n return tasks.length / 3;\n };\n\n gantt.templates.histogram_cell_capacity = function (start_date, end_date, resource, tasks, assignments) {\n return 0;\n };\n\n var defaultResourceCellClass = function defaultResourceCellClass(start, end, resource, tasks, assignments) {\n var css = \"\";\n\n if (tasks.length <= 1) {\n css = \"gantt_resource_marker_ok\";\n } else {\n css = \"gantt_resource_marker_overtime\";\n }\n\n return css;\n };\n\n var defaultResourceCellTemplate = function defaultResourceCellTemplate(start, end, resource, tasks, assignments) {\n return tasks.length * 8;\n };\n\n gantt.templates.resource_cell_value = defaultResourceCellTemplate;\n gantt.templates.resource_cell_class = defaultResourceCellClass; //editable_resource_diagram\n\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (gantt.config.resources && gantt.config.resources.editable_resource_diagram) {\n gantt.config.resource_render_empty_cells = true;\n\n if (gantt.templates.resource_cell_value === defaultResourceCellTemplate) {\n gantt.templates.resource_cell_value = gantt.ext.resources.editableResourceCellTemplate;\n }\n\n if (gantt.templates.resource_cell_class === defaultResourceCellClass) {\n gantt.templates.resource_cell_class = gantt.ext.resources.editableResourceCellClass;\n }\n\n gantt.ext.resources.initEditableDiagram(gantt);\n }\n });\n};","var createWbs = function createWbs(gantt) {\n return {\n _needRecalc: true,\n reset: function reset() {\n this._needRecalc = true;\n },\n _isRecalcNeeded: function _isRecalcNeeded() {\n return !this._isGroupSort() && this._needRecalc;\n },\n _isGroupSort: function _isGroupSort() {\n return !!gantt.getState().group_mode;\n },\n _getWBSCode: function _getWBSCode(task) {\n if (!task) return \"\";\n\n if (this._isRecalcNeeded()) {\n this._calcWBS();\n }\n\n if (task.$virtual) return \"\";\n if (this._isGroupSort()) return task.$wbs || \"\";\n\n if (!task.$wbs) {\n this.reset();\n\n this._calcWBS();\n }\n\n return task.$wbs;\n },\n _setWBSCode: function _setWBSCode(task, value) {\n task.$wbs = value;\n },\n getWBSCode: function getWBSCode(task) {\n return this._getWBSCode(task);\n },\n getByWBSCode: function getByWBSCode(code) {\n var parts = code.split(\".\");\n var currentNode = gantt.config.root_id;\n\n for (var i = 0; i < parts.length; i++) {\n var children = gantt.getChildren(currentNode);\n var index = parts[i] * 1 - 1;\n\n if (gantt.isTaskExists(children[index])) {\n currentNode = children[index];\n } else {\n return null;\n }\n }\n\n if (gantt.isTaskExists(currentNode)) {\n return gantt.getTask(currentNode);\n } else {\n return null;\n }\n },\n _calcWBS: function _calcWBS() {\n if (!this._isRecalcNeeded()) return;\n var _isFirst = true;\n gantt.eachTask(function (ch) {\n if (_isFirst) {\n _isFirst = false;\n\n this._setWBSCode(ch, \"1\");\n\n return;\n }\n\n var _prevSibling = gantt.getPrevSibling(ch.id);\n\n if (_prevSibling !== null) {\n var _wbs = gantt.getTask(_prevSibling).$wbs;\n\n if (_wbs) {\n _wbs = _wbs.split(\".\");\n _wbs[_wbs.length - 1]++;\n\n this._setWBSCode(ch, _wbs.join(\".\"));\n }\n } else {\n var _parent = gantt.getParent(ch.id);\n\n this._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n }\n }, gantt.config.root_id, this);\n this._needRecalc = false;\n }\n };\n};\n\nmodule.exports = function (gantt) {\n var wbs = createWbs(gantt);\n\n gantt.getWBSCode = function getWBSCode(task) {\n return wbs.getWBSCode(task);\n };\n\n gantt.getTaskByWBSCode = function (code) {\n return wbs.getByWBSCode(code);\n };\n\n function resetCache() {\n wbs.reset();\n return true;\n }\n\n gantt.attachEvent(\"onAfterTaskMove\", resetCache);\n gantt.attachEvent(\"onBeforeParse\", resetCache);\n gantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n gantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n gantt.attachEvent(\"onAfterSort\", resetCache);\n};","var global = require(\"../../utils/global\");\n\nfunction createMethod(gantt) {\n var methods = {};\n var isActive = false;\n\n function disableMethod(methodName, dummyMethod) {\n dummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function () {};\n\n if (!methods[methodName]) {\n methods[methodName] = this[methodName];\n this[methodName] = dummyMethod;\n }\n }\n\n function restoreMethod(methodName) {\n if (methods[methodName]) {\n this[methodName] = methods[methodName];\n methods[methodName] = null;\n }\n }\n\n function disableMethods(methodsHash) {\n for (var i in methodsHash) {\n disableMethod.call(this, i, methodsHash[i]);\n }\n }\n\n function restoreMethods() {\n for (var i in methods) {\n restoreMethod.call(this, i);\n }\n }\n\n function batchUpdatePayload(callback) {\n try {\n callback();\n } catch (e) {\n global.console.error(e);\n }\n }\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"batchUpdate\", function () {\n return {\n batch_update: isActive\n };\n }, false);\n return function batchUpdate(callback, noRedraw) {\n if (isActive) {\n // batch mode is already active\n batchUpdatePayload(callback);\n return;\n }\n\n var call_dp = this._dp && this._dp.updateMode != \"off\";\n var dp_mode;\n\n if (call_dp) {\n dp_mode = this._dp.updateMode;\n\n this._dp.setUpdateMode(\"off\");\n } // temporary disable some methods while updating multiple tasks\n\n\n var resetProjects = {};\n var methods = {\n \"render\": true,\n \"refreshData\": true,\n \"refreshTask\": true,\n \"refreshLink\": true,\n \"resetProjectDates\": function resetProjectDates(task) {\n resetProjects[task.id] = task;\n }\n };\n disableMethods.call(this, methods);\n isActive = true;\n this.callEvent(\"onBeforeBatchUpdate\", []);\n batchUpdatePayload(callback);\n this.callEvent(\"onAfterBatchUpdate\", []);\n restoreMethods.call(this); // do required updates after changes applied\n\n for (var i in resetProjects) {\n this.resetProjectDates(resetProjects[i]);\n }\n\n isActive = false;\n\n if (!noRedraw) {\n this.render();\n }\n\n if (call_dp) {\n this._dp.setUpdateMode(dp_mode);\n\n this._dp.setGanttMode(\"task\");\n\n this._dp.sendData();\n\n this._dp.setGanttMode(\"link\");\n\n this._dp.sendData();\n }\n };\n}\n\nmodule.exports = function (gantt) {\n gantt.batchUpdate = createMethod(gantt);\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./batch_update\"), require(\"./wbs\"), require(\"./resources\"), require(\"./resource_assignments\"), require(\"./new_task_placeholder\"), require(\"./auto_task_types\"), require(\"./formatters\"), require(\"./empty_state_screen\")[\"default\"]];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n};","import * as utils from \"../../utils/utils\";\r\n\r\nexport default class SimpleStorage {\r\n\tpublic static create = () : SimpleStorage => {\r\n\t\treturn new SimpleStorage();\r\n\t}\r\n\r\n\tprotected _storage: { [id: string]: any; };\r\n\r\n\tprotected constructor() {\r\n\t\tthis._storage = {};\r\n\t}\r\n\r\n\tpublic clear = (): void => {\r\n\t\tthis._storage = {};\r\n\t}\r\n\r\n\tpublic storeItem = (item: any): void => {\r\n\t\tthis._storage[item.id] = utils.copy(item);\r\n\t}\r\n\r\n\tpublic getStoredItem = (id: string): any => {\r\n\t\treturn this._storage[id] || null;\r\n\t}\r\n}","\r\nexport default function extendGantt(gantt: any, dp: any) {\r\n\tgantt.getUserData = function(id, name, store) {\r\n\t\tif (!this.userdata) {\r\n\t\t\tthis.userdata = {};\r\n\t\t}\r\n\t\tthis.userdata[store] = this.userdata[store] || {};\r\n\t\tif (this.userdata[store][id] && this.userdata[store][id][name]) {\r\n\t\t\treturn this.userdata[store][id][name];\r\n\t\t}\r\n\t\treturn \"\";\r\n\t};\r\n\tgantt.setUserData = function(id, name, value, store) {\r\n\t\tif (!this.userdata) {\r\n\t\t\tthis.userdata = {};\r\n\t\t}\r\n\t\tthis.userdata[store] = this.userdata[store] || {};\r\n\t\tthis.userdata[store][id] = this.userdata[store][id] || {};\r\n\t\tthis.userdata[store][id][name] = value;\r\n\t};\r\n\r\n\tgantt._change_id = function(oldId, newId) {\r\n\t\tswitch (this._dp._ganttMode) {\r\n\t\t\tcase \"task\":\r\n\t\t\t\tthis.changeTaskId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"link\":\r\n\t\t\t\tthis.changeLinkId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"assignment\":\r\n\t\t\t\tthis.$data.assignmentsStore.changeId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"resource\":\r\n\t\t\t\tthis.$data.resourcesStore.changeId(oldId, newId);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Invalid mode of the dataProcessor after database id is received: ${this._dp._ganttMode}, new id: ${newId}`);\r\n\t\t}\r\n\t};\r\n\r\n\tgantt._row_style = function(rowId, classname){\r\n\t\tif (this._dp._ganttMode !== \"task\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!gantt.isTaskExists(rowId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst task = gantt.getTask(rowId);\r\n\t\ttask.$dataprocessor_class = classname;\r\n\t\tgantt.refreshTask(rowId);\r\n\t};\r\n\r\n\t// fake method for dataprocessor\r\n\tgantt._delete_task = function(rowId, node) {}; // tslint:disable-line\r\n\r\n\tgantt._sendTaskOrder = function(id, item){\r\n\t\tif (item.$drop_target) {\r\n\t\t\tthis._dp.setGanttMode(\"task\");\r\n\t\t\tthis.getTask(id).target = item.$drop_target;\r\n\t\t\tthis._dp.setUpdated(id, true,\"order\");\r\n\t\t\tdelete this.getTask(id).$drop_target;\r\n\t\t}\r\n\t};\r\n\r\n\tgantt.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\r\n\tgantt.setDp();\r\n}","import * as helpers from \"../../utils/helpers\";\r\n\r\nexport default class DataProcessorEvents {\r\n\tprotected _dataProcessorHandlers: any[];\r\n\tprotected $gantt: any;\r\n\tprotected $dp: any;\r\n\r\n\tconstructor(gantt: any, dp: any) {\r\n\t\tthis.$gantt = gantt;\r\n\t\tthis.$dp = dp;\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t}\r\n\r\n\tattach() {\r\n\t\tconst dp = this.$dp;\r\n\t\tconst gantt = this.$gantt;\r\n\t\tconst treeHelper = require(\"../../utils/task_tree_helpers\");\r\n\t\tconst cascadeDelete = {};\r\n\r\n\t\tconst clientSideDelete = (id) => {\r\n\t\t\treturn this.clientSideDelete(id, dp, gantt);\r\n\t\t};\r\n\r\n\t\tfunction getTaskLinks(task) {\r\n\t\t\tlet _links = [];\r\n\r\n\t\t\tif (task.$source) {\r\n\t\t\t\t_links = _links.concat(task.$source);\r\n\t\t\t}\r\n\t\t\tif (task.$target) {\r\n\t\t\t\t_links = _links.concat(task.$target);\r\n\t\t\t}\r\n\r\n\t\t\treturn _links;\r\n\t\t}\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskAdd\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true, \"inserted\");\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskUpdate\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isTaskExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\r\n\t\t\t\t// gantt can be destroyed/reinitialized after dp.setUpdated\r\n\t\t\t\tif(gantt._sendTaskOrder){\r\n\t\t\t\t\tgantt._sendTaskOrder(id, item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onBeforeTaskDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.config.cascade_delete) {\r\n\t\t\t\tcascadeDelete[id] = {\r\n\t\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\r\n\t\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// GS-631. Keep the deleted item in Gantt until we receive the successful response from the server\r\n\t\t\tif (dp.deleteAfterConfirmation) {\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdated(id, true, \"deleted\");\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tdp.setGanttMode(\"tasks\");\r\n\r\n\t\t\t// not send delete request if item is not inserted into the db - just remove it from the client\r\n\t\t\tconst needDbDelete = !clientSideDelete(id);\r\n\t\t\tconst needCascadeDelete = gantt.config.cascade_delete && cascadeDelete[id];\r\n\t\t\tif (!needDbDelete && !needCascadeDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (needCascadeDelete) {\r\n\t\t\t\tconst dpMode = dp.updateMode;\r\n\t\t\t\tdp.setUpdateMode(\"off\");\r\n\r\n\t\t\t\tconst cascade = cascadeDelete[id];\r\n\t\t\t\tfor (const i in cascade.tasks) {\r\n\t\t\t\t\tif (!clientSideDelete(i)) {\r\n\t\t\t\t\t\tdp.storeItem(cascade.tasks[i]);\r\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tfor (const i in cascade.links) {\r\n\t\t\t\t\tif (!clientSideDelete(i)) {\r\n\t\t\t\t\t\tdp.storeItem(cascade.links[i]);\r\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcascadeDelete[id] = null;\r\n\r\n\t\t\t\tif (dpMode !== \"off\") {\r\n\t\t\t\t\tdp.sendAllData();\r\n\t\t\t\t}\r\n\t\t\t\tdp.setGanttMode(\"tasks\");\r\n\t\t\t\tdp.setUpdateMode(dpMode);\r\n\t\t\t}\r\n\r\n\t\t\tif (needDbDelete){\r\n\t\t\t\tdp.storeItem(item);\r\n\t\t\t\tif (!dp.deleteAfterConfirmation){\r\n\t\t\t\t\tdp.setUpdated(id, true, \"deleted\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (dp.updateMode !== \"off\" && !dp._tSend) {\r\n\t\t\t\tdp.sendAllData();\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkUpdate\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isLinkExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkAdd\", function(id, item) { // tslint:disable-line\r\n\t\t\tif (gantt.isLinkExists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"links\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkDelete\", function(id, item) { // tslint:disable-line\r\n\t\t\tdp.setGanttMode(\"links\");\r\n\r\n\t\t\tconst needDbDelete = !clientSideDelete(id);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdp.storeItem(item);\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onRowDragEnd\", function(id, target) { // tslint:disable-line\r\n\t\t\tgantt._sendTaskOrder(id, gantt.getTask(id));\r\n\t\t}));\r\n\r\n\t\tlet tasks = null;\r\n\t\tlet links = null;\r\n\r\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onTaskIdChange\", function(oldId, newId) { // tslint:disable-line\r\n\t\t\tif (!dp._waitMode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst children = gantt.getChildren(newId);\r\n\t\t\tif (children.length) {\r\n\t\t\t\ttasks = tasks || {};\r\n\r\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\t\t\tconst ch = this.getTask(children[i]);\r\n\t\t\t\t\ttasks[ch.id] = ch;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst item = this.getTask(newId);\r\n\t\t\tconst itemLinks = getTaskLinks(item);\r\n\r\n\t\t\tif (itemLinks.length) {\r\n\t\t\t\tlinks = links || {};\r\n\r\n\t\t\t\tfor (let i = 0; i < itemLinks.length; i++) {\r\n\t\t\t\t\tconst link = this.getLink(itemLinks[i]);\r\n\t\t\t\t\tlinks[link.id] = link;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"onAfterUpdateFinish\", function() {\r\n\t\t\tif (tasks || links) {\r\n\t\t\t\tgantt.batchUpdate(function() {\r\n\t\t\t\t\tfor (const id in tasks) {\r\n\t\t\t\t\t\tgantt.updateTask(tasks[id].id);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const id in links) {\r\n\t\t\t\t\t\tgantt.updateLink(links[id].id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttasks = null;\r\n\t\t\t\t\tlinks = null;\r\n\t\t\t\t});\r\n\t\t\t\tif (tasks) {\r\n\t\t\t\t\tgantt._dp.setGanttMode(\"tasks\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgantt._dp.setGanttMode(\"links\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"onBeforeDataSending\", function() {\r\n\t\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet url = this._serverProcessor;\r\n\t\t\tif (this._tMode === \"REST-JSON\" || this._tMode === \"REST\") {\r\n\t\t\t\tconst mode = this._ganttMode;\r\n\r\n\t\t\t\turl = url.substring(0, url.indexOf(\"?\") > -1 ? url.indexOf(\"?\") : url.length);\r\n\t\t\t\t// editing=true&\r\n\t\t\t\tthis.serverProcessor = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + mode;\r\n\t\t\t} else {\r\n\t\t\t\tconst pluralizedMode = this._ganttMode + \"s\";\r\n\t\t\t\tthis.serverProcessor = url + gantt.ajax.urlSeparator(url) + \"gantt_mode=\" + pluralizedMode;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", function insertCallback(upd, id, parent, mode) { // tslint:disable-line\r\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\r\n\t\t\tconst methods = {\r\n\t\t\t\tadd: gantt.addTask,\r\n\t\t\t\tisExist: gantt.isTaskExists\r\n\t\t\t};\r\n\t\t\tif (mode === \"links\") {\r\n\t\t\t\tmethods.add = gantt.addLink;\r\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\r\n\t\t\t}\r\n\t\t\tif (methods.isExist.call(gantt, id)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdata.id = id;\r\n\t\t\tmethods.add.call(gantt, data);\r\n\t\t});\r\n\r\n\t\tdp.attachEvent(\"updateCallback\", function updateCallback(upd, id) {\r\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\r\n\t\t\tif (!gantt.isTaskExists(id)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst objData = gantt.getTask(id);\r\n\t\t\tfor (const key in data) {\r\n\t\t\t\tlet property = data[key];\r\n\t\t\t\tswitch (key) {\r\n\t\t\t\t\tcase \"id\":\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tcase \"start_date\":\r\n\t\t\t\t\tcase \"end_date\":\r\n\t\t\t\t\t\tproperty = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date(property) : gantt.templates.parse_date(property);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"duration\":\r\n\t\t\t\t\t\tobjData.end_date = gantt.calculateEndDate({start_date: objData.start_date, duration: property, task:objData});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tobjData[key] = property;\r\n\t\t\t}\r\n\t\t\tgantt.updateTask(id);\r\n\t\t\tgantt.refreshData();\r\n\t\t});\r\n\t\tdp.attachEvent(\"deleteCallback\", function deleteCallback(upd, id, parent, mode) { // tslint:disable-line\r\n\t\t\tconst methods = {\r\n\t\t\t\tdelete: gantt.deleteTask,\r\n\t\t\t\tisExist: gantt.isTaskExists\r\n\t\t\t};\r\n\t\t\tif (mode === \"links\") {\r\n\t\t\t\tmethods.delete = gantt.deleteLink;\r\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\r\n\t\t\t} else if(mode === \"assignment\") {\r\n\t\t\t\tmethods.delete = function(val) {\r\n\t\t\t\t\tgantt.$data.assignmentsStore.remove(val);\r\n\t\t\t\t};\r\n\t\t\t\tmethods.isExist = function(val){\r\n\t\t\t\t\treturn gantt.$data.assignmentsStore.exists(val);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (methods.isExist.call(gantt, id)) {\r\n\t\t\t\tmethods.delete.call(gantt, id);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.handleResourceCRUD(dp, gantt);\r\n\t\tthis.handleResourceAssignmentCRUD(dp, gantt);\r\n\t}\r\n\r\n\tclientSideDelete(id, dp, gantt){\r\n\t\tconst updated = dp.updatedRows.slice();\r\n\t\tlet clientOnly = false;\r\n\r\n\t\tif(gantt.getUserData(id, \"!nativeeditor_status\", dp._ganttMode) === \"true_deleted\"){\r\n\t\t\tclientOnly = true;\r\n\t\t\tdp.setUpdated(id,false);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < updated.length && !dp._in_progress[id]; i++) {\r\n\t\t\tif (updated[i] === id) {\r\n\t\t\t\tif (gantt.getUserData(id, \"!nativeeditor_status\", dp._ganttMode) === \"inserted\") {\r\n\t\t\t\t\tclientOnly = true;\r\n\t\t\t\t}\r\n\t\t\t\tdp.setUpdated(id,false);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clientOnly;\r\n\t}\r\n\r\n\thandleResourceAssignmentCRUD(dp, gantt){\r\n\t\tif(!gantt.config.resources || gantt.config.resources.dataprocessor_assignments !== true){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst assignmentsStore = gantt.getDatastore(gantt.config.resource_assignment_store);\r\n\t\tconst insertedTasks = {};\r\n\t\tconst pendingAssignments = {};\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskAdd\", function(id, task){\r\n\t\t\tinsertedTasks[id] = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tfunction putAssignmentToQueue(item){\r\n\t\t\tpendingAssignments[item.id] = item;\r\n\t\t\tinsertedTasks[item.task_id] = true;\r\n\t\t}\r\n\r\n\t\tfunction insertResourceAssignment(assignment){\r\n\t\t\tconst id = assignment.id;\r\n\t\t\tif (assignmentsStore.exists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"assignment\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t\tdelete pendingAssignments[id];\r\n\t\t}\r\n\r\n\t\tgantt.attachEvent(\"onTaskIdChange\", function(id, newId){\r\n\t\t\tdelete insertedTasks[id];\r\n\t\t});\r\n\r\n\t\tassignmentsStore.attachEvent(\"onAfterAdd\", (id, item) => {\r\n\t\t\tif(insertedTasks[item.task_id]){\r\n\t\t\t\t// inserting assignment of new task\r\n\t\t\t\t// task is not saved yet, need to wait till it gets permanent id and save assigmnents after that\r\n\t\t\t\tputAssignmentToQueue(item);\r\n\t\t\t}else{\r\n\t\t\t\tinsertResourceAssignment(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassignmentsStore.attachEvent(\"onAfterUpdate\", (id, item) => {\r\n\t\t\tif (assignmentsStore.exists(id)) {\r\n\t\t\t\tif(pendingAssignments[id]){\r\n\t\t\t\t\tinsertResourceAssignment(item);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdp.setGanttMode(\"assignment\");\r\n\t\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassignmentsStore.attachEvent(\"onAfterDelete\", (id, item) => {\r\n\t\t\tdp.setGanttMode(\"assignment\");\r\n\r\n\t\t\tconst needDbDelete = !this.clientSideDelete(id, dp, gantt);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdp.storeItem(item);\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t});\r\n\r\n\t}\r\n\r\n\thandleResourceCRUD(dp, gantt){\r\n\t\tif(!gantt.config.resources || gantt.config.resources.dataprocessor_resources !== true){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst resourcesStore = gantt.getDatastore(gantt.config.resource_store);\r\n\r\n\t\tfunction insertResource(resource){\r\n\t\t\tconst id = resource.id;\r\n\t\t\tif (resourcesStore.exists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"resource\");\r\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresourcesStore.attachEvent(\"onAfterAdd\", (id, item) => {\r\n\t\t\tinsertResource(item);\r\n\t\t});\r\n\r\n\t\tresourcesStore.attachEvent(\"onAfterUpdate\", (id, item) => {\r\n\t\t\tif (resourcesStore.exists(id)) {\r\n\t\t\t\tdp.setGanttMode(\"resource\");\r\n\t\t\t\tdp.setUpdated(id, true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresourcesStore.attachEvent(\"onAfterDelete\", (id, item) => {\r\n\t\t\tdp.setGanttMode(\"resource\");\r\n\r\n\t\t\tconst needDbDelete = !this.clientSideDelete(id, dp, gantt);\r\n\t\t\tif (!needDbDelete) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdp.storeItem(item);\r\n\t\t\tdp.setUpdated(id, true,\"deleted\");\r\n\t\t});\r\n\r\n\t}\r\n\r\n\r\n\tdetach() {\r\n\t\thelpers.forEach(this._dataProcessorHandlers, (e) => {\r\n\t\t\tthis.$gantt.detachEvent(e);\r\n\t\t});\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t}\r\n}\r\n","import * as eventable from \"../../utils/eventable\";\r\nimport * as helpers from \"../../utils/helpers\";\r\nimport * as utils from \"../../utils/utils\";\r\nimport DataProcessorEvents from \"./data_processor_events\";\r\nimport extendGantt from \"./extend_gantt\";\r\nimport SimpleStorage from \"./simple_storage\";\r\n\r\nexport interface DataProcessor { // tslint:disable-line\r\n\t$gantt: any;\r\n\tdetachAllEvents: any;\r\n\tattachEvent: any;\r\n\tcallEvent: any;\r\n\r\n\tserverProcessor: string;\r\n\taction_param: string;\r\n\tupdatedRows: any[];\r\n\tautoUpdate: boolean;\r\n\tupdateMode: string;\r\n\tmessages: any[];\r\n\tstyles: object;\r\n\tdnd: any;\r\n\tdeleteAfterConfirmation?: any;\r\n}\r\n\r\nexport function createDataProcessor(config: any) {\r\n\tlet router;\r\n\tlet tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if (config.hasOwnProperty(\"assignment\") || config.hasOwnProperty(\"link\") || config.hasOwnProperty(\"task\")) {\r\n\t\trouter = config;\r\n\t}\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\tconst gantt = this; // tslint:disable-line\r\n\tconst dp = new DataProcessor(config.url);\r\n\r\n\r\n\tdp.init(gantt);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter\r\n\t}, config.batchUpdate);\r\n\tif(config.deleteAfterConfirmation){\r\n\t\tdp.deleteAfterConfirmation = config.deleteAfterConfirmation;\r\n\t}\r\n\treturn dp;\r\n}\r\n\r\nexport class DataProcessor {\r\n\tpublic modes: object;\r\n\tpublic serverProcessor: string;\r\n\tpublic action_param: string; // tslint:disable-line\r\n\tpublic updatedRows: any[];\r\n\tpublic autoUpdate: boolean;\r\n\tpublic updateMode: string;\r\n\tpublic messages: any[];\r\n\tpublic styles: object;\r\n\tpublic dnd: any;\r\n\r\n\tprotected _tMode: string;\r\n\tprotected _headers: any;\r\n\tprotected _payload: any;\r\n\tprotected _postDelim: string;\r\n\tprotected _waitMode: number;\r\n\tprotected _in_progress: object; // tslint:disable-line\r\n\tprotected _invalid: object;\r\n\tprotected _storage: SimpleStorage;\r\n\tprotected _tSend: boolean;\r\n\tprotected _serializeAsJson: boolean;\r\n\tprotected _router: any;\r\n\tprotected _utf: boolean;\r\n\tprotected _methods: any[];\r\n\tprotected _user: any;\r\n\tprotected _uActions: object;\r\n\tprotected _needUpdate: boolean;\r\n\tprotected _ganttMode: \"task\"|\"link\";\r\n\tprotected _routerParametersFormat: \"parameters\"|\"object\";\r\n\r\n\tprotected _silent_mode: any; // tslint:disable-line\r\n\tprotected _updateBusy: any;\r\n\tprotected _serverProcessor: any;\r\n\tprotected _initialized: boolean;\r\n\r\n\tconstructor(serverProcessorURL?) {\r\n\t\tthis.serverProcessor = serverProcessorURL;\r\n\t\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\t\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\t\tthis.autoUpdate = true;\r\n\t\tthis.updateMode = \"cell\";\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tthis._postDelim = \"_\";\r\n\t\tthis._routerParametersFormat = \"parameters\";\r\n\r\n\t\tthis._waitMode = 0;\r\n\t\tthis._in_progress = {}; // ?\r\n\t\tthis._storage = SimpleStorage.create();\r\n\t\tthis._invalid = {};\r\n\t\tthis.messages = [];\r\n\r\n\t\tthis.styles = {\r\n\t\t\tupdated: \"font-weight:bold;\",\r\n\t\t\tinserted: \"font-weight:bold;\",\r\n\t\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\t\terror: \"color:red;\",\r\n\t\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t\t};\r\n\t\tthis.enableUTFencoding(true);\r\n\t\teventable(this);\r\n\t}\r\n\r\n\tsetTransactionMode(mode:any, total?:any) {\r\n\t\tif (typeof mode === \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (utils.defined(mode.headers)) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (utils.defined(mode.payload)) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t}\r\n\r\n\tescape(data:any) {\r\n\t\tif (this._utf) {\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\t} else {\r\n\t\t\treturn escape(data);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: allows to set escaping mode\r\n\t * @param: true - utf based escaping, simple - use current page encoding\r\n\t * @type: public\r\n\t */\r\n\tenableUTFencoding(mode:boolean) {\r\n\t\tthis._utf = !!mode;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: get state of updating\r\n\t * @returns: true - all in sync with server, false - some items not updated yet.\r\n\t * @type: public\r\n\t */\r\n\tgetSyncState() {\r\n\t\treturn !this.updatedRows.length;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: set if rows should be send to server automatically\r\n\t * @param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t * @type: public\r\n\t */\r\n\tsetUpdateMode(mode: string, dnd: any) {\r\n\t\tthis.autoUpdate = (mode === \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t}\r\n\r\n\tignore(code: any, master: any) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: mark row as updated/normal. check mandatory fields, initiate autoupdate (if turned on)\r\n\t * @param: rowId - id of row to set update-status for\r\n\t * @param: state - true for \"updated\", false for \"not updated\"\r\n\t * @param: mode - update mode name\r\n\t * @type: public\r\n\t */\r\n\tsetUpdated(rowId:number|string, state: boolean, mode?: string) {\r\n\t\tif (this._silent_mode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tconst existing = this.$gantt.getUserData(rowId, this.action_param, this._ganttMode);\r\n\t\tif (existing && mode === \"updated\") {\r\n\t\t\tmode = existing;\r\n\t\t}\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); // clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$gantt.setUserData(rowId, this.action_param, mode, this._ganttMode);\r\n\t\t\tif (this._in_progress[rowId]) {\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$gantt.setUserData(rowId, this.action_param, \"\", this._ganttMode);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) {\r\n\t\t\tthis.sendData(rowId);\r\n\t\t}\r\n\t}\r\n\r\n\tmarkRow(id: number | string, state: boolean, mode: string) {\r\n\t\tlet str = \"\";\r\n\t\tconst invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t// default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + \" \" + str;\r\n\r\n\t\t\tthis.$gantt[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (let i = 0; i < invalid.details.length; i++) {\r\n\t\t\t\t\tif (invalid.details[i]) {\r\n\t\t\t\t\t\tthis.$gantt[this._methods[1]](id, i, str);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetActionByState(state: string):string {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\r\n\t\t// reorder\r\n\t\treturn \"update\";\r\n\t}\r\n\r\n\tgetState(id: number | string) {\r\n\t\treturn this.$gantt.getUserData(id, this.action_param, this._ganttMode);\r\n\t}\r\n\r\n\tis_invalid(id: number | string) {\r\n\t\treturn this._invalid[id];\r\n\t}\r\n\r\n\tset_invalid(id: number | string, mode: any, details?) {\r\n\t\tif (details) {\r\n\t\t\tmode = {\r\n\t\t\t\tvalue: mode,\r\n\t\t\t\tdetails,\r\n\t\t\t\ttoString: function() { // tslint:disable-line\r\n\t\t\t\t\treturn this.value.toString();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis._invalid[id] = mode;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: check mandatory fields and verify values of cells, initiate update (if specified). Can be redefined in order to provide custom validation\r\n\t * @param: rowId - id of row to set update-status for\r\n\t * @type: public\r\n\t */\r\n\t// tslint:disable-next-line\r\n\tcheckBeforeUpdate(rowId: number | string) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: send row(s) values to server\r\n\t * @param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t * @type: public\r\n\t */\r\n\tsendData(rowId?: any) {\r\n\t\tif (this.$gantt.editStop) {\r\n\t\t\tthis.$gantt.editStop();\r\n\t\t}\r\n\r\n\t\tif (typeof rowId === \"undefined\" || this._tSend) {\r\n\r\n\t\t\tconst pendingUpdateModes = [];\r\n\t\t\tif(this.modes){\r\n\t\t\t\tconst knownModes = [\"task\", \"link\", \"assignment\"];\r\n\t\t\t\tknownModes.forEach((mode) => {\r\n\t\t\t\t\tif(this.modes[mode] && this.modes[mode].updatedRows.length){\r\n\t\t\t\t\t\tpendingUpdateModes.push(mode);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (pendingUpdateModes.length){\r\n\t\t\t\tfor(let i = 0; i < pendingUpdateModes.length; i++){\r\n\t\t\t\t\tthis.setGanttMode(pendingUpdateModes[i]);\r\n\t\t\t\t\tthis.sendAllData();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.sendAllData();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._in_progress[rowId]) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t}\r\n\r\n\tserialize(data: any, id: any) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tif (typeof id !== \"undefined\") {\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\t} else {\r\n\t\t\tconst stack = [];\r\n\t\t\tconst keys = [];\r\n\t\t\tfor (const key in data) {\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this._postDelim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$gantt.security_key) {\r\n\t\t\t\tstack.push(\"dhx_security=\" + this.$gantt.security_key);\r\n\t\t\t}\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t}\r\n\r\n\tserialize_one(data: any, pref: string) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tconst stack = [];\r\n\t\tlet serialized = \"\";\r\n\t\tfor (const key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key === \"id\" ||\r\n\t\t\t\t\tkey == this.action_param) && // tslint:disable-line\r\n\t\t\t\t\tthis._tMode === \"REST\") {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t}\r\n\r\n\tsendAllData() {\r\n\t\tif (!this.updatedRows.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tlet valid: any = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\t// this.updatedRows can be spliced from onBeforeUpdate via dp.setUpdated false\r\n\t\t\t// use an iterator instead of for(var i = 0; i < this.updatedRows; i++) then\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfindRow(pattern: any) {\r\n\t\tlet i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++) {\r\n\t\t\tif (pattern == this.updatedRows[i]) { // tslint:disable-line\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn i;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: define custom actions\r\n\t * @param: name - name of action, same as value of action attribute\r\n\t * @param: handler - custom function, which receives a XMl response content for action\r\n\t * @type: private\r\n\t */\r\n\tdefineAction(name: string, handler: any) {\r\n\t\tif (!this._uActions) {\r\n\t\t\tthis._uActions = {};\r\n\t\t}\r\n\t\tthis._uActions[name] = handler;\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t * @param: sid - id of item before update\r\n\t * @param: tid - id of item after up0ate\r\n\t * @param: action - action name\r\n\t * @type: public\r\n\t * @topic: 0\r\n\t */\r\n\tafterUpdateCallback(sid: number | string, tid: number | string, action: string, btag: any, ganttMode: string) {\r\n\t\tif(!this.$gantt){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setGanttMode(ganttMode);\r\n\r\n\t\tconst marker = sid;\r\n\t\tconst correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tconst originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) { // tslint:disable-line\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$gantt[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tif(!this.deleteAfterConfirmation || this._ganttMode !== \"task\"){\r\n\t\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\", this._ganttMode);\r\n\t\t\t\t\tthis.$gantt[this._methods[3]](sid);\r\n\t\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif (this._ganttMode === \"task\" && this.$gantt.isTaskExists(sid)) {\r\n\t\t\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\", this._ganttMode);\r\n\t\t\t\t\t\tconst task = this.$gantt.getTask(sid);\r\n\t\t\t\t\t\tthis.$gantt.silent(() => {\r\n\t\t\t\t\t\t\tthis.$gantt.deleteTask(sid);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.$gantt.callEvent(\"onAfterTaskDelete\", [sid, task]);\r\n\t\t\t\t\t\tthis.$gantt.render();\r\n\t\t\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"\", this._ganttMode);\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$gantt.getUserData(sid, this.action_param, this._ganttMode));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: response from server\r\n\t * @param: xml - XMLLoader object with response XML\r\n\t * @type: private\r\n\t */\r\n\tafterUpdate(that: any, xml: any, id?:any) {\r\n\t\tlet _xml;\r\n\t\tif (arguments.length === 3) {\r\n\t\t\t_xml = arguments[1];\r\n\t\t} else {\r\n\t\t\t// old dataprocessor\r\n\t\t\t_xml = arguments[4];\r\n\t\t}\r\n\t\tlet mode = this.getGanttMode();\r\n\t\tconst reqUrl = _xml.filePath || _xml.url;\r\n\r\n\t\tif (this._tMode !== \"REST\" && this._tMode !== \"REST-JSON\") {\r\n\t\t\tif (reqUrl.indexOf(\"gantt_mode=links\") !== -1) {\r\n\t\t\t\tmode = \"link\";\r\n\t\t\t} else if (reqUrl.indexOf(\"gantt_mode=assignments\") !== -1) {\r\n\t\t\t\tmode = \"assignment\";\r\n\t\t\t} else {\r\n\t\t\t\tmode = \"task\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (reqUrl.indexOf(\"/link\") >= 0) {\r\n\t\t\t\tmode = \"link\";\r\n\t\t\t} else if(reqUrl.indexOf(\"/assignment\") >= 0){\r\n\t\t\t\tmode = \"assignment\";\r\n\t\t\t} else {\r\n\t\t\t\tmode = \"task\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.setGanttMode(mode);\r\n\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\t// try to use json first\r\n\t\tlet tag;\r\n\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst processCallback = (itemId: any) => {\r\n\t\t\tconst action = tag.action || this.getState(itemId) || \"updated\";\r\n\t\t\tconst sid = tag.sid || itemId[0];\r\n\t\t\tconst tid = tag.tid || itemId[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag, mode);\r\n\t\t};\r\n\t\tif (tag) {\r\n\t\t\t// GS-753. When multiple tasks are updated, unhighlight all of them\r\n\t\t\tif (Array.isArray(id) && id.length > 1) {\r\n\t\t\t\tid.forEach((taskId) => processCallback(taskId));\r\n\t\t\t} else {\r\n\t\t\t\tprocessCallback(id);\r\n\t\t\t}\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\tthis.setGanttMode(mode);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tconst top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this.cleanUpdate(id);\r\n\t\t}\r\n\t\tconst atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this.cleanUpdate(id);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < atag.length; i++) {\r\n\t\t\tconst btag = atag[i];\r\n\t\t\tconst action = btag.getAttribute(\"type\");\r\n\t\t\tconst sid = btag.getAttribute(\"sid\");\r\n\t\t\tconst tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag, mode);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t}\r\n\r\n\tcleanUpdate(id: any[]) {\r\n\t\tif (id) {\r\n\t\t\tfor (let i = 0; i < id.length; i++) {\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfinalizeUpdate() {\r\n\t\tif (this._waitMode) {\r\n\t\t\tthis._waitMode--;\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length) {\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @desc: initializes data-processor\r\n\t * @param: gantt - dhtmlxGantt object to attach this data-processor to\r\n\t * @type: public\r\n\t */\r\n\tinit(gantt: any) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$gantt = gantt;\r\n\t\tif (this.$gantt._dp_init) {\r\n\t\t\tthis.$gantt._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis.styles = {\r\n\t\t\tupdated:\"gantt_updated\",\r\n\t\t\torder:\"gantt_updated\",\r\n\t\t\tinserted:\"gantt_inserted\",\r\n\t\t\tdeleted:\"gantt_deleted\",\r\n\t\t\tdelete_confirmation:\"gantt_deleted\",\r\n\t\t\tinvalid:\"gantt_invalid\",\r\n\t\t\terror:\"gantt_error\",\r\n\t\t\tclear:\"\"\r\n\t\t};\r\n\r\n\t\tthis._methods=[\"_row_style\",\"setCellTextStyle\",\"_change_id\",\"_delete_task\"];\r\n\t\textendGantt(this.$gantt, this);\r\n\t\tconst dataProcessorEvents = new DataProcessorEvents(this.$gantt, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this.setGanttMode;\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$gantt._dp;\r\n\t\t\tdelete this.$gantt._change_id;\r\n\t\t\tdelete this.$gantt._row_style;\r\n\t\t\tdelete this.$gantt._delete_task;\r\n\t\t\tdelete this.$gantt._sendTaskOrder;\r\n\t\t\tdelete this.$gantt;\r\n\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$gantt.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\t}\r\n\r\n\tsetOnAfterUpdate(handler) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", handler);\r\n\t}\r\n\r\n\tsetOnBeforeUpdateHandler(handler) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", handler);\r\n\t}\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate(interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._needUpdate = false;\r\n\r\n\t\tthis._updateBusy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", this.afterAutoUpdate); // arguments sid, action, tid, xml_node;\r\n\r\n\t\tthis.attachEvent(\"onFullSync\", this.fullSync);\r\n\r\n\t\tsetInterval(() => {\r\n\t\t\tthis.loadUpdate();\r\n\t\t}, interval);\r\n\t}\r\n\r\n\t/* process updating request response\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate(sid, action, tid, xml_node) { // tslint:disable-line\r\n\t\tif (action === \"collision\") {\r\n\t\t\tthis._needUpdate = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync() {\r\n\t\tif (this._needUpdate) {\r\n\t\t\tthis._needUpdate = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates(url, callback) {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tif (this._updateBusy) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\tthis._updateBusy = true;\r\n\t\t}\r\n\r\n\t\tajax.get(url, callback);\r\n\r\n\t}\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate() {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tconst version = this.$gantt.getUserData(0, \"version\", this._ganttMode);\r\n\t\tlet url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, (xml) => {\r\n\t\t\tconst vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tthis.$gantt.setUserData(0, \"version\", this._getXmlNodeValue(vers[0]), this._ganttMode);\r\n\r\n\t\t\tconst updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tthis._silent_mode = true;\r\n\r\n\t\t\t\tfor (let i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tconst status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tconst id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tconst parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._silent_mode = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis._updateBusy = false;\r\n\t\t});\r\n\t}\r\n\r\n\tdestructor() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {}; // ?\r\n\t\tthis._invalid = {};\r\n\t\tthis._storage.clear();\r\n\t\tthis._storage = null;\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t}\r\n\r\n\tsetGanttMode(mode) {\r\n\t\tif (mode === \"tasks\") {\r\n\t\t\tmode = \"task\";\r\n\t\t} else if (mode === \"links\") {\r\n\t\t\tmode = \"link\";\r\n\t\t}\r\n\r\n\t\tconst modes = this.modes || {};\r\n\t\tconst ganttMode = this.getGanttMode();\r\n\t\tif (ganttMode) {\r\n\t\t\tmodes[ganttMode] = {\r\n\t\t\t\t_in_progress : this._in_progress,\r\n\t\t\t\t_invalid: this._invalid,\r\n\t\t\t\t_storage: this._storage,\r\n\t\t\t\tupdatedRows : this.updatedRows\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tlet newState = modes[mode];\r\n\t\tif (!newState) {\r\n\t\t\tnewState = modes[mode] = {\r\n\t\t\t\t_in_progress : {},\r\n\t\t\t\t_invalid : {},\r\n\t\t\t\t_storage : SimpleStorage.create(),\r\n\t\t\t\tupdatedRows : []\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis._in_progress = newState._in_progress;\r\n\t\tthis._invalid = newState._invalid;\r\n\t\tthis._storage = newState._storage;\r\n\t\tthis.updatedRows = newState.updatedRows;\r\n\t\tthis.modes = modes;\r\n\t\tthis._ganttMode = mode;\r\n\t}\r\n\tgetGanttMode():string {\r\n\t\treturn this._ganttMode;\r\n\t}\r\n\r\n\tstoreItem(item) {\r\n\t\tthis._storage.storeItem(item);\r\n\t}\r\n\r\n\turl(url: string) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t}\r\n\r\n\tprotected _beforeSendData(data: any, rowId: any) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tthis._sendData(data, rowId);\r\n\t}\r\n\r\n\tprotected _serializeAsJSON(data: any) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tconst copy = utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t}\r\n\r\n\tprotected _applyPayload(url: string) {\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\t\tif (this._payload) {\r\n\t\t\tfor (const key in this._payload) {\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\tprotected _cleanupArgumentsBeforeSend(dataToSend: any) {\r\n\t\tlet processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(const i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t}\r\n\tprotected _cleanupItemBeforeSend(updatedItem: any) {\r\n\t\tlet output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprotected _sendData(dataToSend: any, rowId?: any) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tconst ajax = this.$gantt.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tconst taskState = this.getState(rowId);\r\n\t\t\tconst taskAction = this.getActionByState(taskState);\r\n\t\t\tconst ganttMode = this.getGanttMode();\r\n\t\t\tconst _onResolvedCreateUpdate = (tag) => {\r\n\t\t\t\tlet action = taskState || \"updated\";\r\n\t\t\t\tlet sid = rowId;\r\n\t\t\t\tlet tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\taction = tag.action || taskState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tthis.afterUpdateCallback(sid, tid, action, tag, ganttMode);\r\n\t\t\t};\r\n\r\n\t\t\tlet actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tif(this._routerParametersFormat === \"object\"){\r\n\t\t\t\t\tconst obj = {\r\n\t\t\t\t\t\tentity: ganttMode,\r\n\t\t\t\t\t\taction: taskAction,\r\n\t\t\t\t\t\tdata: dataToSend,\r\n\t\t\t\t\t\tid: rowId\r\n\t\t\t\t\t};\r\n\t\t\t\t\tactionPromise = this._router(obj);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tactionPromise = this._router(ganttMode, taskAction, dataToSend, rowId);\r\n\t\t\t\t}\r\n\t\t\t} else if (this._router[ganttMode] instanceof Function) {\r\n\t\t\t\tactionPromise = this._router[ganttMode](taskAction, dataToSend, rowId);\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconst errorMsgStart = \"Incorrect configuration of gantt.createDataProcessor\";\r\n\t\t\t\tconst errorMsgEnd = `\r\nYou need to either add missing properties to the dataProcessor router object or to use a router function.\r\nSee https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting and https://docs.dhtmlx.com/gantt/api__gantt_createdataprocessor.html for details.`;\r\n\r\n\t\t\t\tif(!this._router[ganttMode]){\r\n\t\t\t\t\tthrow new Error(`${errorMsgStart}: router for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t}\r\n\t\t\t\tswitch (taskState) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tif(!this._router[ganttMode].create){\r\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **create** action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tif(!this._router[ganttMode].delete){\r\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **delete** action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(!this._router[ganttMode].update){\r\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **update**\" action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch((error) => {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet queryParams: any;\r\n\t\tqueryParams = {\r\n\t\t\tcallback: (xml) => {\r\n\t\t\t\tconst ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (const key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.afterUpdate(this, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: this._headers\r\n\t\t};\r\n\r\n\t\tconst dhxVersion = \"dhx_version=\" + this.$gantt.getUserData(0, \"version\", this._ganttMode);\r\n\t\tconst urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, dhxVersion].join(\"&\")) : \"\");\r\n\t\tlet url: any = this._applyPayload(urlParams);\r\n\t\tlet data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tconst preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (const key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t}\r\n\r\n\tprotected _forEachUpdatedRow(code: any) {\r\n\t\tconst updatedRows = this.updatedRows.slice();\r\n\t\tfor (let i = 0; i < updatedRows.length; i++) {\r\n\t\t\tconst rowId = updatedRows[i];\r\n\t\t\tif (this.$gantt.getUserData(rowId, this.action_param, this._ganttMode)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _setDefaultTransactionMode() {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t}\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\tprotected _getXmlNodeValue(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprotected _getAllData() {\r\n\t\tconst out = {};\r\n\t\tlet hasOne = false;\r\n\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thasOne = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\r\n\t\treturn hasOne ? out : null;\r\n\t}\r\n\r\n\tprotected _prepareDate(value: Date) : string {\r\n\t\treturn this.$gantt.defined(this.$gantt.templates.xml_format) ? this.$gantt.templates.xml_format(value) : this.$gantt.templates.format_date(value);\r\n\t}\r\n\r\n\tprotected _prepareArray(value: any[], traversedObjects: object[]) : any[] {\r\n\t\ttraversedObjects.push(value);\r\n\r\n\t\treturn value.map((item) => {\r\n\t\t\tif(helpers.isDate(item)){\r\n\t\t\t\treturn this._prepareDate(item);\r\n\t\t\t} else if (Array.isArray(item) && !helpers.arrayIncludes(traversedObjects, item)){\r\n\t\t\t\treturn this._prepareArray(item, traversedObjects);\r\n\t\t\t} else if (item && typeof item === \"object\" && !helpers.arrayIncludes(traversedObjects, item)) {\r\n\t\t\t\treturn this._prepareObject(item, traversedObjects);\r\n\t\t\t} else {\r\n\t\t\t\treturn item;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected _prepareObject(rawItem: any, traversedObjects: object[]) : any {\r\n\t\tconst processedItem = {};\r\n\t\ttraversedObjects.push(rawItem);\r\n\r\n\t\tfor (const key in rawItem) {\r\n\t\t\tif (key.substr(0, 1) === \"$\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst value = rawItem[key];\r\n\t\t\tif (helpers.isDate(value)) {\r\n\t\t\t\tprocessedItem[key] = this._prepareDate(value);\r\n\t\t\t} else if(value === null) {\r\n\t\t\t\tprocessedItem[key] = \"\";\r\n\t\t\t} else if (Array.isArray(value) && !helpers.arrayIncludes(traversedObjects, value)){\r\n\t\t\t\tprocessedItem[key] = this._prepareArray(value, traversedObjects);\r\n\t\t\t} else if (value && typeof value === \"object\" && !helpers.arrayIncludes(traversedObjects, value)) {\r\n\t\t\t\tprocessedItem[key] = this._prepareObject(value, traversedObjects);\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn processedItem;\r\n\t}\r\n\r\n\tprotected _prepareDataItem(rawItem: any): any {\r\n\t\tconst processedItem = this._prepareObject(rawItem, []);\r\n\r\n\t\tprocessedItem[this.action_param] = this.$gantt.getUserData(rawItem.id, this.action_param, this._ganttMode);\r\n\t\treturn processedItem;\r\n\t}\r\n\r\n\tprotected getStoredItem(id){\r\n\t\treturn this._storage.getStoredItem(id);\r\n\t}\r\n\r\n\tprotected _getRowData(id) {\r\n\t\tlet dataItem;\r\n\t\tconst gantt = this.$gantt;\r\n\t\tif (this.getGanttMode() === \"task\") {\r\n\t\t\tif(gantt.isTaskExists(id)){\r\n\t\t\t\tdataItem =this.$gantt.getTask(id);\r\n\t\t\t}\r\n\t\t} else if (this.getGanttMode() === \"assignment\") {\r\n\t\t\tif(this.$gantt.$data.assignmentsStore.exists(id)){\r\n\t\t\t\tdataItem =this.$gantt.$data.assignmentsStore.getItem(id);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(gantt.isLinkExists(id)){\r\n\t\t\t\tdataItem =this.$gantt.getLink(id);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = this.getStoredItem(id);\r\n\t\t}\r\n\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id };\r\n\t\t}\r\n\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n}","var DataProcessor = require(\"./data_processor\");\n\nmodule.exports = {\n DEPRECATED_api: function DEPRECATED_api(server) {\n return new DataProcessor.DataProcessor(server);\n },\n createDataProcessor: DataProcessor.createDataProcessor,\n getDataProcessorModes: DataProcessor.getAvailableModes\n};","var isHeadless = require(\"../../utils/is_headless\");\n\nvar storeRenderCreator = function storeRenderCreator(name, gantt) {\n var store = gantt.getDatastore(name);\n var itemRepainter = {\n renderItem: function renderItem(id, renderer) {\n var renders = renderer.getLayers();\n var item = store.getItem(id);\n\n if (item && store.isVisible(id)) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].render_item(item);\n }\n }\n },\n renderItems: function renderItems(renderer) {\n var renderers = renderer.getLayers();\n\n for (var i = 0; i < renderers.length; i++) {\n renderers[i].clear();\n }\n\n var allData = null;\n var loadedRanges = {};\n\n for (var _i = 0; _i < renderers.length; _i++) {\n var layer = renderers[_i];\n var layerData = void 0;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n\n if (range.start !== undefined && range.end !== undefined) {\n var key = range.start + \" - \" + range.end;\n\n if (loadedRanges[key]) {\n layerData = loadedRanges[key];\n } else {\n layerData = store.getIndexRange(range.start, range.end);\n loadedRanges[key] = layerData;\n }\n } else if (range.ids !== undefined) {\n layerData = range.ids.map(function (id) {\n return store.getItem(id);\n });\n } else {\n throw new Error(\"Invalid range returned from 'getVisibleRange' of the layer\");\n }\n } else {\n if (!allData) {\n allData = store.getVisibleItems();\n }\n\n layerData = allData;\n }\n\n if (layer.prepare_data) {\n // GS-1605. Highlight timeline cells below tasks and in an empty chart\n layer.prepare_data(layerData);\n }\n\n renderers[_i].render_items(layerData);\n }\n },\n updateItems: function updateItems(layer) {\n if (layer.update_items) {\n var data;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n\n if (range.start !== undefined && range.end !== undefined) {\n data = store.getIndexRange(range.start, range.end);\n } else if (range.ids !== undefined) {\n data = range.ids.map(function (id) {\n return store.getItem(id);\n });\n } else {\n throw new Error(\"Invalid range returned from 'getVisibleRange' of the layer\");\n }\n } else {\n data = store.getVisibleItems();\n }\n\n if (layer.prepare_data) {\n // GS-1605. Highlight timeline cells below tasks and in an empty chart\n layer.prepare_data(data, layer);\n }\n\n layer.update_items(data);\n }\n }\n };\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n renderer.onUpdateRequest = function (layer) {\n itemRepainter.updateItems(layer);\n };\n }\n });\n\n function skipRepaint(gantt) {\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return true;\n } else {\n return false;\n }\n }\n\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!id || action == \"move\" || action == \"delete\") {\n store.callEvent(\"onBeforeRefreshAll\", []);\n store.callEvent(\"onAfterRefreshAll\", []);\n } else {\n store.callEvent(\"onBeforeRefreshItem\", [item.id]);\n store.callEvent(\"onAfterRefreshItem\", [item.id]);\n }\n });\n store.attachEvent(\"onAfterRefreshAll\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer && !skipRepaint(gantt)) {\n itemRepainter.renderItems(renderer);\n }\n });\n store.attachEvent(\"onAfterRefreshItem\", function (id) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n itemRepainter.renderItem(id, renderer);\n }\n }); // TODO: probably can be done more in a more efficient way\n\n store.attachEvent(\"onItemOpen\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n store.attachEvent(\"onItemClose\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n\n function refreshId(renders, oldId, newId, item) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].change_id(oldId, newId);\n }\n }\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (isHeadless(gantt)) {\n return true;\n } // in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n // use onBeforeIdChange for this hook.\n // TODO: use something more reasonable instead\n\n\n store.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!store.isSilent()) {\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n // missing check for renderer GS-1814\n refreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n itemRepainter.renderItem(newId, renderer);\n } else {\n // GS-1814 repaint ui to apply new id when the datastore don't have own renderer\n gantt.render();\n }\n }\n });\n};\n\nmodule.exports = {\n bindDataStore: storeRenderCreator\n};","function createDataStoreSelectMixin(store) {\n var selectedId = null;\n var deleteItem = store._removeItemInner;\n\n function _unselect(id) {\n selectedId = null;\n this.callEvent(\"onAfterUnselect\", [id]);\n }\n\n store._removeItemInner = function (id) {\n if (selectedId == id) {\n _unselect.call(this, id);\n }\n\n if (selectedId && this.eachItem) {\n this.eachItem(function (subItem) {\n if (subItem.id == selectedId) {\n _unselect.call(this, subItem.id);\n }\n }, id);\n }\n\n return deleteItem.apply(this, arguments);\n };\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (store.getSelectedId() == oldId) {\n store.silent(function () {\n store.unselect(oldId);\n store.select(newId);\n });\n }\n });\n return {\n select: function select(id) {\n if (id) {\n if (selectedId == id) return selectedId;\n\n if (!this._skip_refresh) {\n if (!this.callEvent(\"onBeforeSelect\", [id])) {\n return false;\n }\n }\n\n this.unselect();\n selectedId = id;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n this.callEvent(\"onAfterSelect\", [id]);\n }\n }\n\n return selectedId;\n },\n getSelectedId: function getSelectedId() {\n return selectedId;\n },\n isSelected: function isSelected(id) {\n return id == selectedId;\n },\n unselect: function unselect(id) {\n var id = id || selectedId;\n if (!id) return;\n selectedId = null;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n\n _unselect.call(this, id);\n }\n }\n };\n}\n\nmodule.exports = createDataStoreSelectMixin;","var utils = require(\"../../utils/utils\");\n\nvar createLinksStoreFacade = function createLinksStoreFacade() {\n return {\n getLinkCount: function getLinkCount() {\n return this.$data.linksStore.count();\n },\n getLink: function getLink(id) {\n return this.$data.linksStore.getItem(id);\n },\n getLinks: function getLinks() {\n return this.$data.linksStore.getItems();\n },\n isLinkExists: function isLinkExists(id) {\n return this.$data.linksStore.exists(id);\n },\n addLink: function addLink(link) {\n var newLink = this.$data.linksStore.addItem(link); // GS-1222. Update fullOrder otherwise the link won't appear after render\n\n if (this.$data.linksStore.isSilent()) {\n this.$data.linksStore.fullOrder.push(newLink);\n }\n\n return newLink;\n },\n updateLink: function updateLink(id, data) {\n if (!utils.defined(data)) data = this.getLink(id);\n this.$data.linksStore.updateItem(id, data);\n },\n deleteLink: function deleteLink(id) {\n return this.$data.linksStore.removeItem(id);\n },\n changeLinkId: function changeLinkId(oldid, newid) {\n return this.$data.linksStore.changeId(oldid, newid);\n }\n };\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nvar createTasksDatastoreFacade = function createTasksDatastoreFacade() {\n return {\n getTask: function getTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument for gantt.getTask\");\n var task = this.$data.tasksStore.getItem(id);\n this.assert(task, \"Task not found id=\" + id);\n return task;\n },\n getTaskByTime: function getTaskByTime(from, to) {\n var p = this.$data.tasksStore.getItems();\n var res = [];\n\n if (!(from || to)) {\n res = p;\n } else {\n from = +from || -Infinity;\n to = +to || Infinity;\n\n for (var t = 0; t < p.length; t++) {\n var task = p[t];\n if (+task.start_date < to && +task.end_date > from) res.push(task);\n }\n }\n\n return res;\n },\n isTaskExists: function isTaskExists(id) {\n if (!this.$data || !this.$data.tasksStore) {\n return false;\n }\n\n return this.$data.tasksStore.exists(id);\n },\n updateTask: function updateTask(id, item) {\n if (!utils.defined(item)) item = this.getTask(id);\n this.$data.tasksStore.updateItem(id, item);\n if (this.isTaskExists(id)) this.refreshTask(id);\n },\n addTask: function addTask(item, parent, index) {\n if (!utils.defined(item.id)) item.id = utils.uid(); //GS-761: assert unique ID\n\n if (this.isTaskExists(item.id)) {\n var task = this.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n return this.$data.tasksStore.updateItem(item.id, item);\n }\n }\n\n if (!utils.defined(parent)) parent = this.getParent(item) || 0;\n if (!this.isTaskExists(parent)) parent = this.config.root_id;\n this.setParent(item, parent);\n return this.$data.tasksStore.addItem(item, index, parent);\n },\n deleteTask: function deleteTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n return this.$data.tasksStore.removeItem(id);\n },\n getTaskCount: function getTaskCount() {\n return this.$data.tasksStore.count();\n },\n getVisibleTaskCount: function getVisibleTaskCount() {\n return this.$data.tasksStore.countVisible();\n },\n getTaskIndex: function getTaskIndex(id) {\n return this.$data.tasksStore.getBranchIndex(id);\n },\n getGlobalTaskIndex: function getGlobalTaskIndex(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument\");\n return this.$data.tasksStore.getIndexById(id);\n },\n eachTask: function eachTask(code, parent, master) {\n return this.$data.tasksStore.eachItem(utils.bind(code, master || this), parent);\n },\n eachParent: function eachParent(callback, startTask, master) {\n return this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n },\n changeTaskId: function changeTaskId(oldid, newid) {\n this.$data.tasksStore.changeId(oldid, newid);\n var task = this.$data.tasksStore.getItem(newid);\n var links = [];\n\n if (task.$source) {\n links = links.concat(task.$source);\n }\n\n if (task.$target) {\n links = links.concat(task.$target);\n }\n\n for (var i = 0; i < links.length; i++) {\n var link = this.getLink(links[i]);\n\n if (link.source == oldid) {\n link.source = newid;\n }\n\n if (link.target == oldid) {\n link.target = newid;\n }\n }\n },\n calculateTaskLevel: function calculateTaskLevel(item) {\n return this.$data.tasksStore.calculateItemLevel(item);\n },\n getNext: function getNext(id) {\n return this.$data.tasksStore.getNext(id);\n },\n getPrev: function getPrev(id) {\n return this.$data.tasksStore.getPrev(id);\n },\n getParent: function getParent(id) {\n return this.$data.tasksStore.getParent(id);\n },\n setParent: function setParent(task, new_pid, silent) {\n return this.$data.tasksStore.setParent(task, new_pid, silent);\n },\n getSiblings: function getSiblings(id) {\n return this.$data.tasksStore.getSiblings(id).slice();\n },\n getNextSibling: function getNextSibling(id) {\n return this.$data.tasksStore.getNextSibling(id);\n },\n getPrevSibling: function getPrevSibling(id) {\n return this.$data.tasksStore.getPrevSibling(id);\n },\n getTaskByIndex: function getTaskByIndex(index) {\n var id = this.$data.tasksStore.getIdByIndex(index);\n\n if (this.isTaskExists(id)) {\n return this.getTask(id);\n } else {\n return null;\n }\n },\n getChildren: function getChildren(id) {\n if (!this.hasChild(id)) {\n return [];\n } else {\n return this.$data.tasksStore.getChildren(id).slice();\n }\n },\n hasChild: function hasChild(id) {\n return this.$data.tasksStore.hasChild(id);\n },\n open: function open(id) {\n this.$data.tasksStore.open(id);\n },\n close: function close(id) {\n this.$data.tasksStore.close(id);\n },\n moveTask: function moveTask(sid, tindex, parent) {\n parent = replaceValidZeroId(parent, this.config.root_id);\n return this.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n },\n sort: function sort(field, desc, parent, silent) {\n var render = !silent; //4th argument to cancel redraw after sorting\n\n this.$data.tasksStore.sort(field, desc, parent);\n this.callEvent(\"onAfterSort\", [field, desc, parent]);\n\n if (render) {\n this.render();\n }\n }\n };\n};\n\nmodule.exports = createTasksDatastoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksFacade = require(\"./datastore_tasks\"),\n createLinksFacade = require(\"./datastore_links\"),\n DataStore = require(\"../datastore/datastore\"),\n TreeDataStore = require(\"../datastore/treedatastore\"),\n createDatastoreSelect = require(\"../datastore/select\");\n\nvar datastoreRender = require(\"../datastore/datastore_render\");\n\nvar isHeadless = require(\"../../utils/is_headless\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nfunction getDatastores() {\n var storeNames = this.$services.getService(\"datastores\");\n var res = [];\n\n for (var i = 0; i < storeNames.length; i++) {\n var store = this.getDatastore(storeNames[i]);\n\n if (!store.$destroyed) {\n res.push(store);\n }\n }\n\n return res;\n}\n\nvar createDatastoreFacade = function createDatastoreFacade() {\n return {\n createDatastore: function createDatastore(config) {\n var $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n if (config) {\n var self = this;\n\n config.openInitially = function () {\n return self.config.open_tree_initially;\n };\n\n config.copyOnParse = function () {\n return self.config.deepcopy_on_parse;\n };\n }\n\n var store = new $StoreType(config);\n this.mixin(store, createDatastoreSelect(store));\n\n if (config.name) {\n var servicePrefix = \"datastore:\";\n var storeAccessName = servicePrefix + config.name;\n store.attachEvent(\"onDestroy\", function () {\n this.$services.dropService(storeAccessName);\n var storeList = this.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeList.length; i++) {\n if (storeList[i] === config.name) {\n storeList.splice(i, 1);\n break;\n }\n }\n }.bind(this));\n this.$services.dropService(storeAccessName);\n this.$services.setService(storeAccessName, function () {\n return store;\n });\n var storeList = this.$services.getService(\"datastores\");\n\n if (!storeList) {\n storeList = [];\n this.$services.setService(\"datastores\", function () {\n return storeList;\n });\n storeList.push(config.name);\n } else if (storeList.indexOf(config.name) < 0) {\n storeList.push(config.name);\n }\n\n datastoreRender.bindDataStore(config.name, this);\n }\n\n return store;\n },\n getDatastore: function getDatastore(name) {\n return this.$services.getService(\"datastore:\" + name);\n },\n _getDatastores: getDatastores,\n refreshData: function refreshData() {\n var scrollState;\n\n if (!isHeadless(this)) {\n scrollState = this.getScrollState();\n }\n\n this.callEvent(\"onBeforeDataRender\", []);\n var stores = getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].refresh();\n }\n\n if (this.config.preserve_scroll && !isHeadless(this) && (scrollState.x || scrollState.y)) {\n this.scrollTo(scrollState.x, scrollState.y);\n }\n\n this.callEvent(\"onDataRender\", []);\n },\n isChildOf: function isChildOf(childId, parentId) {\n return this.$data.tasksStore.isChildOf(childId, parentId);\n },\n refreshTask: function refreshTask(taskId, refresh_links) {\n var task = this.getTask(taskId);\n var self = this;\n\n function refreshLinks() {\n if (refresh_links !== undefined && !refresh_links) return;\n\n for (var i = 0; i < task.$source.length; i++) {\n self.refreshLink(task.$source[i]);\n }\n\n for (var i = 0; i < task.$target.length; i++) {\n self.refreshLink(task.$target[i]);\n }\n }\n\n if (task && this.isTaskVisible(taskId)) {\n this.$data.tasksStore.refresh(taskId, !!this.getState(\"tasksDnd\").drag_id || refresh_links === false); // do quick refresh during drag and drop\n\n refreshLinks();\n } else if (this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId)) && !this._bulk_dnd) {\n this.refreshTask(this.getParent(taskId));\n var hasSplitParent = false;\n this.eachParent(function (parent) {\n if (hasSplitParent || this.isSplitTask(parent)) {\n hasSplitParent = true;\n }\n }, taskId);\n\n if (hasSplitParent) {\n refreshLinks();\n }\n }\n },\n refreshLink: function refreshLink(linkId) {\n this.$data.linksStore.refresh(linkId, !!this.getState(\"tasksDnd\").drag_id); // do quick refresh during drag and drop\n },\n silent: function silent(code) {\n var gantt = this;\n gantt.$data.tasksStore.silent(function () {\n gantt.$data.linksStore.silent(function () {\n code();\n });\n });\n },\n clearAll: function clearAll() {\n var stores = getDatastores.call(this); // clear all stores without invoking clearAll event\n // in order to prevent calling handlers when only some stores are cleared\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].silent(function () {\n stores[i].clearAll();\n });\n } // run clearAll again to invoke events\n\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].clearAll();\n }\n\n this._update_flags();\n\n this.userdata = {};\n this.callEvent(\"onClear\", []);\n this.render();\n },\n _clear_data: function _clear_data() {\n this.$data.tasksStore.clearAll();\n this.$data.linksStore.clearAll();\n\n this._update_flags();\n\n this.userdata = {};\n },\n selectTask: function selectTask(id) {\n var store = this.$data.tasksStore;\n if (!this.config.select_task) return false;\n id = replaceValidZeroId(id, this.config.root_id);\n\n if (id) {\n var oldSelectId = this.getSelectedId(); // Don't repaint the resource panel as the data didn't change\n\n store._skipResourceRepaint = true;\n store.select(id);\n store._skipResourceRepaint = false; // GS-730. Split task is not included in the tree, \n // so the datastore renderer will think that the task is not visible\n\n if (oldSelectId && store.pull[oldSelectId].$split_subtask && oldSelectId != id) {\n this.refreshTask(oldSelectId);\n }\n\n if (store.pull[id].$split_subtask && oldSelectId != id) {\n // GS-1850. Do not repaint split task after double click\n this.refreshTask(id);\n }\n }\n\n return store.getSelectedId();\n },\n unselectTask: function unselectTask(id) {\n var store = this.$data.tasksStore;\n store.unselect(id); // GS-730. Split task is not included in the tree, \n // so the datastore renderer will think that the task is not visible\n\n if (id && store.pull[id].$split_subtask) {\n this.refreshTask(id);\n }\n },\n isSelectedTask: function isSelectedTask(id) {\n return this.$data.tasksStore.isSelected(id);\n },\n getSelectedId: function getSelectedId() {\n return this.$data.tasksStore.getSelectedId();\n }\n };\n};\n\nfunction createFacade() {\n var res = utils.mixin({}, createDatastoreFacade());\n utils.mixin(res, createTasksFacade());\n utils.mixin(res, createLinksFacade());\n return res;\n}\n\nmodule.exports = {\n create: createFacade\n};","var utils = require(\"../../utils/utils\");\n\nvar facadeFactory = require(\"./../facades/datastore\");\n\nvar calculateScaleRange = require(\"../gantt_data_range\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nfunction initDataStores(gantt) {\n var facade = facadeFactory.create();\n utils.mixin(gantt, facade);\n var tasksStore = gantt.createDatastore({\n name: \"task\",\n type: \"treeDatastore\",\n rootId: function rootId() {\n return gantt.config.root_id;\n },\n initItem: utils.bind(_init_task, gantt),\n getConfig: function getConfig() {\n return gantt.config;\n }\n });\n var linksStore = gantt.createDatastore({\n name: \"link\",\n initItem: utils.bind(_init_link, gantt)\n });\n gantt.attachEvent(\"onDestroy\", function () {\n tasksStore.destructor();\n linksStore.destructor();\n });\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (gantt.isLinkExists(link.id) || link.id === \"predecessor_generated\") {\n // link was already added into gantt\n return true;\n }\n\n var source = gantt.getTask(link.source);\n var taskLinks = source.$source;\n\n for (var i = 0; i < taskLinks.length; i++) {\n var existingLink = gantt.getLink(taskLinks[i]);\n var sourceMatch = link.source == existingLink.source;\n var targetMatch = link.target == existingLink.target;\n var typeMatch = link.type == existingLink.type; // prevent creating duplicated links from the UI\n\n if (sourceMatch && targetMatch && typeMatch) {\n return false;\n }\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onBeforeRefreshAll\", function () {\n // GS-2170 do not recalculate indexes and dates as the event will be called later in the onStoreUpdate event\n if (tasksStore._skipTaskRecalculation) {\n return;\n }\n\n var order = tasksStore.getVisibleItems();\n\n for (var i = 0; i < order.length; i++) {\n var item = order[i];\n item.$index = i;\n item.$local_index = gantt.getTaskIndex(item.id);\n gantt.resetProjectDates(item);\n }\n });\n tasksStore.attachEvent(\"onFilterItem\", function (id, task) {\n if (gantt.config.show_tasks_outside_timescale) {\n return true;\n }\n\n var min = null,\n max = null;\n\n if (gantt.config.start_date && gantt.config.end_date) {\n if (gantt._isAllowedUnscheduledTask(task)) return true;\n min = gantt.config.start_date.valueOf();\n max = gantt.config.end_date.valueOf();\n if (+task.start_date > max || +task.end_date < +min) return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onIdChange\", function (oldId, newId) {\n gantt._update_flags(oldId, newId);\n\n var changedTask = gantt.getTask(newId);\n\n if (!tasksStore.isSilent()) {\n if (changedTask.$split_subtask || changedTask.rollup) {\n gantt.eachParent(function (parent) {\n gantt.refreshTask(parent.id);\n }, newId);\n }\n }\n });\n tasksStore.attachEvent(\"onAfterUpdate\", function (id) {\n gantt._update_parents(id);\n\n if (gantt.getState(\"batchUpdate\").batch_update) {\n return true;\n }\n\n var task = tasksStore.getItem(id);\n if (!task.$source) task.$source = [];\n\n for (var i = 0; i < task.$source.length; i++) {\n linksStore.refresh(task.$source[i]);\n }\n\n if (!task.$target) task.$target = [];\n\n for (var i = 0; i < task.$target.length; i++) {\n linksStore.refresh(task.$target[i]);\n }\n });\n tasksStore.attachEvent(\"onBeforeItemMove\", function (sid, parent, tindex) {\n // GS-125. Don't allow users to move the placeholder task\n if (isPlaceholderTask(sid, gantt, tasksStore)) {\n //eslint-disable-next-line\n console.log(\"The placeholder task cannot be moved to another position.\");\n return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onAfterItemMove\", function (sid, parent, tindex) {\n var source = gantt.getTask(sid);\n\n if (this.getNextSibling(sid) !== null) {\n source.$drop_target = this.getNextSibling(sid);\n } else if (this.getPrevSibling(sid) !== null) {\n source.$drop_target = \"next:\" + this.getPrevSibling(sid);\n } else {\n source.$drop_target = \"next:null\";\n }\n });\n tasksStore.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (action == \"delete\") {\n gantt._update_flags(id, null);\n }\n\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (gantt.config.fit_tasks && action !== \"paint\") {\n var oldState = gantt.getState();\n calculateScaleRange(gantt);\n var newState = gantt.getState(); //this._init_tasks_range();\n\n if (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n if (action == \"add\" || action == \"move\" || action == \"delete\") {\n if (gantt.$layout) {\n // GS-2170. Do not recalculate the indexes and dates of other tasks in the\n // onBeforeResize layout event, but do it later. If lightbox is opened, it will\n // trigger the refreshData, so the indexes and dates will be recalculated there\n if (this.$config.name == \"task\" && (action == \"add\" || action == \"delete\")) {\n if (this._skipTaskRecalculation != \"lightbox\") {\n this._skipTaskRecalculation = true;\n }\n }\n\n gantt.$layout.resize();\n }\n } else if (!id) {\n linksStore.refresh();\n }\n });\n linksStore.attachEvent(\"onAfterAdd\", function (id, link) {\n sync_link(link);\n });\n linksStore.attachEvent(\"onAfterUpdate\", function (id, link) {\n sync_links();\n });\n linksStore.attachEvent(\"onAfterDelete\", function (id, link) {\n sync_link_delete(link);\n });\n linksStore.attachEvent(\"onBeforeIdChange\", function (oldId, newId) {\n sync_link_delete(gantt.mixin({\n id: oldId\n }, gantt.$data.linksStore.getItem(newId)));\n sync_link(gantt.$data.linksStore.getItem(newId));\n });\n\n function checkLinkedTaskVisibility(taskId) {\n var isVisible = gantt.isTaskVisible(taskId);\n\n if (!isVisible && gantt.isTaskExists(taskId)) {\n var parent = gantt.getParent(taskId);\n\n if (gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)) {\n parent = gantt.getTask(parent);\n\n if (gantt.isSplitTask(parent)) {\n isVisible = true;\n }\n }\n }\n\n return isVisible;\n }\n\n linksStore.attachEvent(\"onFilterItem\", function (id, link) {\n if (!gantt.config.show_links) {\n return false;\n }\n\n var sourceVisible = checkLinkedTaskVisibility(link.source);\n var targetVisible = checkLinkedTaskVisibility(link.target);\n if (!(sourceVisible && targetVisible) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target))) return false;\n return gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n });\n\n (function () {\n // delete all connected links after task is deleted\n var treeHelper = require(\"../../utils/task_tree_helpers\");\n\n var deletedLinks = {};\n gantt.attachEvent(\"onBeforeTaskDelete\", function (id, item) {\n deletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n return true;\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n if (deletedLinks[id]) {\n gantt.$data.linksStore.silent(function () {\n for (var i in deletedLinks[id]) {\n if (gantt.isLinkExists(i)) {\n gantt.$data.linksStore.removeItem(i);\n }\n\n sync_link_delete(deletedLinks[id][i]);\n }\n\n deletedLinks[id] = null;\n });\n }\n });\n })();\n\n gantt.attachEvent(\"onAfterLinkDelete\", function (id, link) {\n gantt.refreshTask(link.source);\n gantt.refreshTask(link.target);\n });\n gantt.attachEvent(\"onParse\", sync_links);\n mapEvents({\n source: linksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onLinkLoading\",\n \"onBeforeAdd\": \"onBeforeLinkAdd\",\n \"onAfterAdd\": \"onAfterLinkAdd\",\n \"onBeforeUpdate\": \"onBeforeLinkUpdate\",\n \"onAfterUpdate\": \"onAfterLinkUpdate\",\n \"onBeforeDelete\": \"onBeforeLinkDelete\",\n \"onAfterDelete\": \"onAfterLinkDelete\",\n \"onIdChange\": \"onLinkIdChange\"\n }\n });\n mapEvents({\n source: tasksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onTaskLoading\",\n \"onBeforeAdd\": \"onBeforeTaskAdd\",\n \"onAfterAdd\": \"onAfterTaskAdd\",\n \"onBeforeUpdate\": \"onBeforeTaskUpdate\",\n \"onAfterUpdate\": \"onAfterTaskUpdate\",\n \"onBeforeDelete\": \"onBeforeTaskDelete\",\n \"onAfterDelete\": \"onAfterTaskDelete\",\n \"onIdChange\": \"onTaskIdChange\",\n \"onBeforeItemMove\": \"onBeforeTaskMove\",\n \"onAfterItemMove\": \"onAfterTaskMove\",\n \"onFilterItem\": \"onBeforeTaskDisplay\",\n \"onItemOpen\": \"onTaskOpened\",\n \"onItemClose\": \"onTaskClosed\",\n \"onBeforeSelect\": \"onBeforeTaskSelected\",\n \"onAfterSelect\": \"onTaskSelected\",\n \"onAfterUnselect\": \"onTaskUnselected\"\n }\n });\n gantt.$data = {\n tasksStore: tasksStore,\n linksStore: linksStore\n };\n\n function sync_link(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n sourceTask.$source = sourceTask.$source || [];\n sourceTask.$source.push(link.id);\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n targetTask.$target = targetTask.$target || [];\n targetTask.$target.push(link.id);\n }\n }\n\n function sync_link_delete(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n\n for (var i = 0; i < sourceTask.$source.length; i++) {\n if (sourceTask.$source[i] == link.id) {\n sourceTask.$source.splice(i, 1);\n break;\n }\n }\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n\n for (var i = 0; i < targetTask.$target.length; i++) {\n if (targetTask.$target[i] == link.id) {\n targetTask.$target.splice(i, 1);\n break;\n }\n }\n }\n }\n\n function sync_links() {\n var task = null;\n var tasks = gantt.$data.tasksStore.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n task = tasks[i];\n task.$source = [];\n task.$target = [];\n }\n\n var links = gantt.$data.linksStore.getItems();\n\n for (var i = 0, len = links.length; i < len; i++) {\n var link = links[i];\n sync_link(link);\n }\n }\n\n function mapEvents(conf) {\n var mapFrom = conf.source;\n var mapTo = conf.target;\n\n for (var i in conf.events) {\n (function (sourceEvent, targetEvent) {\n mapFrom.attachEvent(sourceEvent, function () {\n return mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n }, targetEvent);\n })(i, conf.events[i]);\n }\n }\n\n function _init_task(task) {\n if (!this.defined(task.id)) task.id = this.uid();\n if (task.start_date) task.start_date = gantt.date.parseDate(task.start_date, \"parse_date\");\n if (task.end_date) task.end_date = gantt.date.parseDate(task.end_date, \"parse_date\");\n var duration = null;\n\n if (task.duration || task.duration === 0) {\n task.duration = duration = task.duration * 1;\n }\n\n if (duration) {\n if (task.start_date && !task.end_date) {\n task.end_date = this.calculateEndDate(task);\n } else if (!task.start_date && task.end_date) {\n task.start_date = this.calculateEndDate({\n start_date: task.end_date,\n duration: -task.duration,\n task: task\n });\n } //task.$calculate_duration = false;\n\n }\n\n task.progress = Number(task.progress) || 0;\n\n if (this._isAllowedUnscheduledTask(task)) {\n this._set_default_task_timing(task);\n }\n\n this._init_task_timing(task);\n\n if (task.start_date && task.end_date) this.correctTaskWorkTime(task);\n task.$source = [];\n task.$target = [];\n var originalTask = this.$data.tasksStore.getItem(task.id);\n\n if (originalTask && !utils.defined(task.open)) {\n // if a task with the same id is already in the gantt and the new object doesn't specify the `open` state -\n // restore the `open` state we already have in the chart\n task.$open = originalTask.$open;\n }\n\n if (task.parent === undefined) {\n task.parent = this.config.root_id;\n }\n\n return task;\n }\n\n function _init_link(link) {\n if (!this.defined(link.id)) link.id = this.uid();\n return link;\n }\n}\n\nmodule.exports = initDataStores;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n\n/**\n * bluebird build version 3.5.4\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function (e) {\n if (\"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module) module.exports = e();else if (\"function\" == typeof define && define.amd) define([], e);else {\n var f;\n \"undefined\" != typeof window ? f = window : \"undefined\" != typeof global ? f = global : \"undefined\" != typeof self && (f = self), f.Promise = e();\n }\n}(function () {\n var define, module, exports;\n return function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof _dereq_ == \"function\" && _dereq_;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f;\n }\n\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function (e) {\n var n = t[o][1][e];\n return s(n ? n : e);\n }, l, l.exports, e, t, n, r);\n }\n\n return n[o].exports;\n }\n\n var i = typeof _dereq_ == \"function\" && _dereq_;\n\n for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }\n\n return s;\n }({\n 1: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var SomePromiseArray = Promise._SomePromiseArray;\n\n function any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n }\n\n Promise.any = function (promises) {\n return any(promises);\n };\n\n Promise.prototype.any = function () {\n return any(this);\n };\n };\n }, {}],\n 2: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var firstLineError;\n\n try {\n throw new Error();\n } catch (e) {\n firstLineError = e;\n }\n\n var schedule = _dereq_(\"./schedule\");\n\n var Queue = _dereq_(\"./queue\");\n\n var util = _dereq_(\"./util\");\n\n function Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n\n this.drainQueues = function () {\n self._drainQueues();\n };\n\n this._schedule = schedule;\n }\n\n Async.prototype.setScheduler = function (fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n };\n\n Async.prototype.hasCustomScheduler = function () {\n return this._customScheduler;\n };\n\n Async.prototype.enableTrampoline = function () {\n this._trampolineEnabled = true;\n };\n\n Async.prototype.disableTrampolineIfNecessary = function () {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n };\n\n Async.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n };\n\n Async.prototype.fatalError = function (e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) + \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n };\n\n Async.prototype.throwLater = function (fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n\n fn = function fn() {\n throw arg;\n };\n }\n\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function () {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function () {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n };\n\n function AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n\n this._queueTick();\n }\n\n if (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n } else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n setTimeout(function () {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function (promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function () {\n promise._settlePromises();\n });\n }\n };\n }\n\n function _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n }\n\n function _drainQueueStep(queue) {\n var fn = queue.shift();\n\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n }\n\n Async.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n\n this._reset();\n\n this._haveDrainedQueues = true;\n\n _drainQueue(this._lateQueue);\n };\n\n Async.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n\n this._schedule(this.drainQueues);\n }\n };\n\n Async.prototype._reset = function () {\n this._isTickUsed = false;\n };\n\n module.exports = Async;\n module.exports.firstLineError = firstLineError;\n }, {\n \"./queue\": 26,\n \"./schedule\": 29,\n \"./util\": 36\n }],\n 3: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, debug) {\n var calledBind = false;\n\n var rejectThis = function rejectThis(_, e) {\n this._reject(e);\n };\n\n var targetRejected = function targetRejected(e, context) {\n context.promiseRejectionQueued = true;\n\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n };\n\n var bindingResolved = function bindingResolved(thisArg, context) {\n if ((this._bitField & 50397184) === 0) {\n this._resolveCallback(context.target);\n }\n };\n\n var bindingRejected = function bindingRejected(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n };\n\n Promise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n\n ret._propagateFrom(this, 1);\n\n var target = this._target();\n\n ret._setBoundTo(maybePromise);\n\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n\n maybePromise._then(bindingResolved, bindingRejected, undefined, ret, context);\n\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n\n return ret;\n };\n\n Promise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & ~2097152;\n }\n };\n\n Promise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n };\n\n Promise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n };\n };\n }, {}],\n 4: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var old;\n if (typeof Promise !== \"undefined\") old = Promise;\n\n function noConflict() {\n try {\n if (Promise === bluebird) Promise = old;\n } catch (e) {}\n\n return bluebird;\n }\n\n var bluebird = _dereq_(\"./promise\")();\n\n bluebird.noConflict = noConflict;\n module.exports = bluebird;\n }, {\n \"./promise\": 22\n }],\n 5: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var cr = Object.create;\n\n if (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n }\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var isIdentifier = util.isIdentifier;\n var getMethodCaller;\n var getGetter;\n\n if (!true) {\n var makeMethodCaller = function makeMethodCaller(methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n };\n\n var makeGetter = function makeGetter(propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n };\n\n var getCompiled = function getCompiled(name, compiler, cache) {\n var ret = cache[name];\n\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n\n for (var i = 0; i < 256; ++i) {\n delete cache[keys[i]];\n }\n\n cache[\" size\"] = keys.length - 256;\n }\n }\n\n return ret;\n };\n\n getMethodCaller = function getMethodCaller(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n };\n\n getGetter = function getGetter(name) {\n return getCompiled(name, makeGetter, getterCache);\n };\n }\n\n function ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" + util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n\n return fn;\n }\n\n function caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n }\n\n Promise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);\n ;\n\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n\n if (maybeCaller !== null) {\n return this._then(maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n };\n\n function namedGetter(obj) {\n return obj[this];\n }\n\n function indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n }\n\n Promise.prototype.get = function (propertyName) {\n var isIndex = typeof propertyName === \"number\";\n var getter;\n\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n\n return this._then(getter, undefined, undefined, propertyName, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 6: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n Promise.prototype[\"break\"] = Promise.prototype.cancel = function () {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n var promise = this;\n var child = promise;\n\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n\n break;\n }\n\n var parent = promise._cancellationParent;\n\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n\n promise._setWillBeCancelled();\n\n child = promise;\n promise = parent;\n }\n }\n };\n\n Promise.prototype._branchHasCancelled = function () {\n this._branchesRemainingToCancel--;\n };\n\n Promise.prototype._enoughBranchesHaveCancelled = function () {\n return this._branchesRemainingToCancel === undefined || this._branchesRemainingToCancel <= 0;\n };\n\n Promise.prototype._cancelBy = function (canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n\n this._invokeOnCancel();\n\n return true;\n } else {\n this._branchHasCancelled();\n\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n\n return true;\n }\n }\n\n return false;\n };\n\n Promise.prototype._cancelBranched = function () {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n };\n\n Promise.prototype._cancel = function () {\n if (!this._isCancellable()) return;\n\n this._setCancelled();\n\n async.invoke(this._cancelPromises, this, undefined);\n };\n\n Promise.prototype._cancelPromises = function () {\n if (this._length() > 0) this._settlePromises();\n };\n\n Promise.prototype._unsetOnCancel = function () {\n this._onCancelField = undefined;\n };\n\n Promise.prototype._isCancellable = function () {\n return this.isPending() && !this._isCancelled();\n };\n\n Promise.prototype.isCancellable = function () {\n return this.isPending() && !this.isCancelled();\n };\n\n Promise.prototype._doInvokeOnCancel = function (onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n };\n\n Promise.prototype._invokeOnCancel = function () {\n var onCancelCallback = this._onCancel();\n\n this._unsetOnCancel();\n\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n };\n\n Promise.prototype._invokeInternalOnCancel = function () {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n\n this._unsetOnCancel();\n }\n };\n\n Promise.prototype._resultCancelled = function () {\n this.cancel();\n };\n };\n }, {\n \"./util\": 36\n }],\n 7: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var getKeys = _dereq_(\"./es5\").keys;\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function catchFilter(instances, cb, promise) {\n return function (e) {\n var boundTo = promise._boundValue();\n\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error || item != null && item.prototype instanceof Error) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n\n return tryCatch(cb).call(boundTo, e);\n }\n }\n\n return NEXT_FILTER;\n };\n }\n\n return catchFilter;\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 8: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var longStackTraces = false;\n var contextStack = [];\n\n Promise.prototype._promiseCreated = function () {};\n\n Promise.prototype._pushContext = function () {};\n\n Promise.prototype._popContext = function () {\n return null;\n };\n\n Promise._peekContext = Promise.prototype._peekContext = function () {};\n\n function Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n }\n\n Context.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n };\n\n Context.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n\n return null;\n };\n\n function createContext() {\n if (longStackTraces) return new Context();\n }\n\n function peekContext() {\n var lastIndex = contextStack.length - 1;\n\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n\n return undefined;\n }\n\n Context.CapturedTrace = null;\n Context.create = createContext;\n\n Context.deactivateLongStackTraces = function () {};\n\n Context.activateLongStackTraces = function () {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n\n Context.deactivateLongStackTraces = function () {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n\n Promise.prototype._promiseCreated = function () {\n var ctx = this._peekContext();\n\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n };\n\n return Context;\n };\n }, {}],\n 9: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, Context) {\n var getDomain = Promise._getDomain;\n var async = Promise._async;\n\n var Warning = _dereq_(\"./errors\").Warning;\n\n var util = _dereq_(\"./util\");\n\n var es5 = _dereq_(\"./es5\");\n\n var canAttachTrace = util.canAttachTrace;\n var unhandledRejectionHandled;\n var possiblyUnhandledRejection;\n var bluebirdFramePattern = /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\n var nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\n var parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\n var stackFramePattern = null;\n var formatStack = null;\n var indentStackFrames = false;\n var printWarning;\n var debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 && (true || util.env(\"BLUEBIRD_DEBUG\") || util.env(\"NODE_ENV\") === \"development\"));\n var warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 && (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n var longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 && (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n var wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 && (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\n Promise.prototype.suppressUnhandledRejections = function () {\n var target = this._target();\n\n target._bitField = target._bitField & ~1048576 | 524288;\n };\n\n Promise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n\n this._setRejectionIsUnhandled();\n\n var self = this;\n setTimeout(function () {\n self._notifyUnhandledRejection();\n }, 1);\n };\n\n Promise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\", unhandledRejectionHandled, undefined, this);\n };\n\n Promise.prototype._setReturnedNonUndefined = function () {\n this._bitField = this._bitField | 268435456;\n };\n\n Promise.prototype._returnedNonUndefined = function () {\n return (this._bitField & 268435456) !== 0;\n };\n\n Promise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n\n this._setUnhandledRejectionIsNotified();\n\n fireRejectionEvent(\"unhandledRejection\", possiblyUnhandledRejection, reason, this);\n }\n };\n\n Promise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n };\n\n Promise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & ~262144;\n };\n\n Promise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n };\n\n Promise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n };\n\n Promise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & ~1048576;\n\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n\n this._notifyUnhandledRejectionIsHandled();\n }\n };\n\n Promise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n };\n\n Promise.prototype._warn = function (message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n };\n\n Promise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n Promise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n var disableLongStackTraces = function disableLongStackTraces() {};\n\n Promise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n\n disableLongStackTraces = function disableLongStackTraces() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n };\n\n Promise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n };\n\n var fireDomEvent = function () {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(eventData, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(eventData, \"reason\", {\n value: event.reason\n });\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(domEvent, \"reason\", {\n value: event.reason\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true, event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n\n return function () {\n return false;\n };\n }();\n\n var fireGlobalEvent = function () {\n if (util.isNode) {\n return function () {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function () {\n return false;\n };\n }\n\n return function (name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n }();\n\n function generatePromiseLifecycleEventObject(name, promise) {\n return {\n promise: promise\n };\n }\n\n var eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function promiseChained(name, promise, child) {\n return {\n promise: promise,\n child: child\n };\n },\n warning: function warning(name, _warning) {\n return {\n warning: _warning\n };\n },\n unhandledRejection: function unhandledRejection(name, reason, promise) {\n return {\n reason: reason,\n promise: promise\n };\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n };\n\n var activeFireEvent = function activeFireEvent(name) {\n var globalEventFired = false;\n\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n\n try {\n domEventFired = fireDomEvent(name, eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n };\n\n Promise.config = function (opts) {\n opts = Object(opts);\n\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\"cannot enable cancellation after promises are in use\");\n }\n\n Promise.prototype._clearCancellationData = cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback = cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n _propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n\n return Promise;\n };\n\n function defaultFireEvent() {\n return false;\n }\n\n Promise.prototype._fireEvent = defaultFireEvent;\n\n Promise.prototype._execute = function (executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n };\n\n Promise.prototype._onCancel = function () {};\n\n Promise.prototype._setOnCancel = function (handler) {\n ;\n };\n\n Promise.prototype._attachCancellationCallback = function (onCancel) {\n ;\n };\n\n Promise.prototype._captureStackTrace = function () {};\n\n Promise.prototype._attachExtraTrace = function () {};\n\n Promise.prototype._dereferenceTrace = function () {};\n\n Promise.prototype._clearCancellationData = function () {};\n\n Promise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n };\n\n function cancellationExecute(executor, resolve, reject) {\n var promise = this;\n\n try {\n executor(resolve, reject, function (onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" + util.toString(onCancel));\n }\n\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n }\n\n function cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n }\n\n function cancellationOnCancel() {\n return this._onCancelField;\n }\n\n function cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n }\n\n function cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n }\n\n function cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n function bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n var _propagateFromFunction = bindingPropagateFrom;\n\n function _boundValueFunction() {\n var ret = this._boundTo;\n\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n\n return ret;\n }\n\n function longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n }\n\n function longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\", parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n }\n\n function longStackTracesDereferenceTrace() {\n this._trace = undefined;\n }\n\n function checkForgottenReturns(returnValue, promiseCreated, name, promise, parent) {\n if (returnValue === undefined && promiseCreated !== null && wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n\n var stack = cleanStack(traceLines);\n\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] + \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n\n for (var i = 0; i < traceLines.length; ++i) {\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n\n break;\n }\n }\n }\n }\n\n var msg = \"a promise was created in a \" + name + \"handler \" + handlerLine + \"but was not returned from it, \" + \"see http://goo.gl/rRqMUw\" + creatorLine;\n\n promise._warn(msg, true, promiseCreated);\n }\n }\n\n function deprecated(name, replacement) {\n var message = name + \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n }\n\n function warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n }\n\n function reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n return message + \"\\n\" + stacks.join(\"\\n\");\n }\n\n function removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 || i + 1 < stacks.length && stacks[i][0] === stacks[i + 1][0]) {\n stacks.splice(i, 1);\n i--;\n }\n }\n }\n\n function removeCommonRoots(stacks) {\n var current = stacks[0];\n\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n\n current = prev;\n }\n }\n\n function cleanStack(stack) {\n var ret = [];\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line || stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n\n ret.push(line);\n }\n }\n\n return ret;\n }\n\n function stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n\n return stack;\n }\n\n function parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0 ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n }\n\n function formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" || _typeof(console.log) === \"object\") {\n console.log(message);\n }\n }\n }\n\n function fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n }\n\n function formatNonError(obj) {\n var str;\n\n if (typeof obj === \"function\") {\n str = \"[function \" + (obj.name || \"anonymous\") + \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\" ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n } catch (e) {}\n }\n\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n\n return \"(<\" + snip(str) + \">, no stack trace)\";\n }\n\n function snip(str) {\n var maxChars = 41;\n\n if (str.length < maxChars) {\n return str;\n }\n\n return str.substr(0, maxChars - 3) + \"...\";\n }\n\n function longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n }\n\n var shouldIgnore = function shouldIgnore() {\n return false;\n };\n\n var parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\n\n function parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n }\n\n function setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function shouldIgnore(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n\n if (info) {\n if (info.fileName === firstFileName && firstIndex <= info.line && info.line <= lastIndex) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n }\n\n util.inherits(CapturedTrace, Error);\n Context.CapturedTrace = CapturedTrace;\n\n CapturedTrace.prototype.uncycle = function () {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n\n length = this._length = i;\n\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n\n cycleEdgeNode._parent.uncycle();\n\n cycleEdgeNode._length = cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n\n var currentChildLength = cycleEdgeNode._length + 1;\n\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n\n return;\n }\n }\n };\n\n CapturedTrace.prototype.attachExtraTrace = function (error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n var trace = this;\n\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n };\n\n var captureStackTrace = function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n\n var v8stackFormatter = function v8stackFormatter(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" && typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function shouldIgnore(line) {\n return bluebirdFramePattern.test(line);\n };\n\n return function (receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n\n var err = new Error();\n\n if (typeof err.stack === \"string\" && err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n\n try {\n throw new Error();\n } catch (e) {\n hasStackAfterThrow = \"stack\" in e;\n }\n\n if (!(\"stack\" in err) && hasStackAfterThrow && typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n\n try {\n throw new Error();\n } catch (e) {\n o.stack = e.stack;\n }\n\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function formatStack(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((_typeof(error) === \"object\" || typeof error === \"function\") && error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n return null;\n }([]);\n\n if (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function printWarning(message) {\n console.warn(message);\n };\n\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function printWarning(message, isSoft) {\n var color = isSoft ? \"\\x1B[33m\" : \"\\x1B[31m\";\n console.warn(color + message + \"\\x1B[0m\\n\");\n };\n } else if (!util.isNode && typeof new Error().stack === \"string\") {\n printWarning = function printWarning(message, isSoft) {\n console.warn(\"%c\" + message, isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n }\n\n var config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n };\n if (longStackTraces) Promise.longStackTraces();\n return {\n longStackTraces: function longStackTraces() {\n return config.longStackTraces;\n },\n warnings: function warnings() {\n return config.warnings;\n },\n cancellation: function cancellation() {\n return config.cancellation;\n },\n monitoring: function monitoring() {\n return config.monitoring;\n },\n propagateFromFunction: function propagateFromFunction() {\n return _propagateFromFunction;\n },\n boundValueFunction: function boundValueFunction() {\n return _boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n };\n };\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 10: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function returner() {\n return this.value;\n }\n\n function thrower() {\n throw this.reason;\n }\n\n Promise.prototype[\"return\"] = Promise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(returner, undefined, undefined, {\n value: value\n }, undefined);\n };\n\n Promise.prototype[\"throw\"] = Promise.prototype.thenThrow = function (reason) {\n return this._then(thrower, undefined, undefined, {\n reason: reason\n }, undefined);\n };\n\n Promise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(undefined, thrower, undefined, {\n reason: reason\n }, undefined);\n } else {\n var _reason = arguments[1];\n\n var handler = function handler() {\n throw _reason;\n };\n\n return this.caught(reason, handler);\n }\n };\n\n Promise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(undefined, returner, undefined, {\n value: value\n }, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n\n var handler = function handler() {\n return _value;\n };\n\n return this.caught(value, handler);\n }\n };\n };\n }, {}],\n 11: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseReduce = Promise.reduce;\n var PromiseAll = Promise.all;\n\n function promiseAllThis() {\n return PromiseAll(this);\n }\n\n function PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n }\n\n Promise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, this, undefined);\n };\n\n Promise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n };\n\n Promise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, promises, undefined);\n };\n\n Promise.mapSeries = PromiseMapSeries;\n };\n }, {}],\n 12: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var Objectfreeze = es5.freeze;\n\n var util = _dereq_(\"./util\");\n\n var inherits = util.inherits;\n var notEnumerableProp = util.notEnumerableProp;\n\n function subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\", typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n\n inherits(SubError, Error);\n return SubError;\n }\n\n var _TypeError, _RangeError;\n\n var Warning = subError(\"Warning\", \"warning\");\n var CancellationError = subError(\"CancellationError\", \"cancellation error\");\n var TimeoutError = subError(\"TimeoutError\", \"timeout error\");\n var AggregateError = subError(\"AggregateError\", \"aggregate error\");\n\n try {\n _TypeError = TypeError;\n _RangeError = RangeError;\n } catch (e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n }\n\n var methods = (\"join pop push shift unshift slice filter forEach some \" + \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\n for (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n }\n\n es5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n });\n AggregateError.prototype[\"isOperational\"] = true;\n var level = 0;\n\n AggregateError.prototype.toString = function () {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n\n level--;\n return ret;\n };\n\n function OperationalError(message) {\n if (!(this instanceof OperationalError)) return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n inherits(OperationalError, Error);\n var errorTypes = Error[\"__BluebirdErrorTypes__\"];\n\n if (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n }\n\n module.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 13: [function (_dereq_, module, exports) {\n var isES5 = function () {\n \"use strict\";\n\n return this === undefined;\n }();\n\n if (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n } else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function ObjectKeys(o) {\n var ret = [];\n\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n\n return ret;\n };\n\n var ObjectGetDescriptor = function ObjectGetDescriptor(o, key) {\n return {\n value: o[key]\n };\n };\n\n var ObjectDefineProperty = function ObjectDefineProperty(o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function ObjectFreeze(obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function ObjectGetPrototypeOf(obj) {\n try {\n return Object(obj).constructor.prototype;\n } catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function ArrayIsArray(obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n } catch (e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable() {\n return true;\n }\n };\n }\n }, {}],\n 14: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseMap = Promise.map;\n\n Promise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n };\n\n Promise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n };\n };\n }, {}],\n 15: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, tryConvertToPromise, NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var CancellationError = Promise.CancellationError;\n var errorObj = util.errorObj;\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n function PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n }\n\n PassThroughHandlerContext.prototype.isFinallyHandler = function () {\n return this.type === 0;\n };\n\n function FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n }\n\n FinallyHandlerCancelReaction.prototype._resultCancelled = function () {\n checkCancel(this.finallyHandler);\n };\n\n function checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n\n ctx.cancelPromise = null;\n return true;\n }\n\n return false;\n }\n\n function succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n }\n\n function fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n }\n\n function finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler() ? handler.call(promise._boundValue()) : handler.call(promise._boundValue(), reasonOrValue);\n\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n\n var maybePromise = tryConvertToPromise(ret, promise);\n\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(new FinallyHandlerCancelReaction(this));\n }\n }\n\n return maybePromise._then(succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n }\n\n Promise.prototype._passThrough = function (handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success, fail, undefined, new PassThroughHandlerContext(this, type, handler), undefined);\n };\n\n Promise.prototype.lastly = Promise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler, 0, finallyHandler, finallyHandler);\n };\n\n Promise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n };\n\n Promise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n\n if (len === 1) {\n return this._passThrough(handlerOrPredicate, 1, undefined, finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\"tapCatch statement predicate: \" + \"expecting an object but got \" + util.classString(item)));\n }\n }\n\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this), 1, undefined, finallyHandler);\n }\n };\n\n return PassThroughHandlerContext;\n };\n }, {\n \"./catch_filter\": 7,\n \"./util\": 36\n }],\n 16: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug) {\n var errors = _dereq_(\"./errors\");\n\n var TypeError = errors.TypeError;\n\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var yieldHandlers = [];\n\n function promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n\n var result = tryCatch(yieldHandlers[i])(value);\n\n traceParent._popContext();\n\n if (result === errorObj) {\n traceParent._pushContext();\n\n var ret = Promise.reject(errorObj.e);\n\n traceParent._popContext();\n\n return ret;\n }\n\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n\n return null;\n }\n\n function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n\n this._promise = internal.lastly(function () {\n return _finallyPromise;\n });\n\n internal._captureStackTrace();\n\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n }\n\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\" ? [yieldHandler].concat(yieldHandlers) : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n }\n\n util.inherits(PromiseSpawn, Proxyable);\n\n PromiseSpawn.prototype._isResolved = function () {\n return this._promise === null;\n };\n\n PromiseSpawn.prototype._cleanup = function () {\n this._promise = this._generator = null;\n\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n\n this._finallyPromise = null;\n }\n };\n\n PromiseSpawn.prototype._promiseCancelled = function () {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n var result;\n\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"return\"]).call(this._generator, undefined);\n\n this._promise._popContext();\n }\n\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseFulfilled = function (value) {\n this._yieldedPromise = null;\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator.next).call(this._generator, value);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseRejected = function (reason) {\n this._yieldedPromise = null;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._resultCancelled = function () {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n };\n\n PromiseSpawn.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver = this._generatorFunction = undefined;\n\n this._promiseFulfilled(undefined);\n };\n\n PromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n\n if (result === errorObj) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n\n if (result.done === true) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n\n if (!(maybePromise instanceof Promise)) {\n maybePromise = promiseFromYieldHandler(maybePromise, this._yieldHandlers, this._promise);\n\n if (maybePromise === null) {\n this._promiseRejected(new TypeError(\"A value %s was yielded that could not be treated as a promise\\n\\n See http://goo.gl/MqrFmX\\n\\n\".replace(\"%s\", String(value)) + \"From coroutine:\\n\" + this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")));\n\n return;\n }\n }\n\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n this._yieldedPromise = maybePromise;\n\n maybePromise._proxy(this, null);\n } else if ((bitField & 33554432) !== 0) {\n Promise._async.invoke(this._promiseFulfilled, this, maybePromise._value());\n } else if ((bitField & 16777216) !== 0) {\n Promise._async.invoke(this._promiseRejected, this, maybePromise._reason());\n } else {\n this._promiseCancelled();\n }\n }\n };\n\n Promise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n\n spawn._promiseFulfilled(undefined);\n\n return ret;\n };\n };\n\n Promise.coroutine.addYieldHandler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n yieldHandlers.push(fn);\n };\n\n Promise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n\n spawn._run(Promise.spawn);\n\n return ret;\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 17: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var reject;\n\n if (!true) {\n if (canEvaluate) {\n var thenCallback = function thenCallback(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function promiseSetter(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function generateHolderClass(total) {\n var props = new Array(total);\n\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i + 1);\n }\n\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode = \"var promise;\\n\" + props.map(function (prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n code = code.replace(/\\[TheName\\]/g, name).replace(/\\[TheTotal\\]/g, total).replace(/\\[ThePassedArguments\\]/g, passedArguments).replace(/\\[TheProperties\\]/g, assignment).replace(/\\[CancellationCode\\]/g, cancellationCode);\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)(tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function reject(reason) {\n this._reject(reason);\n };\n }\n }\n\n Promise.join = function () {\n var last = arguments.length - 1;\n var fn;\n\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n maybePromise._then(callbacks[i], reject, undefined, ret, holder);\n\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if ((bitField & 33554432) !== 0) {\n callbacks[i].call(ret, maybePromise._value(), holder);\n } else if ((bitField & 16777216) !== 0) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n\n ret._setAsyncGuaranteed();\n\n ret._setOnCancel(holder);\n }\n\n return ret;\n }\n }\n }\n\n var args = [].slice.call(arguments);\n ;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 18: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n function MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n\n this._promise._captureStackTrace();\n\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL ? new Array(this.length()) : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n }\n\n util.inherits(MappingPromiseArray, PromiseArray);\n\n MappingPromiseArray.prototype._asyncInit = function () {\n this._init$(undefined, -2);\n };\n\n MappingPromiseArray.prototype._init = function () {};\n\n MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = index * -1 - 1;\n values[index] = value;\n\n if (limit >= 1) {\n this._inFlight--;\n\n this._drainQueue();\n\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n\n this._queue.push(index);\n\n return false;\n }\n\n if (preservedValues !== null) preservedValues[index] = value;\n var promise = this._promise;\n var callback = this._callback;\n\n var receiver = promise._boundValue();\n\n promise._pushContext();\n\n var ret = tryCatch(callback).call(receiver, value, index, length);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, preservedValues !== null ? \"Promise.filter\" : \"Promise.map\", promise);\n\n if (ret === errorObj) {\n this._reject(ret.e);\n\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n\n maybePromise._proxy(this, (index + 1) * -1);\n\n return false;\n } else if ((bitField & 33554432) !== 0) {\n ret = maybePromise._value();\n } else if ((bitField & 16777216) !== 0) {\n this._reject(maybePromise._reason());\n\n return true;\n } else {\n this._cancel();\n\n return true;\n }\n }\n\n values[index] = ret;\n }\n\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n\n return true;\n }\n\n return false;\n };\n\n MappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n\n this._promiseFulfilled(values[index], index);\n }\n };\n\n MappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n\n ret.length = j;\n\n this._resolve(ret);\n };\n\n MappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n };\n\n function map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n\n if (options !== undefined) {\n if (_typeof(options) === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(new TypeError(\"'concurrency' must be a number but it is \" + util.classString(options.concurrency)));\n }\n\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\"options argument must be an object but it is \" + util.classString(options)));\n }\n }\n\n limit = typeof limit === \"number\" && isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n }\n\n Promise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n };\n\n Promise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n };\n };\n }, {\n \"./util\": 36\n }],\n 19: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n Promise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return function () {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value = tryCatch(fn).apply(this, arguments);\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.method\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n };\n\n Promise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value;\n\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.try\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n\n Promise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n };\n };\n }, {\n \"./util\": 36\n }],\n 20: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var maybeWrapAsError = util.maybeWrapAsError;\n\n var errors = _dereq_(\"./errors\");\n\n var OperationalError = errors.OperationalError;\n\n var es5 = _dereq_(\"./es5\");\n\n function isUntypedError(obj) {\n return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype;\n }\n\n var rErrorKey = /^(?:name|message|stack|cause)$/;\n\n function wrapAsOperationalError(obj) {\n var ret;\n\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n\n return ret;\n }\n\n util.markAsOriginatingFromRejection(obj);\n return obj;\n }\n\n function nodebackForPromise(promise, multiArgs) {\n return function (err, value) {\n if (promise === null) return;\n\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n\n promise._attachExtraTrace(wrapped);\n\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);\n ;\n\n promise._fulfill(args);\n }\n\n promise = null;\n };\n }\n\n module.exports = nodebackForPromise;\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 21: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var async = Promise._async;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret = tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function successAdapter(val, nodeback) {\n var promise = this;\n\n var receiver = promise._boundValue();\n\n var ret = val === undefined ? tryCatch(nodeback).call(receiver, null) : tryCatch(nodeback).call(receiver, null, val);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function errorAdapter(reason, nodeback) {\n var promise = this;\n\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n\n this._then(adapter, errorAdapter, undefined, this, nodeback);\n }\n\n return this;\n };\n };\n }, {\n \"./util\": 36\n }],\n 22: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function () {\n var makeSelfResolutionError = function makeSelfResolutionError() {\n return new TypeError(\"circular promise resolution chain\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var reflectHandler = function reflectHandler() {\n return new Promise.PromiseInspection(this._target());\n };\n\n var apiRejection = function apiRejection(msg) {\n return Promise.reject(new TypeError(msg));\n };\n\n function Proxyable() {}\n\n var UNDEFINED_BINDING = {};\n\n var util = _dereq_(\"./util\");\n\n var getDomain;\n\n if (util.isNode) {\n getDomain = function getDomain() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n } else {\n getDomain = function getDomain() {\n return null;\n };\n }\n\n util.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\n var es5 = _dereq_(\"./es5\");\n\n var Async = _dereq_(\"./async\");\n\n var async = new Async();\n es5.defineProperty(Promise, \"_async\", {\n value: async\n });\n\n var errors = _dereq_(\"./errors\");\n\n var TypeError = Promise.TypeError = errors.TypeError;\n Promise.RangeError = errors.RangeError;\n var CancellationError = Promise.CancellationError = errors.CancellationError;\n Promise.TimeoutError = errors.TimeoutError;\n Promise.OperationalError = errors.OperationalError;\n Promise.RejectionError = errors.OperationalError;\n Promise.AggregateError = errors.AggregateError;\n\n var INTERNAL = function INTERNAL() {};\n\n var APPLY = {};\n var NEXT_FILTER = {};\n\n var tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\n\n var PromiseArray = _dereq_(\"./promise_array\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable);\n\n var Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\n\n\n var createContext = Context.create;\n\n var debug = _dereq_(\"./debuggability\")(Promise, Context);\n\n var CapturedTrace = debug.CapturedTrace;\n\n var PassThroughHandlerContext = _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n\n function check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n }\n\n function Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._resolveFromExecutor(executor);\n\n this._promiseCreated();\n\n this._fireEvent(\"promiseCreated\", this);\n }\n\n Promise.prototype.toString = function () {\n return \"[object Promise]\";\n };\n\n Promise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" + \"expecting an object but got \" + util.classString(item));\n }\n }\n\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n\n return this.then(undefined, fn);\n };\n\n Promise.prototype.reflect = function () {\n return this._then(reflectHandler, reflectHandler, undefined, this, undefined);\n };\n\n Promise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 && typeof didFulfill !== \"function\" && typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" + util.classString(didFulfill);\n\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n\n this._warn(msg);\n }\n\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n };\n\n Promise.prototype.done = function (didFulfill, didReject) {\n var promise = this._then(didFulfill, didReject, undefined, undefined, undefined);\n\n promise._setIsFinal();\n };\n\n Promise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n };\n\n Promise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n\n return ret;\n };\n\n Promise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n\n return new PromiseArray(this).promise();\n };\n\n Promise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n };\n\n Promise.getNewLibraryCopy = module.exports;\n\n Promise.is = function (val) {\n return val instanceof Promise;\n };\n\n Promise.fromNode = Promise.fromCallback = function (fn) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n };\n\n Promise.all = function (promises) {\n return new PromiseArray(promises).promise();\n };\n\n Promise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._setFulfilled();\n\n ret._rejectionHandler0 = obj;\n }\n\n return ret;\n };\n\n Promise.resolve = Promise.fulfilled = Promise.cast;\n\n Promise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._rejectCallback(reason, true);\n\n return ret;\n };\n\n Promise.setScheduler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return async.setScheduler(fn);\n };\n\n Promise.prototype._then = function (didFulfill, didReject, _, receiver, internalData) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n\n var target = this._target();\n\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n\n promise._captureStackTrace();\n\n if (receiver === undefined && (this._bitField & 2097152) !== 0) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n\n if (!((bitField & 50397184) === 0)) {\n var handler,\n value,\n settler = target._settlePromiseCtx;\n\n if ((bitField & 33554432) !== 0) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if ((bitField & 16777216) !== 0) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n\n target._attachExtraTrace(value);\n\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler : typeof handler === \"function\" && util.domainBind(domain, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n };\n\n Promise.prototype._length = function () {\n return this._bitField & 65535;\n };\n\n Promise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n };\n\n Promise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n };\n\n Promise.prototype._setLength = function (len) {\n this._bitField = this._bitField & -65536 | len & 65535;\n };\n\n Promise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n\n this._fireEvent(\"promiseFulfilled\", this);\n };\n\n Promise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n\n this._fireEvent(\"promiseRejected\", this);\n };\n\n Promise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n\n this._fireEvent(\"promiseResolved\", this);\n };\n\n Promise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n };\n\n Promise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n };\n\n Promise.prototype._unsetCancelled = function () {\n this._bitField = this._bitField & ~65536;\n };\n\n Promise.prototype._setCancelled = function () {\n this._bitField = this._bitField | 65536;\n\n this._fireEvent(\"promiseCancelled\", this);\n };\n\n Promise.prototype._setWillBeCancelled = function () {\n this._bitField = this._bitField | 8388608;\n };\n\n Promise.prototype._setAsyncGuaranteed = function () {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n };\n\n Promise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[index * 4 - 4 + 3];\n\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n\n return ret;\n };\n\n Promise.prototype._promiseAt = function (index) {\n return this[index * 4 - 4 + 2];\n };\n\n Promise.prototype._fulfillmentHandlerAt = function (index) {\n return this[index * 4 - 4 + 0];\n };\n\n Promise.prototype._rejectionHandlerAt = function (index) {\n return this[index * 4 - 4 + 1];\n };\n\n Promise.prototype._boundValue = function () {};\n\n Promise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n\n var receiver = follower._receiverAt(0);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n\n var reject = follower._rejectionHandlerAt(index);\n\n var promise = follower._promiseAt(index);\n\n var receiver = follower._receiverAt(index);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._addCallbacks = function (fulfill, reject, promise, receiver, domain) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n\n if (typeof fulfill === \"function\") {\n this[base + 0] = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this[base + 1] = domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n\n this._setLength(index + 1);\n\n return index;\n };\n\n Promise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n };\n\n Promise.prototype._resolveCallback = function (value, shouldBind) {\n if ((this._bitField & 117506048) !== 0) return;\n if (value === this) return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n\n return;\n }\n\n var bitField = promise._bitField;\n\n if ((bitField & 50397184) === 0) {\n var len = this._length();\n\n if (len > 0) promise._migrateCallback0(this);\n\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n\n this._setFollowing();\n\n this._setLength(0);\n\n this._setFollowee(promise);\n } else if ((bitField & 33554432) !== 0) {\n this._fulfill(promise._value());\n } else if ((bitField & 16777216) !== 0) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n this._reject(reason);\n }\n };\n\n Promise.prototype._rejectCallback = function (reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" + util.classString(reason);\n\n this._warn(message, true);\n }\n\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n\n this._reject(reason);\n };\n\n Promise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n\n this._captureStackTrace();\n\n this._pushContext();\n\n var synchronous = true;\n\n var r = this._execute(executor, function (value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n\n synchronous = false;\n\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n };\n\n Promise.prototype._settlePromiseFromHandler = function (handler, receiver, value, promise) {\n var bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n promise._pushContext();\n\n var x;\n\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" + util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n\n var promiseCreated = promise._popContext();\n\n bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n\n promise._resolveCallback(x);\n }\n };\n\n Promise.prototype._target = function () {\n var ret = this;\n\n while (ret._isFollowing()) {\n ret = ret._followee();\n }\n\n return ret;\n };\n\n Promise.prototype._followee = function () {\n return this._rejectionHandler0;\n };\n\n Promise.prototype._setFollowee = function (promise) {\n this._rejectionHandler0 = promise;\n };\n\n Promise.prototype._settlePromise = function (promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = (bitField & 134217728) !== 0;\n\n if ((bitField & 65536) !== 0) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext && receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if ((bitField & 33554432) !== 0) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n if ((bitField & 33554432) !== 0) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n };\n\n Promise.prototype._settlePromiseLateCancellationObserver = function (ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n };\n\n Promise.prototype._settlePromiseCtx = function (ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n };\n\n Promise.prototype._settlePromise0 = function (handler, value, bitField) {\n var promise = this._promise0;\n\n var receiver = this._receiverAt(0);\n\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._settlePromise(promise, handler, receiver, value);\n };\n\n Promise.prototype._clearCallbackDataAtIndex = function (index) {\n var base = index * 4 - 4;\n this[base + 2] = this[base + 3] = this[base + 0] = this[base + 1] = undefined;\n };\n\n Promise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n if (value === this) {\n var err = makeSelfResolutionError();\n\n this._attachExtraTrace(err);\n\n return this._reject(err);\n }\n\n this._setFulfilled();\n\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if ((bitField & 134217728) !== 0) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n\n this._dereferenceTrace();\n }\n };\n\n Promise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n this._setRejected();\n\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n };\n\n Promise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, value);\n }\n };\n\n Promise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, reason);\n }\n };\n\n Promise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = bitField & 65535;\n\n if (len > 0) {\n if ((bitField & 16842752) !== 0) {\n var reason = this._fulfillmentHandler0;\n\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n\n this._fulfillPromises(len, value);\n }\n\n this._setLength(0);\n }\n\n this._clearCancellationData();\n };\n\n Promise.prototype._settledValue = function () {\n var bitField = this._bitField;\n\n if ((bitField & 33554432) !== 0) {\n return this._rejectionHandler0;\n } else if ((bitField & 16777216) !== 0) {\n return this._fulfillmentHandler0;\n }\n };\n\n function deferResolve(v) {\n this.promise._resolveCallback(v);\n }\n\n function deferReject(v) {\n this.promise._rejectCallback(v, false);\n }\n\n Promise.defer = Promise.pending = function () {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n };\n\n util.notEnumerableProp(Promise, \"_makeSelfResolutionError\", makeSelfResolutionError);\n\n _dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug);\n\n _dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n\n _dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n\n _dereq_(\"./direct_resolve\")(Promise);\n\n _dereq_(\"./synchronous_inspection\")(Promise);\n\n _dereq_(\"./join\")(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\n\n Promise.Promise = Promise;\n Promise.version = \"3.5.4\";\n\n _dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./call_get.js')(Promise);\n\n _dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n\n _dereq_('./timers.js')(Promise, INTERNAL, debug);\n\n _dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n\n _dereq_('./nodeify.js')(Promise);\n\n _dereq_('./promisify.js')(Promise, INTERNAL);\n\n _dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n\n _dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n\n _dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./settle.js')(Promise, PromiseArray, debug);\n\n _dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n\n _dereq_('./filter.js')(Promise, INTERNAL);\n\n _dereq_('./each.js')(Promise, INTERNAL);\n\n _dereq_('./any.js')(Promise);\n\n util.toFastProperties(Promise);\n util.toFastProperties(Promise.prototype);\n\n function fillTypes(value) {\n var p = new Promise(INTERNAL);\n p._fulfillmentHandler0 = value;\n p._rejectionHandler0 = value;\n p._promise0 = value;\n p._receiver0 = value;\n } // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n\n\n fillTypes({\n a: 1\n });\n fillTypes({\n b: 2\n });\n fillTypes({\n c: 3\n });\n fillTypes(1);\n fillTypes(function () {});\n fillTypes(undefined);\n fillTypes(false);\n fillTypes(new Promise(INTERNAL));\n debug.setBounds(Async.firstLineError, util.lastLineError);\n return Promise;\n };\n }, {\n \"./any.js\": 1,\n \"./async\": 2,\n \"./bind\": 3,\n \"./call_get.js\": 5,\n \"./cancel\": 6,\n \"./catch_filter\": 7,\n \"./context\": 8,\n \"./debuggability\": 9,\n \"./direct_resolve\": 10,\n \"./each.js\": 11,\n \"./errors\": 12,\n \"./es5\": 13,\n \"./filter.js\": 14,\n \"./finally\": 15,\n \"./generators.js\": 16,\n \"./join\": 17,\n \"./map.js\": 18,\n \"./method\": 19,\n \"./nodeback\": 20,\n \"./nodeify.js\": 21,\n \"./promise_array\": 23,\n \"./promisify.js\": 24,\n \"./props.js\": 25,\n \"./race.js\": 27,\n \"./reduce.js\": 28,\n \"./settle.js\": 30,\n \"./some.js\": 31,\n \"./synchronous_inspection\": 32,\n \"./thenables\": 33,\n \"./timers.js\": 34,\n \"./using.js\": 35,\n \"./util\": 36\n }],\n 23: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable) {\n var util = _dereq_(\"./util\");\n\n var isArray = util.isArray;\n\n function toResolutionValue(val) {\n switch (val) {\n case -2:\n return [];\n\n case -3:\n return {};\n\n case -6:\n return new Map();\n }\n }\n\n function PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n\n promise._setOnCancel(this);\n\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n\n this._init(undefined, -2);\n }\n\n util.inherits(PromiseArray, Proxyable);\n\n PromiseArray.prototype.length = function () {\n return this._length;\n };\n\n PromiseArray.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if ((bitField & 50397184) === 0) {\n this._promise._setAsyncGuaranteed();\n\n return values._then(init, this._reject, undefined, this, resolveValueIfEmpty);\n } else if ((bitField & 33554432) !== 0) {\n values = values._value();\n } else if ((bitField & 16777216) !== 0) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n\n values = util.asArray(values);\n\n if (values === null) {\n var err = apiRejection(\"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n\n this._promise._rejectCallback(err, false);\n\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n } else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n\n return;\n }\n\n this._iterate(values);\n };\n\n PromiseArray.prototype._iterate = function (values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if ((bitField & 50397184) === 0) {\n maybePromise._proxy(this, i);\n\n this._values[i] = maybePromise;\n } else if ((bitField & 33554432) !== 0) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if ((bitField & 16777216) !== 0) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n\n if (!isResolved) result._setAsyncGuaranteed();\n };\n\n PromiseArray.prototype._isResolved = function () {\n return this._values === null;\n };\n\n PromiseArray.prototype._resolve = function (value) {\n this._values = null;\n\n this._promise._fulfill(value);\n };\n\n PromiseArray.prototype._cancel = function () {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n\n this._promise._cancel();\n };\n\n PromiseArray.prototype._reject = function (reason) {\n this._values = null;\n\n this._promise._rejectCallback(reason, false);\n };\n\n PromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n PromiseArray.prototype._promiseCancelled = function () {\n this._cancel();\n\n return true;\n };\n\n PromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n\n this._reject(reason);\n\n return true;\n };\n\n PromiseArray.prototype._resultCancelled = function () {\n if (this._isResolved()) return;\n var values = this._values;\n\n this._cancel();\n\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n };\n\n PromiseArray.prototype.shouldCopyValues = function () {\n return true;\n };\n\n PromiseArray.prototype.getActualLength = function (len) {\n return len;\n };\n\n return PromiseArray;\n };\n }, {\n \"./util\": 36\n }],\n 24: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var THIS = {};\n\n var util = _dereq_(\"./util\");\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var withAppended = util.withAppended;\n var maybeWrapAsError = util.maybeWrapAsError;\n var canEvaluate = util.canEvaluate;\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var defaultSuffix = \"Async\";\n var defaultPromisified = {\n __isPromisified__: true\n };\n var noCopyProps = [\"arity\", \"length\", \"name\", \"arguments\", \"caller\", \"callee\", \"prototype\", \"__isPromisified__\"];\n var noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\n var defaultFilter = function defaultFilter(name) {\n return util.isIdentifier(name) && name.charAt(0) !== \"_\" && name !== \"constructor\";\n };\n\n function propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n }\n\n function isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n } catch (e) {\n return false;\n }\n }\n\n function hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix, defaultPromisified);\n return val ? isPromisified(val) : false;\n }\n\n function checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\n\\n See http://goo.gl/MqrFmX\\n\".replace(\"%s\", suffix));\n }\n }\n }\n }\n }\n\n function promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter ? true : defaultFilter(key, value, obj);\n\n if (typeof value === \"function\" && !isPromisified(value) && !hasPromisified(obj, key, suffix) && filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n }\n\n var escapeIdentRegex = function escapeIdentRegex(str) {\n return str.replace(/([$])/, \"\\\\$\");\n };\n\n var makeNodePromisifiedEval;\n\n if (!true) {\n var switchCaseArgumentOrder = function switchCaseArgumentOrder(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n\n for (var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n\n for (var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n\n return ret;\n };\n\n var argumentSequence = function argumentSequence(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n };\n\n var parameterDeclaration = function parameterDeclaration(parameterCount) {\n return util.filledRange(Math.max(parameterCount, 3), \"_arg\", \"\");\n };\n\n var parameterCount = function parameterCount(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n\n return 0;\n };\n\n makeNodePromisifiedEval = function makeNodePromisifiedEval(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined ? \"ret = callback({{args}}, nodeback); break;\\n\" : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] + \":\" + generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", shouldProxyThis ? \"ret = callback.apply(this, args);\\n\" : \"ret = callback.apply(receiver, args);\\n\");\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\" ? \"this != null ? this['\" + callback + \"'] : fn\" : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase()).replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\", \"fn\", \"receiver\", \"withAppended\", \"maybeWrapAsError\", \"nodebackForPromise\", \"tryCatch\", \"errorObj\", \"notEnumerableProp\", \"INTERNAL\", body)(Promise, fn, receiver, withAppended, maybeWrapAsError, nodebackForPromise, util.tryCatch, util.errorObj, util.notEnumerableProp, INTERNAL);\n };\n }\n\n function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = function () {\n return this;\n }();\n\n var method = callback;\n\n if (typeof method === \"string\") {\n callback = fn;\n }\n\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n\n var cb = typeof method === \"string\" && this !== defaultThis ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch (e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n }\n\n var makeNodePromisified = canEvaluate ? makeNodePromisifiedEval : makeNodePromisifiedClosure;\n\n function promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods = promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i += 2) {\n var key = methods[i];\n var fn = methods[i + 1];\n var promisifiedKey = key + suffix;\n\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] = makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function () {\n return makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n\n util.toFastProperties(obj);\n return obj;\n }\n\n function promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined, callback, null, multiArgs);\n }\n\n Promise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n if (isPromisified(fn)) {\n return fn;\n }\n\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n };\n\n Promise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && _typeof(target) !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var keys = util.inheritedDataKeys(target);\n\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n\n if (keys[i] !== \"constructor\" && util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier, multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n };\n };\n }, {\n \"./errors\": 12,\n \"./nodeback\": 20,\n \"./util\": 36\n }],\n 25: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var isObject = util.isObject;\n\n var es5 = _dereq_(\"./es5\");\n\n var Es6Map;\n if (typeof Map === \"function\") Es6Map = Map;\n\n var mapToEntries = function () {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n }();\n\n var entriesToMap = function entriesToMap(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n\n return ret;\n };\n\n function PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n\n this.constructor$(entries);\n this._isMap = isMap;\n\n this._init$(undefined, isMap ? -6 : -3);\n }\n\n util.inherits(PropertiesPromiseArray, PromiseArray);\n\n PropertiesPromiseArray.prototype._init = function () {};\n\n PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n var val;\n\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n\n this._resolve(val);\n\n return true;\n }\n\n return false;\n };\n\n PropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n PropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n };\n\n function props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\n\\n See http://goo.gl/MqrFmX\\n\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n\n return ret;\n }\n\n Promise.prototype.props = function () {\n return props(this);\n };\n\n Promise.props = function (promises) {\n return props(promises);\n };\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 26: [function (_dereq_, module, exports) {\n \"use strict\";\n\n function arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n }\n\n function Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n }\n\n Queue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n };\n\n Queue.prototype._pushOne = function (arg) {\n var length = this.length();\n\n this._checkCapacity(length + 1);\n\n var i = this._front + length & this._capacity - 1;\n this[i] = arg;\n this._length = length + 1;\n };\n\n Queue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n\n this._pushOne(receiver);\n\n this._pushOne(arg);\n\n return;\n }\n\n var j = this._front + length - 3;\n\n this._checkCapacity(length);\n\n var wrapMask = this._capacity - 1;\n this[j + 0 & wrapMask] = fn;\n this[j + 1 & wrapMask] = receiver;\n this[j + 2 & wrapMask] = arg;\n this._length = length;\n };\n\n Queue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n this[front] = undefined;\n this._front = front + 1 & this._capacity - 1;\n this._length--;\n return ret;\n };\n\n Queue.prototype.length = function () {\n return this._length;\n };\n\n Queue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n };\n\n Queue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = front + length & oldCapacity - 1;\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n };\n\n module.exports = Queue;\n }, {}],\n 27: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var raceLater = function raceLater(promise) {\n return promise.then(function (array) {\n return race(array, promise);\n });\n };\n\n function race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null) return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n\n return ret;\n }\n\n Promise.race = function (promises) {\n return race(promises, undefined);\n };\n\n Promise.prototype.race = function () {\n return race(this, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 28: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n function ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n\n initialValue._attachCancellationCallback(this);\n }\n\n this._initialValue = initialValue;\n this._currentCancellable = null;\n\n if (_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n\n this._promise._captureStackTrace();\n\n this._init$(undefined, -5);\n }\n\n util.inherits(ReductionPromiseArray, PromiseArray);\n\n ReductionPromiseArray.prototype._gotAccum = function (accum) {\n if (this._eachValues !== undefined && this._eachValues !== null && accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n };\n\n ReductionPromiseArray.prototype._eachComplete = function (value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n\n return this._eachValues;\n };\n\n ReductionPromiseArray.prototype._init = function () {};\n\n ReductionPromiseArray.prototype._resolveEmptyArray = function () {\n this._resolve(this._eachValues !== undefined ? this._eachValues : this._initialValue);\n };\n\n ReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n ReductionPromiseArray.prototype._resolve = function (value) {\n this._promise._resolveCallback(value);\n\n this._values = null;\n };\n\n ReductionPromiseArray.prototype._resultCancelled = function (sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n\n this._resultCancelled$();\n\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n };\n\n ReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n\n value._then(completed, completed, undefined, value, this);\n };\n\n Promise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n };\n\n Promise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n };\n\n function completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n }\n\n function reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n }\n\n function gotAccum(accum) {\n this.accum = accum;\n\n this.array._gotAccum(accum);\n\n var value = tryConvertToPromise(this.value, this.array._promise);\n\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n }\n\n function gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n\n promise._pushContext();\n\n var ret;\n\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(), this.accum, value, this.index, this.length);\n }\n\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\", promise);\n return ret;\n }\n };\n }, {\n \"./util\": 36\n }],\n 29: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var schedule;\n\n var noAsyncScheduler = function noAsyncScheduler() {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var NativePromise = util.getNativePromise();\n\n if (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode ? function (fn) {\n GlobalSetImmediate.call(global, fn);\n } : function (fn) {\n ProcessNextTick.call(process, fn);\n };\n } else if (typeof NativePromise === \"function\" && typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n\n schedule = function schedule(fn) {\n nativePromise.then(fn);\n };\n } else if (typeof MutationObserver !== \"undefined\" && !(typeof window !== \"undefined\" && window.navigator && (window.navigator.standalone || window.cordova))) {\n schedule = function () {\n var div = document.createElement(\"div\");\n var opts = {\n attributes: true\n };\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function () {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function scheduleToggle() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function () {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n }();\n } else if (typeof setImmediate !== \"undefined\") {\n schedule = function schedule(fn) {\n setImmediate(fn);\n };\n } else if (typeof setTimeout !== \"undefined\") {\n schedule = function schedule(fn) {\n setTimeout(fn, 0);\n };\n } else {\n schedule = noAsyncScheduler;\n }\n\n module.exports = schedule;\n }, {\n \"./util\": 36\n }],\n 30: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, debug) {\n var PromiseInspection = Promise.PromiseInspection;\n\n var util = _dereq_(\"./util\");\n\n function SettledPromiseArray(values) {\n this.constructor$(values);\n }\n\n util.inherits(SettledPromiseArray, PromiseArray);\n\n SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n };\n\n SettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n };\n\n Promise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n };\n\n Promise.prototype.settle = function () {\n return Promise.settle(this);\n };\n };\n }, {\n \"./util\": 36\n }],\n 31: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var RangeError = _dereq_(\"./errors\").RangeError;\n\n var AggregateError = _dereq_(\"./errors\").AggregateError;\n\n var isArray = util.isArray;\n var CANCELLATION = {};\n\n function SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n }\n\n util.inherits(SomePromiseArray, PromiseArray);\n\n SomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n\n if (this._howMany === 0) {\n this._resolve([]);\n\n return;\n }\n\n this._init$(undefined, -5);\n\n var isArrayResolved = isArray(this._values);\n\n if (!this._isResolved() && isArrayResolved && this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n };\n\n SomePromiseArray.prototype.init = function () {\n this._initialized = true;\n\n this._init();\n };\n\n SomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n };\n\n SomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n };\n\n SomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n };\n\n SomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n\n this._addRejected(CANCELLATION);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._checkOutcome = function () {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n };\n\n SomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n };\n\n SomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n };\n\n SomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n };\n\n SomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n };\n\n SomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" + this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n };\n\n SomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n };\n\n function some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n }\n\n Promise.some = function (promises, howMany) {\n return some(promises, howMany);\n };\n\n Promise.prototype.some = function (howMany) {\n return some(this, howMany);\n };\n\n Promise._SomePromiseArray = SomePromiseArray;\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 32: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed() ? promise._settledValue() : undefined;\n } else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n }\n\n PromiseInspection.prototype._settledValue = function () {\n return this._settledValueField;\n };\n\n var value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var reason = PromiseInspection.prototype.error = PromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var isFulfilled = PromiseInspection.prototype.isFulfilled = function () {\n return (this._bitField & 33554432) !== 0;\n };\n\n var isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n };\n\n var isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n };\n\n var isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n };\n\n PromiseInspection.prototype.isCancelled = function () {\n return (this._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.__isCancelled = function () {\n return (this._bitField & 65536) === 65536;\n };\n\n Promise.prototype._isCancelled = function () {\n return this._target().__isCancelled();\n };\n\n Promise.prototype.isCancelled = function () {\n return (this._target()._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.isPending = function () {\n return isPending.call(this._target());\n };\n\n Promise.prototype.isRejected = function () {\n return isRejected.call(this._target());\n };\n\n Promise.prototype.isFulfilled = function () {\n return isFulfilled.call(this._target());\n };\n\n Promise.prototype.isResolved = function () {\n return isResolved.call(this._target());\n };\n\n Promise.prototype.value = function () {\n return value.call(this._target());\n };\n\n Promise.prototype.reason = function () {\n var target = this._target();\n\n target._unsetRejectionIsUnhandled();\n\n return reason.call(target);\n };\n\n Promise.prototype._value = function () {\n return this._settledValue();\n };\n\n Promise.prototype._reason = function () {\n this._unsetRejectionIsUnhandled();\n\n return this._settledValue();\n };\n\n Promise.PromiseInspection = PromiseInspection;\n };\n }, {}],\n 33: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var isObject = util.isObject;\n\n function tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n\n obj._then(ret._fulfill, ret._reject, undefined, ret, null);\n\n return ret;\n }\n\n return doThenable(obj, then, context);\n }\n }\n\n return obj;\n }\n\n function doGetThen(obj) {\n return obj.then;\n }\n\n function getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n var hasProp = {}.hasOwnProperty;\n\n function isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n }\n\n function doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n\n promise._captureStackTrace();\n\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n\n promise._resolveCallback(value);\n\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n\n promise._rejectCallback(reason, synchronous, true);\n\n promise = null;\n }\n\n return ret;\n }\n\n return tryConvertToPromise;\n };\n }, {\n \"./util\": 36\n }],\n 34: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TimeoutError = Promise.TimeoutError;\n\n function HandleWrapper(handle) {\n this.handle = handle;\n }\n\n HandleWrapper.prototype._resultCancelled = function () {\n clearTimeout(this.handle);\n };\n\n var afterValue = function afterValue(value) {\n return delay(+this).thenReturn(value);\n };\n\n var delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n\n if (value !== undefined) {\n ret = Promise.resolve(value)._then(afterValue, null, null, ms, undefined);\n\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function () {\n ret._fulfill();\n }, +ms);\n\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n\n ret._captureStackTrace();\n }\n\n ret._setAsyncGuaranteed();\n\n return ret;\n };\n\n Promise.prototype.delay = function (ms) {\n return delay(ms, this);\n };\n\n var afterTimeout = function afterTimeout(promise, message, parent) {\n var err;\n\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n\n util.markAsOriginatingFromRejection(err);\n\n promise._attachExtraTrace(err);\n\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n };\n\n function successClear(value) {\n clearTimeout(this.handle);\n return value;\n }\n\n function failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n }\n\n Promise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear, undefined, handleWrapper, undefined);\n\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear, undefined, handleWrapper, undefined);\n }\n\n return ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 35: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var inherits = _dereq_(\"./util\").inherits;\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n\n if (maybePromise !== thenable && typeof thenable._isDisposable === \"function\" && typeof thenable._getDisposer === \"function\" && thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n\n return maybePromise;\n }\n\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n\n if (maybePromise instanceof Promise && maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(maybePromise._getDisposer().tryDispose(inspection), resources.promise);\n } catch (e) {\n return thrower(e);\n }\n\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower, null, null, null);\n }\n }\n\n iterator();\n }\n\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function (inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n\n this._promise._unsetDisposable();\n\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return d != null && typeof d.resource === \"function\" && typeof d.tryDispose === \"function\";\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n\n return value.promise();\n }\n\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length - 1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function () {\n var len = this.length;\n\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var input;\n var spreadArgs = true;\n\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n\n var resources = new ResourceList(len);\n\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n\n if (maybePromise instanceof Promise) {\n resource = maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources).then(function (inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n\n inspections[i] = inspection.value();\n }\n\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs ? fn.apply(undefined, inspections) : fn(inspections);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n var promise = resultPromise.lastly(function () {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n\n promise._setOnCancel(resources);\n\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & ~131072;\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n\n throw new TypeError();\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 36: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var canEvaluate = typeof navigator == \"undefined\";\n var errorObj = {\n e: {}\n };\n var tryCatchTarget;\n var globalObject = typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : this !== undefined ? this : null;\n\n function tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n function tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n }\n\n var inherits = function inherits(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) && propertyName.charAt(propertyName.length - 1) !== \"$\") {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n };\n\n function isPrimitive(val) {\n return val == null || val === true || val === false || typeof val === \"string\" || typeof val === \"number\";\n }\n\n function isObject(value) {\n return typeof value === \"function\" || _typeof(value) === \"object\" && value !== null;\n }\n\n function maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n return new Error(safeToString(maybeError));\n }\n\n function withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n\n ret[i] = appendee;\n return ret;\n }\n\n function getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null ? desc.value : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n }\n\n function notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n }\n\n function thrower(r) {\n throw r;\n }\n\n var inheritedDataKeys = function () {\n var excludedPrototypes = [Array.prototype, Object.prototype, Function.prototype];\n\n var isExcludedProto = function isExcludedProto(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function (obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n\n obj = es5.getPrototypeOf(obj);\n }\n\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function (obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n /*jshint forin:false */\n\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n\n ret.push(key);\n }\n }\n\n return ret;\n };\n }\n }();\n\n var thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\n\n function isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 && !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods = thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor || hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n\n return false;\n } catch (e) {\n return false;\n }\n }\n\n function toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n\n function ic() {\n return _typeof(receiver.foo);\n }\n\n ic();\n ic();\n return obj;\n eval(obj);\n }\n\n var rident = /^[a-z$_][a-z$_0-9]*$/i;\n\n function isIdentifier(str) {\n return rident.test(str);\n }\n\n function filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n\n for (var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n\n return ret;\n }\n\n function safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n }\n\n function isError(obj) {\n return obj instanceof Error || obj !== null && _typeof(obj) === \"object\" && typeof obj.message === \"string\" && typeof obj.name === \"string\";\n }\n\n function markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n } catch (ignore) {}\n }\n\n function originatesFromRejection(e) {\n if (e == null) return false;\n return e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError || e[\"isOperational\"] === true;\n }\n\n function canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n }\n\n var ensureErrorObject = function () {\n if (!(\"stack\" in new Error())) {\n return function (value) {\n if (canAttachTrace(value)) return value;\n\n try {\n throw new Error(safeToString(value));\n } catch (err) {\n return err;\n }\n };\n } else {\n return function (value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n }();\n\n function classString(obj) {\n return {}.toString.call(obj);\n }\n\n function copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n }\n\n var asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n }\n\n return null;\n };\n\n if (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function (v) {\n return Array.from(v);\n } : function (v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n\n while (!(itResult = it.next()).done) {\n ret.push(itResult.value);\n }\n\n return ret;\n };\n\n asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n\n return null;\n };\n }\n\n var isNode = typeof process !== \"undefined\" && classString(process).toLowerCase() === \"[object process]\";\n var hasEnvVariables = typeof process !== \"undefined\" && typeof process.env !== \"undefined\";\n\n function env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n }\n\n function getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function () {});\n\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n }\n\n function domainBind(self, cb) {\n return self.bind(cb);\n }\n\n var ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome && typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n };\n\n ret.isRecentNode = ret.isNode && function () {\n var version;\n\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n\n return version[0] === 0 && version[1] > 10 || version[0] > 0;\n }();\n\n if (ret.isNode) ret.toFastProperties(process);\n\n try {\n throw new Error();\n } catch (e) {\n ret.lastLineError = e;\n }\n\n module.exports = ret;\n }, {\n \"./es5\": 13\n }]\n }, {}, [4])(4);\n});\n;\n\nif (typeof window !== 'undefined' && window !== null) {\n window.P = window.Promise;\n} else if (typeof self !== 'undefined' && self !== null) {\n self.P = self.Promise;\n}","module.exports = require(\"bluebird\");","var utils = require(\"../../utils/utils\");\n\nvar StateService = function StateService() {\n var stateProviders = {};\n\n function getState(name) {\n var provider = stateProviders[name];\n\n if (provider) {\n return stateProviders[name].method();\n } else {\n var res = {};\n\n for (var i in stateProviders) {\n if (!stateProviders[i].internal) utils.mixin(res, stateProviders[i].method(), true);\n }\n\n return res;\n }\n }\n\n function registerProvider(name, provider, internal) {\n stateProviders[name] = {\n method: provider,\n internal: internal\n };\n }\n\n function unregisterProvider(name) {\n delete stateProviders[name];\n }\n\n return {\n getState: getState,\n registerProvider: registerProvider,\n unregisterProvider: unregisterProvider\n };\n};\n\nmodule.exports = StateService;","module.exports = function (gantt) {\n var regTemplates = {};\n\n function initTemplate(name, initial, template_name) {\n template_name = template_name || name;\n var config = gantt.config,\n templates = gantt.templates;\n\n if (gantt.config[name] && regTemplates[template_name] != config[name]) {\n if (!(initial && templates[template_name])) {\n templates[template_name] = gantt.date.date_to_str(config[name]);\n regTemplates[template_name] = config[name];\n }\n }\n }\n\n function initTemplates() {\n var labels = gantt.locale.labels;\n labels.gantt_save_btn = labels.icon_save;\n labels.gantt_cancel_btn = labels.icon_cancel;\n labels.gantt_delete_btn = labels.icon_delete;\n var date = gantt.date; //build configuration based templates\n\n var d = date.date_to_str;\n var c = gantt.config;\n var format_date = d(c.xml_date || c.date_format, c.server_utc);\n var parse_date = date.str_to_date(c.xml_date || c.date_format, c.server_utc);\n initTemplate(\"date_scale\", true, undefined, gantt.config, gantt.templates);\n initTemplate(\"date_grid\", true, \"grid_date_format\", gantt.config, gantt.templates);\n initTemplate(\"task_date\", true, undefined, gantt.config, gantt.templates);\n gantt.mixin(gantt.templates, {\n xml_format: undefined,\n // deprecated\n format_date: format_date,\n xml_date: undefined,\n // deprecated\n parse_date: parse_date,\n progress_text: function progress_text(start, end, task) {\n return \"\";\n },\n grid_header_class: function grid_header_class(column, config) {\n return \"\";\n },\n task_text: function task_text(start, end, task) {\n return task.text;\n },\n task_class: function task_class(start, end, task) {\n return \"\";\n },\n task_end_date: function task_end_date(date) {\n return gantt.templates.task_date(date);\n },\n grid_row_class: function grid_row_class(start, end, task) {\n return \"\";\n },\n task_row_class: function task_row_class(start, end, task) {\n return \"\";\n },\n timeline_cell_class: function timeline_cell_class(item, date) {\n return \"\";\n },\n timeline_cell_content: function timeline_cell_content(item, date) {\n return \"\";\n },\n scale_cell_class: function scale_cell_class(date) {\n return \"\";\n },\n scale_row_class: function scale_row_class(date) {\n return \"\";\n },\n grid_indent: function grid_indent(item) {\n return \"<div class='gantt_tree_indent'></div>\";\n },\n grid_folder: function grid_folder(item) {\n return \"<div class='gantt_tree_icon gantt_folder_\" + (item.$open ? \"open\" : \"closed\") + \"'></div>\";\n },\n grid_file: function grid_file(item) {\n return \"<div class='gantt_tree_icon gantt_file'></div>\";\n },\n grid_open: function grid_open(item) {\n return \"<div class='gantt_tree_icon gantt_\" + (item.$open ? \"close\" : \"open\") + \"'></div>\";\n },\n grid_blank: function grid_blank(item) {\n return \"<div class='gantt_tree_icon gantt_blank'></div>\";\n },\n date_grid: function date_grid(date, item, column) {\n if (item && gantt.isUnscheduledTask(item) && gantt.config.show_unscheduled) {\n return gantt.templates.task_unscheduled_time(item);\n } else {\n return gantt.templates.grid_date_format(date, column);\n }\n },\n task_time: function task_time(start, end, ev) {\n if (gantt.isUnscheduledTask(ev) && gantt.config.show_unscheduled) {\n return gantt.templates.task_unscheduled_time(ev);\n } else {\n return gantt.templates.task_date(start) + \" - \" + gantt.templates.task_end_date(end);\n }\n },\n task_unscheduled_time: function task_unscheduled_time(task) {\n return \"\";\n },\n time_picker: d(c.time_picker),\n link_class: function link_class(link) {\n return \"\";\n },\n link_description: function link_description(link) {\n var from = gantt.getTask(link.source),\n to = gantt.getTask(link.target);\n return \"<b>\" + from.text + \"</b> – <b>\" + to.text + \"</b>\";\n },\n drag_link: function drag_link(from, from_start, to, to_start) {\n from = gantt.getTask(from);\n var labels = gantt.locale.labels;\n var text = \"<b>\" + from.text + \"</b> \" + (from_start ? labels.link_start : labels.link_end) + \"<br/>\";\n\n if (to) {\n to = gantt.getTask(to);\n text += \"<b> \" + to.text + \"</b> \" + (to_start ? labels.link_start : labels.link_end) + \"<br/>\";\n }\n\n return text;\n },\n drag_link_class: function drag_link_class(from, from_start, to, to_start) {\n var add = \"\";\n\n if (from && to) {\n var allowed = gantt.isLinkAllowed(from, to, from_start, to_start);\n add = \" \" + (allowed ? \"gantt_link_allow\" : \"gantt_link_deny\");\n }\n\n return \"gantt_link_tooltip\" + add;\n },\n\n /* used for aria-labels of bar elements and for tooltip.js */\n tooltip_date_format: date.date_to_str(\"%Y-%m-%d\"),\n tooltip_text: function tooltip_text(start, end, event) {\n return \"<b>Task:</b> \" + event.text + \"<br/><b>Start date:</b> \" + gantt.templates.tooltip_date_format(start) + \"<br/><b>End date:</b> \" + gantt.templates.tooltip_date_format(end);\n }\n });\n }\n\n return {\n initTemplates: initTemplates,\n initTemplate: initTemplate\n };\n};","var eventable = require(\"../../utils/eventable\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar timeout = require(\"../../utils/timeout\");\n\nvar global = require(\"../../utils/global\");\n\nvar domHelpers = require(\"../ui/utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n function copyDomEvent(e) {\n return {\n target: e.target || e.srcElement,\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n altKey: e.altKey\n };\n }\n\n function DnD(obj, config) {\n this._obj = obj;\n this._settings = config || {};\n eventable(this);\n var inputMethods = this.getInputMethods();\n this._drag_start_timer = null;\n gantt.attachEvent(\"onGanttScroll\", utils.bind(function (left, top) {\n this.clearDragTimer();\n }, this));\n var lastDown = 0;\n var eventParams = {\n passive: false\n };\n\n for (var i = 0; i < inputMethods.length; i++) {\n utils.bind(function (input) {\n gantt.event(obj, input.down, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n if (config.preventDefault && config.selector && domHelpers.closest(e.target, config.selector)) {\n e.preventDefault();\n }\n\n if (gantt.config.touch && e.timeStamp && e.timeStamp - lastDown < 300) {\n return;\n }\n\n this._settings.original_target = copyDomEvent(e);\n\n if (gantt.config.touch) {\n this.clearDragTimer();\n this._drag_start_timer = setTimeout(utils.bind(function () {\n if (gantt.getState().lightbox) {\n return;\n }\n\n this.dragStart(obj, e, input);\n }, this), gantt.config.touch_drag);\n } else {\n this.dragStart(obj, e, input);\n }\n }, this), eventParams);\n var eventElement = document.body;\n gantt.event(eventElement, input.up, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n this.clearDragTimer();\n }, this), eventParams);\n }, this)(inputMethods[i]);\n }\n }\n\n DnD.prototype = {\n traceDragEvents: function traceDragEvents(domElement, inputMethod) {\n var mousemove = utils.bind(function (e) {\n return this.dragMove(domElement, e, inputMethod.accessor);\n }, this);\n utils.bind(function (e) {\n return this.dragScroll(domElement, e);\n }, this);\n var limited_mousemove = utils.bind(function (e) {\n if (this.config.started && utils.defined(this.config.updates_per_second)) {\n if (!timeout(this, this.config.updates_per_second)) return;\n }\n\n var dndActive = mousemove(e);\n\n if (dndActive) {\n try {\n if (e && e.preventDefault && e.cancelable) {\n //e.cancelable condition - because navigator.vibrate is blocked by Chrome\n e.preventDefault(); //Cancel default action on DND\n } //Cancel default action on DND\n\n } catch (e) {// just suppress the exception, nothing needed to be done here\n } //e.cancelBubble = true;\n\n }\n\n return dndActive;\n }, this);\n var eventElement = domHelpers.getRootNode(gantt.$root);\n var mousemoveContainer = this.config.mousemoveContainer || domHelpers.getRootNode(gantt.$root);\n var eventParams = {\n passive: false\n };\n var mouseup = utils.bind(function (e) {\n gantt.eventRemove(mousemoveContainer, inputMethod.move, limited_mousemove);\n gantt.eventRemove(eventElement, inputMethod.up, mouseup, eventParams);\n return this.dragEnd(domElement);\n }, this);\n gantt.event(mousemoveContainer, inputMethod.move, limited_mousemove, eventParams);\n gantt.event(eventElement, inputMethod.up, mouseup, eventParams);\n },\n checkPositionChange: function checkPositionChange(pos) {\n var diff_x = pos.x - this.config.pos.x;\n var diff_y = pos.y - this.config.pos.y;\n var distance = Math.sqrt(Math.pow(Math.abs(diff_x), 2) + Math.pow(Math.abs(diff_y), 2));\n\n if (distance > this.config.sensitivity) {\n return true;\n } else {\n return false;\n }\n },\n initDnDMarker: function initDnDMarker() {\n // create dnd placeholder and put it in dom\n var marker = this.config.marker = document.createElement(\"div\");\n marker.className = \"gantt_drag_marker\"; // GS-1333: don't show any message when we resize grid columns\n\n marker.innerHTML = \"\";\n document.body.appendChild(marker);\n },\n backupEventTarget: function backupEventTarget(domEvent, getEvent) {\n if (!gantt.config.touch) {\n return;\n } // keep original event target in DOM in order to keep dnd on touchmove event\n\n\n var e = getEvent(domEvent);\n var el = e.target || e.srcElement;\n var copy = el.cloneNode(true); //this.config.target.target = copy;\n\n this.config.original_target = copyDomEvent(e);\n this.config.original_target.target = copy;\n this.config.backup_element = el;\n el.parentNode.appendChild(copy);\n el.style.display = \"none\";\n var mousemoveContainer = this.config.mousemoveContainer || document.body;\n mousemoveContainer.appendChild(el);\n },\n getInputMethods: function getInputMethods() {\n // bind actions to browser events\n var inputMethods = [];\n inputMethods.push({\n \"move\": \"mousemove\",\n \"down\": \"mousedown\",\n \"up\": \"mouseup\",\n \"accessor\": function accessor(e) {\n return e;\n }\n });\n\n if (gantt.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n inputMethods.push({\n \"move\": \"touchmove\",\n \"down\": \"touchstart\",\n \"up\": \"touchend\",\n \"accessor\": function accessor(ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY),\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }\n });\n } else if (global.navigator.pointerEnabled) {\n inputMethods.push({\n \"move\": \"pointermove\",\n \"down\": \"pointerdown\",\n \"up\": \"pointerup\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }\n });\n } else if (global.navigator.msPointerEnabled) {\n inputMethods.push({\n \"move\": \"MSPointerMove\",\n \"down\": \"MSPointerDown\",\n \"up\": \"MSPointerUp\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }\n });\n }\n }\n\n return inputMethods;\n },\n clearDragTimer: function clearDragTimer() {\n if (this._drag_start_timer) {\n clearTimeout(this._drag_start_timer);\n this._drag_start_timer = null;\n }\n },\n dragStart: function dragStart(obj, e, inputMethod) {\n if (this.config && this.config.started) {\n return;\n }\n\n this.config = {\n obj: obj,\n marker: null,\n started: false,\n pos: this.getPosition(e),\n sensitivity: 4\n };\n if (this._settings) utils.mixin(this.config, this._settings, true);\n this.traceDragEvents(obj, inputMethod);\n gantt._prevent_touch_scroll = true;\n document.body.className += \" gantt_noselect\";\n\n if (gantt.config.touch) {\n this.dragMove(obj, e, inputMethod.accessor);\n }\n },\n dragMove: function dragMove(obj, e, getEvent) {\n var source = getEvent(e);\n if (!source) return false;\n\n if (!this.config.marker && !this.config.started) {\n var pos = this.getPosition(source);\n\n if (gantt.config.touch || this.checkPositionChange(pos)) {\n // real drag starts here,\n // when user moves mouse at first time after onmousedown\n this.config.started = true;\n this.config.ignore = false;\n gantt._touch_drag = true;\n\n if (this.callEvent(\"onBeforeDragStart\", [obj, this.config.original_target]) === false) {\n this.config.ignore = true;\n return false;\n }\n\n this.backupEventTarget(e, getEvent);\n this.initDnDMarker();\n\n gantt._touch_feedback();\n\n this.callEvent(\"onAfterDragStart\", [obj, this.config.original_target]);\n } else {\n this.config.ignore = true;\n }\n }\n\n if (!this.config.ignore) {\n // GS-1279 Gantt crashes on Mobile Firefox after starting to create a link and moving finger outisde the page.\n if (e.targetTouches && !source.target) return;\n source.pos = this.getPosition(source);\n this.config.marker.style.left = source.pos.x + \"px\";\n this.config.marker.style.top = source.pos.y + \"px\";\n this.callEvent(\"onDragMove\", [obj, source]);\n return true;\n }\n\n return false;\n },\n dragEnd: function dragEnd(obj) {\n var target = this.config.backup_element;\n\n if (target && target.parentNode) {\n target.parentNode.removeChild(target);\n }\n\n gantt._prevent_touch_scroll = false;\n\n if (this.config.marker) {\n this.config.marker.parentNode.removeChild(this.config.marker);\n this.config.marker = null;\n this.callEvent(\"onDragEnd\", []);\n }\n\n this.config.started = false;\n gantt._touch_drag = false;\n document.body.className = document.body.className.replace(\" gantt_noselect\", \"\");\n },\n getPosition: function getPosition(e) {\n var x = 0,\n y = 0;\n\n if (e.pageX || e.pageY) {\n x = e.pageX;\n y = e.pageY;\n } else if (e.clientX || e.clientY) {\n x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n\n return {\n x: x,\n y: y\n };\n }\n };\n return DnD;\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar t = /*#__PURE__*/function () {\n function t(_t) {\n _classCallCheck(this, t);\n\n var e = _t.url,\n s = _t.token;\n this._url = e, this._token = s, this._mode = 1, this._seed = 1, this._queue = [], this.data = {}, this.api = {}, this._events = {};\n }\n\n _createClass(t, [{\n key: \"headers\",\n value: function headers() {\n return {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Remote-Token\": this._token\n };\n }\n }, {\n key: \"fetch\",\n value: function (_fetch) {\n function fetch(_x, _x2) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function (_t2, e) {\n var s = {\n credentials: \"include\",\n headers: this.headers()\n };\n return e && (s.method = \"POST\", s.body = e), fetch(_t2, s).then(function (_t3) {\n return _t3.json();\n });\n })\n }, {\n key: \"load\",\n value: function load(_t4) {\n var _this = this;\n\n return _t4 && (this._url = _t4), this.fetch(this._url).then(function (_t5) {\n return _this.parse(_t5);\n });\n }\n }, {\n key: \"parse\",\n value: function parse(_t6) {\n var e = _t6.key,\n s = _t6.websocket;\n e && (this._token = _t6.key);\n\n for (var _e in _t6.data) {\n this.data[_e] = _t6.data[_e];\n }\n\n for (var _e2 in _t6.api) {\n var _s = this.api[_e2] = {},\n i = _t6.api[_e2];\n\n for (var _t29 in i) {\n _s[_t29] = this._wrapper(_e2 + \".\" + _t29);\n }\n }\n\n return s && this.connect(), this;\n }\n }, {\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var _t8 = this._socket;\n _t8 && (this._socket = null, _t8.onclose = function () {}, _t8.close()), this._mode = 2, this._socket = function (t, e, s, i) {\n var n = e;\n \"/\" === n[0] && (n = document.location.protocol + \"//\" + document.location.host + e);\n n = n.replace(/^http(s|):/, \"ws$1:\");\n var o = -1 != n.indexOf(\"?\") ? \"&\" : \"?\";\n n = \"\".concat(n).concat(o, \"token=\").concat(s, \"&ws=1\");\n var r = new WebSocket(n);\n return r.onclose = function () {\n return setTimeout(function () {\n return t.connect();\n }, 2e3);\n }, r.onmessage = function (e) {\n var s = JSON.parse(e.data);\n\n switch (s.action) {\n case \"result\":\n t.result(s.body, []);\n break;\n\n case \"event\":\n t.fire(s.body.name, s.body.value);\n break;\n\n case \"start\":\n i();\n break;\n\n default:\n t.onError(s.data);\n }\n }, r;\n }(this, this._url, this._token, function () {\n return _this2._mode = 3, _this2._send(), _this2._resubscribe(), _this2;\n });\n }\n }, {\n key: \"_wrapper\",\n value: function _wrapper(_t9) {\n return function () {\n var _this3 = this;\n\n var e = [].slice.call(arguments);\n var s = null;\n var i = new Promise(function (i, n) {\n s = {\n data: {\n id: _this3._uid(),\n name: _t9,\n args: e\n },\n status: 1,\n resolve: i,\n reject: n\n }, _this3._queue.push(s);\n });\n return this.onCall(s, i), 3 === this._mode ? this._send(s) : setTimeout(function () {\n return _this3._send();\n }, 1), i;\n }.bind(this);\n }\n }, {\n key: \"_uid\",\n value: function _uid() {\n return (this._seed++).toString();\n }\n }, {\n key: \"_send\",\n value: function _send(_t10) {\n var _this4 = this;\n\n if (2 == this._mode) return void setTimeout(function () {\n return _this4._send();\n }, 100);\n var e = _t10 ? [_t10] : this._queue.filter(function (_t11) {\n return 1 === _t11.status;\n });\n if (!e.length) return;\n var s = e.map(function (_t12) {\n return _t12.status = 2, _t12.data;\n });\n 3 !== this._mode ? this.fetch(this._url, JSON.stringify(s))[\"catch\"](function (_t13) {\n return _this4.onError(_t13);\n }).then(function (_t14) {\n return _this4.result(_t14, s);\n }) : this._socket.send(JSON.stringify({\n action: \"call\",\n body: s\n }));\n }\n }, {\n key: \"result\",\n value: function result(_t15, e) {\n var s = {};\n if (_t15) for (var _e3 = 0; _e3 < _t15.length; _e3++) {\n s[_t15[_e3].id] = _t15[_e3];\n } else for (var _t30 = 0; _t30 < e.length; _t30++) {\n s[e[_t30].id] = {\n id: e[_t30].id,\n error: \"Network Error\",\n data: null\n };\n }\n\n for (var _t31 = this._queue.length - 1; _t31 >= 0; _t31--) {\n var _e4 = this._queue[_t31],\n i = s[_e4.data.id];\n i && (this.onResponse(_e4, i), i.error ? _e4.reject(i.error) : _e4.resolve(i.data), this._queue.splice(_t31, 1));\n }\n }\n }, {\n key: \"on\",\n value: function on(_t18, e) {\n var s = this._uid();\n\n var i = this._events[_t18];\n var n = !!i;\n return n || (i = this._events[_t18] = []), i.push({\n id: s,\n handler: e\n }), n || 3 != this._mode || this._socket.send(JSON.stringify({\n action: \"subscribe\",\n name: _t18\n })), {\n name: _t18,\n id: s\n };\n }\n }, {\n key: \"_resubscribe\",\n value: function _resubscribe() {\n if (3 == this._mode) for (var _t32 in this._events) {\n this._socket.send(JSON.stringify({\n action: \"subscribe\",\n name: _t32\n }));\n }\n }\n }, {\n key: \"detach\",\n value: function detach(_t20) {\n if (!_t20) {\n if (3 == this._mode) for (var _t33 in this._events) {\n this._socket.send(JSON.stringify({\n action: \"unsubscribe\",\n key: _t33\n }));\n }\n return void (this._events = {});\n }\n\n var e = _t20.id,\n s = _t20.name,\n i = this._events[s];\n\n if (i) {\n var _t34 = i.filter(function (_t23) {\n return _t23.id != e;\n });\n\n _t34.length ? this._events[s] = _t34 : (delete this._events[s], 3 == this._mode && this._socket.send(JSON.stringify({\n action: \"unsubscribe\",\n name: s\n })));\n }\n }\n }, {\n key: \"fire\",\n value: function fire(_t24, e) {\n var s = this._events[_t24];\n if (s) for (var _t35 = 0; _t35 < s.length; _t35++) {\n s[_t35].handler(e);\n }\n }\n }, {\n key: \"onError\",\n value: function onError(_t26) {\n return null;\n }\n }, {\n key: \"onCall\",\n value: function onCall(_t27, e) {}\n }, {\n key: \"onResponse\",\n value: function onResponse(_t28, e) {}\n }]);\n\n return t;\n}();\n\nexport { t as Client };","var remote_client = require(\"remote-client\");\n\nmodule.exports = {\n remoteEvents: function remoteEvents(url, token) {\n var _this = this;\n\n var remote = new remote_client.Client({\n url: url,\n token: token\n }); // temporary patch, as we do not want credentials\n\n remote.fetch = function (url, body) {\n var req = {\n headers: this.headers()\n };\n\n if (body) {\n req.method = \"POST\";\n req.body = body;\n }\n\n return fetch(url, req).then(function (res) {\n return res.json();\n });\n };\n\n this._ready = remote.load().then(function (back) {\n return _this._remote = back;\n });\n\n function ready() {\n return this._ready;\n }\n\n function on(name, handler) {\n this.ready().then(function (back) {\n if (typeof name === \"string\") back.on(name, handler);else {\n for (var key in name) {\n back.on(key, name[key]);\n }\n }\n });\n }\n\n this.ready = ready;\n this.on = on;\n }\n};","const dateToStr = (format: string, utc: boolean, gantt) => {\r\n\treturn (date) => {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, (a) => {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? gantt.date.to_fixed(date.getUTCDate()) : gantt.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? gantt.date.to_fixed((date.getUTCMonth() + 1)) : gantt.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? gantt.date.to_fixed(date.getUTCFullYear() % 100) : gantt.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? gantt.locale.date.day_short[date.getUTCDay()] : gantt.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? gantt.locale.date.day_full[date.getUTCDay()] : gantt.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? gantt.locale.date.month_short[date.getUTCMonth()] : gantt.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? gantt.locale.date.month_full[date.getUTCMonth()] : gantt.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? gantt.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : gantt.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? gantt.date.to_fixed(date.getUTCHours()) : gantt.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? gantt.date.to_fixed(date.getUTCMinutes()) : gantt.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? gantt.date.to_fixed(date.getUTCSeconds()) : gantt.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? gantt.date.to_fixed(gantt.date.getUTCISOWeek(date)) : gantt.date.to_fixed(gantt.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nconst strToDate = (format: string, utc: boolean, gantt:any) => {\r\n\treturn (date: string) => {\r\n\t\tconst set: Array<string|number> = [0, 0, 1, 0, 0, 0];\r\n\t\tconst temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\t\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\r\n\t\tfor (let i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] as unknown as number || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] as unknown as number || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] as unknown as number * 1 + ((temp[i] as unknown as number) > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] as unknown as number || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] as unknown as number || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] as unknown as number || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] as number % 12 + ((temp[i] || \"\").toLowerCase() === \"am\" ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = gantt.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = gantt.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(\r\n\t\t\t\tset[0] as number,\r\n\t\t\t\tset[1] as number,\r\n\t\t\t\tset[2] as number,\r\n\t\t\t\tset[3] as number,\r\n\t\t\t\tset[4] as number,\r\n\t\t\t\tset[5] as number\r\n\t\t\t));\r\n\t\t}\r\n\t\treturn new Date(\r\n\t\t\tset[0] as number,\r\n\t\t\tset[1] as number,\r\n\t\t\tset[2] as number,\r\n\t\t\tset[3] as number,\r\n\t\t\tset[4] as number,\r\n\t\t\tset[5] as number\r\n\t\t);\r\n\t};\r\n\r\n};\r\n\r\n\r\nconst cspVersion = {\r\n\tdate_to_str: dateToStr,\r\n\tstr_to_date: strToDate\r\n};\r\n\r\nexport default cspVersion;","const dateToStr = (format: string, utc: boolean, gantt) => {\r\n\tformat = format.replace(/%[a-zA-Z]/g, (a) => {\r\n\t\tswitch (a) {\r\n\t\t\tcase \"%d\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Date())+\"`;\r\n\t\t\tcase \"%m\":\r\n\t\t\t\treturn `\"+to_fixed((date.get${utc?\"UTC\":\"\"}Month()+1))+\"`;\r\n\t\t\tcase \"%j\":\r\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}Date()+\"`;\r\n\t\t\tcase \"%n\":\r\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Month()+1)+\"`;\r\n\t\t\tcase \"%y\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}FullYear()%100)+\"`;\r\n\t\t\tcase \"%Y\":\r\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}FullYear()+\"`;\r\n\t\t\tcase \"%D\":\r\n\t\t\t\treturn `\"+locale.date.day_short[date.get${utc?\"UTC\":\"\"}Day()]+\"`;\r\n\t\t\tcase \"%l\":\r\n\t\t\t\treturn `\"+locale.date.day_full[date.get${utc?\"UTC\":\"\"}Day()]+\"`;\r\n\t\t\tcase \"%M\":\r\n\t\t\t\treturn `\"+locale.date.month_short[date.get${utc?\"UTC\":\"\"}Month()]+\"`;\r\n\t\t\tcase \"%F\":\r\n\t\t\t\treturn `\"+locale.date.month_full[date.get${utc?\"UTC\":\"\"}Month()]+\"`;\r\n\t\t\tcase \"%h\":\r\n\t\t\t\treturn `\"+to_fixed((date.get${utc?\"UTC\":\"\"}Hours()+11)%12+1)+\"`;\r\n\t\t\tcase \"%g\":\r\n\t\t\t\treturn `\"+((date.get${utc?\"UTC\":\"\"}Hours()+11)%12+1)+\"`;\r\n\t\t\tcase \"%G\":\r\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}Hours()+\"`;\r\n\t\t\tcase \"%H\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Hours())+\"`;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Minutes())+\"`;\r\n\t\t\tcase \"%a\":\r\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Hours()>11?\"pm\":\"am\")+\"`;\r\n\t\t\tcase \"%A\":\r\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Hours()>11?\"PM\":\"AM\")+\"`;\r\n\t\t\tcase \"%s\":\r\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Seconds())+\"`;\r\n\t\t\tcase \"%W\":\r\n\t\t\t\treturn `\"+to_fixed(getISOWeek(date))+\"`;\r\n\t\t\tcase \"%w\":\r\n\t\t\t\treturn `\"+to_fixed(getWeek(date))+\"`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn a;\r\n\t\t}\r\n\t});\r\n\r\n\t// tslint:disable-next-line: function-constructor\r\n\tconst dateToStrFn = new Function(\"date\", \"to_fixed\", \"locale\", \"getISOWeek\", \"getWeek\", `return \"${format}\";`);\r\n\r\n\treturn (date: Date) => {\r\n\t\treturn dateToStrFn(date, gantt.date.to_fixed, gantt.locale, gantt.date.getISOWeek, gantt.date.getWeek);\r\n\t};\r\n};\r\n\r\n\r\nconst strToDate = (format: string, utc: boolean, gantt:any) => {\r\n\tlet splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (let i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\":\r\n\t\t\t\tsplt += `set[2]=temp[${i}]||1;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\":\r\n\t\t\t\tsplt += `set[1]=(temp[${i}]||1)-1;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\":\r\n\t\t\t\tsplt += `set[0]=temp[${i}]*1+(temp[${i}]>50?1900:2000);`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += `set[3]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += `set[4]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\":\r\n\t\t\t\tsplt += `set[0]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\":\r\n\t\t\t\tsplt += `set[3]=set[3]%12+((temp[${i}]||'').toLowerCase()=='am'?0:12);`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\":\r\n\t\t\t\tsplt += `set[5]=temp[${i}]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\":\r\n\t\t\t\tsplt += `set[1]=locale.date.month_short_hash[temp[${i}]]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\":\r\n\t\t\t\tsplt += `set[1]=locale.date.month_full_hash[temp[${i}]]||0;`;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tlet code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) { code = ` Date.UTC(${code})`; }\r\n\t// tslint:disable-next-line: function-constructor\r\n\tconst strToDateFn = new Function(\"date\", \"locale\", `var set=[0,0,1,0,0,0]; ${splt} return new Date(${code});`);\r\n\r\n\treturn (dateString) => {\r\n\t\treturn strToDateFn(dateString, gantt.locale);\r\n\t};\r\n};\r\n\r\nconst fastVersion = {\r\n\tdate_to_str: dateToStr,\r\n\tstr_to_date: strToDate\r\n};\r\n\r\nexport default fastVersion;","/*\r\n %d - the day as a number with a leading zero ( 01 to 31 );\r\n %j - the day as a number without a leading zero ( 1 to 31 );\r\n %D - the day as an abbreviation ( Sun to Sat );\r\n %l - the day as a full name ( Sunday to Saturday );\r\n %W - the ISO-8601 week number of the year. Weeks start on Monday; 1)\r\n %m - the month as a number without a leading zero ( 1 to 12 );\r\n %n - the month as a number with a leading zero ( 01 to 12);\r\n %M - the month as an abbreviation ( Jan to Dec );\r\n %F - the month as a full name ( January to December );\r\n %y - the year as a two-digit number ( 00 to 99 );\r\n %Y - the year as a four-digit number ( 1900–9999 );\r\n %h - the hour based on the 12-hour clock ( 00 to 11 );\r\n %H - the hour based on the 24-hour clock ( 00 to 23 );\r\n %i - the minute as a number with a leading zero ( 00 to 59 );\r\n %s - the second as a number without a leading zero ( 00 to 59 ); 2)\r\n %a - displays am (for times from midnight until noon) and pm (for times from noon until midnight);\r\n %A - displays AM (for times from midnight until noon) and PM (for times from noon until midnight).\r\n*/\nvar fastVersion = require(\"./date_parsers/fast_version\")[\"default\"];\n\nvar cspCompliantVersion = require(\"./date_parsers/csp_compliant_version\")[\"default\"];\n\nmodule.exports = function (gantt) {\n var canUseCsp = null;\n\n function cspAutoCheck() {\n try {\n new Function(\"canUseCsp = false;\");\n } catch (e) {\n canUseCsp = true;\n }\n }\n\n function useCsp() {\n var result = false;\n\n if (gantt.config.csp === \"auto\") {\n if (canUseCsp === null) {\n cspAutoCheck();\n }\n\n result = canUseCsp;\n } else {\n result = gantt.config.csp;\n }\n\n return result;\n }\n\n var dateHelper = {\n init: function init() {\n var locale = gantt.locale;\n var s = locale.date.month_short;\n var t = locale.date.month_short_hash = {};\n\n for (var i = 0; i < s.length; i++) {\n t[s[i]] = i;\n }\n\n var s = locale.date.month_full;\n var t = locale.date.month_full_hash = {};\n\n for (var i = 0; i < s.length; i++) {\n t[s[i]] = i;\n }\n },\n date_part: function date_part(date) {\n var old = new Date(date);\n date.setHours(0);\n this.hour_start(date);\n if (date.getHours() && ( //shift to yesterday on dst\n date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear())) date.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\n return date;\n },\n time_part: function time_part(date) {\n return (date.valueOf() / 1000 - date.getTimezoneOffset() * 60) % 86400;\n },\n week_start: function week_start(date) {\n var shift = date.getDay();\n\n if (gantt.config.start_on_monday) {\n if (shift === 0) shift = 6;else shift--;\n }\n\n return this.date_part(this.add(date, -1 * shift, \"day\"));\n },\n month_start: function month_start(date) {\n date.setDate(1);\n return this.date_part(date);\n },\n quarter_start: function quarter_start(date) {\n this.month_start(date);\n var m = date.getMonth(),\n res_month;\n\n if (m >= 9) {\n res_month = 9;\n } else if (m >= 6) {\n res_month = 6;\n } else if (m >= 3) {\n res_month = 3;\n } else {\n res_month = 0;\n }\n\n date.setMonth(res_month);\n return date;\n },\n year_start: function year_start(date) {\n date.setMonth(0);\n return this.month_start(date);\n },\n day_start: function day_start(date) {\n return this.date_part(date);\n },\n hour_start: function hour_start(date) {\n if (date.getMinutes()) date.setMinutes(0);\n this.minute_start(date);\n return date;\n },\n minute_start: function minute_start(date) {\n if (date.getSeconds()) date.setSeconds(0);\n if (date.getMilliseconds()) date.setMilliseconds(0);\n return date;\n },\n _add_days: function _add_days(modifiedDate, inc, originalDate) {\n modifiedDate.setDate(modifiedDate.getDate() + inc);\n var incCondition = inc >= 0;\n var getHoursCondition = !originalDate.getHours() && modifiedDate.getHours(); //shift to yesterday on dst\n\n var getDateCondition = modifiedDate.getDate() <= originalDate.getDate() || modifiedDate.getMonth() < originalDate.getMonth() || modifiedDate.getFullYear() < originalDate.getFullYear();\n\n if (incCondition && getHoursCondition && getDateCondition) {\n modifiedDate.setTime(modifiedDate.getTime() + 60 * 60 * 1000 * (24 - modifiedDate.getHours()));\n }\n\n var worktimeCalculation = inc > 1;\n\n if (worktimeCalculation && getHoursCondition) {\n // try to shift the modified Date to 00:00\n modifiedDate.setHours(0);\n }\n\n return modifiedDate;\n },\n add: function add(date, inc, mode) {\n /*jsl:ignore*/\n var ndate = new Date(date.valueOf());\n\n switch (mode) {\n case \"day\":\n ndate = this._add_days(ndate, inc, date);\n break;\n\n case \"week\":\n ndate = this._add_days(ndate, inc * 7, date);\n break;\n\n case \"month\":\n ndate.setMonth(ndate.getMonth() + inc);\n break;\n\n case \"year\":\n ndate.setYear(ndate.getFullYear() + inc);\n break;\n\n case \"hour\":\n /*\r\n \tadding hours/minutes via setHour(getHour() + inc) gives weird result when\r\n \tadding one hour to the time before switch to a Daylight Saving time\r\n \t\t\texample: //Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\r\n \tnew Date(2014, 02, 30, 1).setHours(2)\r\n \t>>Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\r\n \t\t\tsetTime seems working as expected\r\n */\n ndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\n break;\n\n case \"minute\":\n ndate.setTime(ndate.getTime() + inc * 60 * 1000);\n break;\n\n default:\n return this[\"add_\" + mode](date, inc, mode);\n }\n\n return ndate;\n /*jsl:end*/\n },\n add_quarter: function add_quarter(date, inc) {\n return this.add(date, inc * 3, \"month\");\n },\n to_fixed: function to_fixed(num) {\n if (num < 10) return \"0\" + num;\n return num;\n },\n copy: function copy(date) {\n return new Date(date.valueOf());\n },\n date_to_str: function date_to_str(format, utc) {\n var result = fastVersion;\n\n if (useCsp()) {\n result = cspCompliantVersion;\n }\n\n return result.date_to_str(format, utc, gantt);\n },\n str_to_date: function str_to_date(format, utc) {\n var result = fastVersion;\n\n if (useCsp()) {\n result = cspCompliantVersion;\n }\n\n return result.str_to_date(format, utc, gantt);\n },\n getISOWeek: function getISOWeek(ndate) {\n return gantt.date._getWeekNumber(ndate, true);\n },\n _getWeekNumber: function _getWeekNumber(ndate, isoWeek) {\n if (!ndate) return false;\n var nday = ndate.getDay();\n\n if (isoWeek) {\n if (nday === 0) {\n nday = 7;\n }\n }\n\n var first_thursday = new Date(ndate.valueOf());\n first_thursday.setDate(ndate.getDate() + (4 - nday));\n var year_number = first_thursday.getFullYear(); // year of the first Thursday\n\n var ordinal_date = Math.round((first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\n\n var week_number = 1 + Math.floor(ordinal_date / 7);\n return week_number;\n },\n getWeek: function getWeek(ndate) {\n return gantt.date._getWeekNumber(ndate, gantt.config.start_on_monday);\n },\n getUTCISOWeek: function getUTCISOWeek(ndate) {\n return gantt.date.getISOWeek(ndate);\n },\n convert_to_utc: function convert_to_utc(date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n },\n parseDate: function parseDate(date, format) {\n // raw date may be of type string, number (timestamp) or something else\n // do not check for instanceof Date explicitly, since we may swap native date with different date implementation at some point\n if (date && !date.getFullYear) {\n if (typeof format !== \"function\") {\n if (typeof format === \"string\") {\n if (format === \"parse_date\" || format === \"xml_date\") {\n format = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n } else {\n format = gantt.defined(gantt.templates[format]) ? gantt.templates[format] : gantt.date.str_to_date(format);\n }\n } else {\n format = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n }\n }\n\n if (date) {\n date = format(date);\n } else {\n date = null;\n }\n }\n\n return date;\n }\n };\n return dateHelper;\n};","export default function serialize(data: object | string) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\r\n\tlet result = \"\";\r\n\r\n\tfor (const key in data) {\r\n\t\tlet serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar env = require(\"../../utils/env\");\n\nvar global = require(\"../../utils/global\");\n\nvar serialize = require(\"./serialize\")[\"default\"];\n\nfunction createConfig(method, args) {\n var result = {\n method: method\n };\n\n if (args.length === 0) {\n throw new Error(\"Arguments list of query is wrong.\");\n }\n\n if (args.length === 1) {\n if (typeof args[0] === \"string\") {\n result.url = args[0];\n result.async = true;\n } else {\n result.url = args[0].url;\n result.async = args[0].async || true;\n result.callback = args[0].callback;\n result.headers = args[0].headers;\n }\n\n if (method === \"POST\" || \"PUT\") {\n if (args[0].data) {\n if (typeof args[0].data !== \"string\") {\n result.data = serialize(args[0].data);\n } else {\n result.data = args[0].data;\n }\n } else {\n result.data = \"\";\n }\n }\n\n return result;\n }\n\n result.url = args[0];\n\n switch (method) {\n case \"GET\":\n case \"DELETE\":\n result.callback = args[1];\n result.headers = args[2];\n break;\n\n case \"POST\":\n case \"PUT\":\n if (args[1]) {\n if (typeof args[1] !== \"string\") {\n result.data = serialize(args[1]);\n } else {\n result.data = args[1];\n }\n } else {\n result.data = \"\";\n }\n\n result.callback = args[2];\n result.headers = args[3];\n break;\n }\n\n return result;\n}\n\nmodule.exports = function (gantt) {\n return {\n // if false - dhxr param will added to prevent caching on client side (default),\n // if true - do not add extra params\n cache: true,\n // default method for load/loadStruct, post/get allowed\n // get - since 4.1.1, this should fix 412 error for macos safari\n method: \"get\",\n parse: function parse(data) {\n if (typeof data !== \"string\") return data;\n var obj;\n data = data.replace(/^[\\s]+/, \"\");\n\n if (typeof DOMParser !== \"undefined\" && !env.isIE) {\n // ff,ie9\n obj = new DOMParser().parseFromString(data, \"text/xml\");\n } else if (typeof global.ActiveXObject !== \"undefined\") {\n obj = new global.ActiveXObject(\"Microsoft.XMLDOM\");\n obj.async = \"false\";\n obj.loadXML(data);\n }\n\n return obj;\n },\n xmltop: function xmltop(tagname, xhr, obj) {\n if (typeof xhr.status == \"undefined\" || xhr.status < 400) {\n var xml = !xhr.responseXML ? this.parse(xhr.responseText || xhr) : xhr.responseXML || xhr;\n\n if (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\n return xml.getElementsByTagName(tagname)[0];\n }\n }\n\n if (obj !== -1) gantt.callEvent(\"onLoadXMLError\", [\"Incorrect XML\", arguments[1], obj]);\n return document.createElement(\"DIV\");\n },\n xpath: function xpath(xpathExp, docObj) {\n if (!docObj.nodeName) docObj = docObj.responseXML || docObj;\n\n if (env.isIE) {\n return docObj.selectNodes(xpathExp) || [];\n } else {\n var rows = [];\n var first;\n var col = (docObj.ownerDocument || docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\n\n while (true) {\n first = col.iterateNext();\n\n if (first) {\n rows.push(first);\n } else {\n break;\n }\n }\n\n return rows;\n }\n },\n query: function query(config) {\n return this._call(config.method || \"GET\", config.url, config.data || \"\", config.async || true, config.callback, config.headers);\n },\n get: function get(url, onLoad, headers) {\n var config = createConfig(\"GET\", arguments);\n return this.query(config);\n },\n getSync: function getSync(url, headers) {\n var config = createConfig(\"GET\", arguments);\n config.async = false;\n return this.query(config);\n },\n put: function put(url, postData, onLoad, headers) {\n var config = createConfig(\"PUT\", arguments);\n return this.query(config);\n },\n del: function del(url, onLoad, headers) {\n /**\r\n * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n * A payload within a DELETE request message has no defined semantics;\r\n * sending a payload body on a DELETE request might cause some existing\r\n * implementations to reject the request.\r\n */\n var config = createConfig(\"DELETE\", arguments);\n return this.query(config);\n },\n post: function post(url, postData, onLoad, headers) {\n if (arguments.length == 1) {\n postData = \"\";\n } else if (arguments.length == 2 && typeof postData == \"function\") {\n onLoad = postData;\n postData = \"\";\n }\n\n var config = createConfig(\"POST\", arguments);\n return this.query(config);\n },\n postSync: function postSync(url, postData, headers) {\n postData = postData === null ? \"\" : String(postData);\n var config = createConfig(\"POST\", arguments);\n config.async = false;\n return this.query(config);\n },\n _call: function _call(method, url, postData, async, onLoad, headers) {\n return new gantt.Promise(function (resolve, reject) {\n var t = (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) !== undefined ? new XMLHttpRequest() : new global.ActiveXObject(\"Microsoft.XMLHTTP\");\n var isQt = navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null;\n\n if (!!async) {\n t.onreadystatechange = function () {\n if (t.readyState == 4 || isQt && t.readyState == 3) {\n // what for long response and status 404?\n if (t.status != 200 || t.responseText === \"\") if (!gantt.callEvent(\"onAjaxError\", [t])) return;\n setTimeout(function () {\n if (typeof onLoad == \"function\") {\n onLoad.apply(global, [{\n xmlDoc: t,\n filePath: url\n }]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n }\n\n resolve(t);\n\n if (typeof onLoad == \"function\") {\n onLoad = null;\n t = null;\n }\n }, 0);\n }\n };\n }\n\n var noCache = !this || !this.cache;\n\n if (method == \"GET\" && noCache) {\n url += (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"dhxr\" + new Date().getTime() + \"=1\";\n }\n\n t.open(method, url, async);\n\n if (headers) {\n for (var key in headers) {\n t.setRequestHeader(key, headers[key]);\n }\n } else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n t.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n } else if (method == \"GET\") {\n postData = null;\n }\n\n t.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n t.send(postData);\n if (!async) return {\n xmlDoc: t,\n filePath: url\n }; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n });\n },\n urlSeparator: function urlSeparator(str) {\n if (str.indexOf(\"?\") != -1) return \"&\";else return \"?\";\n }\n };\n};","type DurationUnits = \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\r\ntype Align = \"left\" | \"center\" | \"right\";\r\ntype SectionType = \"textarea\"\r\n\t\t\t\t\t| \"time\"\r\n\t\t\t\t\t| \"duration\"\r\n\t\t\t\t\t| \"select\"\r\n\t\t\t\t\t| \"typeselect\"\r\n\t\t\t\t\t| \"parent\"\r\n\t\t\t\t\t| \"template\"\r\n\t\t\t\t\t| \"checkbox\"\r\n\t\t\t\t\t| \"radio\"\r\n\t\t\t\t\t| \"resources\"\r\n\t\t\t\t\t| \"constraint\";\r\n\r\ntype LightboxSection = Array<ILightboxSection\r\n\t| ILightboxTimeAndDurationSection\r\n\t| ILightboxInputControl\r\n\t| ILightboxSelectControl\r\n\t| ILightboxParentControl\r\n\t| ILightboxTypeselectControl>;\r\n\r\ntype LayoutView = \"grid\"\r\n\t| \"timeline\"\r\n\t| \"resizer\"\r\n\t| \"scrollbar\"\r\n\t| \"resourceGrid\"\r\n\t| \"resourceTimeline\";\r\n\r\ninterface IColumnItem {\r\n\tname: string;\r\n\tlabel?: string;\r\n\ttree?: boolean;\r\n\talign?: Align;\r\n\thide?: boolean;\r\n\tmax_width?: number;\r\n\tmin_width?: number;\r\n\tresize?: boolean;\r\n\ttemplate?: (obj: any) => string;\r\n\twidth?: number | \"*\";\r\n}\r\n\r\nexport type TModifierKeys = \"metaKey\" | \"ctrlKey\" | \"altKey\" | \"shiftKey\" | false | undefined;\r\n\r\nexport interface IScale {\r\n\tcss?: () => string;\r\n\tdate?: string;\r\n\tstep: number;\r\n\ttemplate?: (date: Date) => string;\r\n\tunit: DurationUnits;\r\n}\r\n\r\ninterface ILightboxSection {\r\n\tname: string;\r\n\tmap_to: string;\r\n\ttype: SectionType;\r\n\theight?: number;\r\n\tfocus?: boolean;\r\n}\r\n\r\ninterface ILightboxTimeAndDurationSection extends ILightboxSection {\r\n\treadonly: boolean;\r\n\tyear_range: number[] | number;\r\n\tsingle_date: boolean;\r\n\ttime_format: string;\r\n}\r\n\r\ninterface ILightboxInputControl extends ILightboxSection {\r\n\tdefault_value?: any;\r\n\toptions?: Array<{key: string, label: string}>;\r\n}\r\n\r\ninterface ILightboxSelectControl extends ILightboxInputControl {\r\n\tonchange: () => boolean | undefined;\r\n}\r\n\r\ninterface ILightboxParentControl extends ILightboxSection {\r\n\tallow_root: boolean;\r\n\troot_label: string;\r\n\tsort?: (a: any, b: any) => -1 | 0 | 1;\r\n\tfilter?: (task: string | number | object) => boolean;\r\n\ttemplate?: (start: Date, end: Date, ev: object) => string;\r\n}\r\n\r\ninterface ILightboxTypeselectControl extends ILightboxSection {\r\n\tfilter?: (typeName: string) => boolean;\r\n}\r\n\r\n\r\ninterface ILayoutScrollbar {\r\n\tview: \"scrollbar\";\r\n\tscroll?: \"x\" | \"y\";\r\n\tid: string;\r\n\theight?: number;\r\n\twidth?: number;\r\n}\r\n\r\ninterface ILayoutView {\r\n\tview: LayoutView;\r\n\tid?: string;\r\n\tscrollX?: string;\r\n\tscrollY?: string;\r\n\tconfig?: object;\r\n}\r\n\r\ninterface ILayoutGrid extends ILayoutView {\r\n\tview: \"grid\";\r\n\tbind?: string;\r\n}\r\n\r\ninterface ILayoutTimeline extends ILayoutView {\r\n\tview: \"timeline\";\r\n\tbindLinks?: string;\r\n\tlayers?: any[];\r\n}\r\n\r\ninterface ILayoutResizer {\r\n\tview?: undefined;\r\n\tresizer: boolean;\r\n\twidth: number;\r\n}\r\n\r\ninterface ILayoutResourceGrid extends ILayoutView {\r\n\tview: \"resourceGrid\";\r\n\twidth: number;\r\n\tgroup: \"string\";\r\n}\r\n\r\ninterface ILayoutResourceTimeline extends ILayoutView {\r\n\tview: \"resourceTimeline\";\r\n\twidth: number;\r\n\tgroup: \"string\";\r\n}\r\n\r\ninterface ILayoutHtml {\r\n\thtml: string;\r\n\tcss: string;\r\n\twidth: number;\r\n}\r\n\r\ntype LayoutRow = ILayoutGrid\r\n\t| ILayoutTimeline\r\n\t| ILayoutResizer\r\n\t| ILayoutResourceGrid\r\n\t| ILayoutResourceTimeline\r\n\t| ILayoutHtml\r\n\t| ILayoutScrollbar\r\n\t| { cols: LayoutCol[] };\r\n\r\ntype LayoutCol = ILayoutGrid\r\n\t| ILayoutTimeline\r\n\t| ILayoutResizer\r\n\t| ILayoutResourceGrid\r\n\t| ILayoutResourceTimeline\r\n\t| ILayoutHtml\r\n\t| ILayoutScrollbar\r\n\t| { rows: LayoutRow[] };\r\n\r\ninterface ILayout {\r\n\tcss: string;\r\n\trows?: LayoutRow[];\r\n\tcols?: LayoutCol[];\r\n}\r\n\r\ntype TCsp = boolean | \"auto\";\r\n\r\ninterface IResourceConfig {\r\n\tdataprocessor_assignments?: boolean;\r\n\tdataprocessor_resources?: boolean;\r\n\teditable_resource_diagram?: boolean;\r\n\tresource_store?: {\r\n\t\ttype?: \"treeDataStore\"|\"dataStore\"|string;\r\n\t\tfetchTasks?: boolean;\r\n\t\tinitItem?: (item: any) => any;\r\n\t};\r\n\tlightbox_resources?: (resources: any[]) => any[];\r\n\r\n}\r\n\r\ninterface IGanttConfig {\r\n\tlayout: ILayout;\r\n\tlinks: {\r\n\t\tfinish_to_start: \"0\";\r\n\t\tstart_to_start: \"1\";\r\n\t\tfinish_to_finish: \"2\";\r\n\t\tstart_to_finish: \"3\";\r\n\t};\r\n\ttypes: {\r\n\t\ttask: string;\r\n\t\tproject: string;\r\n\t\tmilestone: string;\r\n\t};\r\n\tauto_types: boolean;\r\n\tduration_unit: DurationUnits;\r\n\twork_time: boolean;\r\n\tcorrect_work_time: boolean;\r\n\tskip_off_time: boolean;\r\n\tcascade_delete: boolean;\r\n\tautosize: boolean | string;\r\n\tautoscroll: boolean;\r\n\tshow_links: boolean;\r\n\tshow_task_cells: boolean;\r\n\tautosize_min_width: number;\r\n\tautoscroll_speed: number;\r\n\tdeepcopy_on_parse: boolean;\r\n\tstatic_background: boolean;\r\n\tstatic_background_cells: boolean;\r\n\tbranch_loading: boolean;\r\n\tbranch_loading_property: string;\r\n\tshow_loading: boolean;\r\n\tshow_chart: boolean;\r\n\tshow_grid: boolean;\r\n\tmin_duration: number;\r\n\tdate_format: string; // use instead xml_date\r\n\txml_date?: string; // deprecated\r\n\tstart_on_monday: boolean;\r\n\tserver_utc: boolean;\r\n\tshow_progress: boolean;\r\n\tfit_tasks: boolean;\r\n\tselect_task: boolean;\r\n\tscroll_on_click: boolean;\r\n\tsmart_rendering: boolean;\r\n\tpreserve_scroll: boolean;\r\n\treadonly: boolean;\r\n\tcontainer_resize_timeout: number;\r\n\r\n\t/*grid */\r\n\tdate_grid: string;\r\n\r\n\tdrag_links: boolean;\r\n\tdrag_progress: boolean;\r\n\tdrag_resize: boolean;\r\n\tdrag_project: boolean;\r\n\tdrag_move: boolean;\r\n\tdrag_mode: {\r\n\t\tresize: \"resize\",\r\n\t\tprogress: \"progress\",\r\n\t\tmove: \"move\",\r\n\t\tignore: \"ignore\"\r\n\t};\r\n\tround_dnd_dates: boolean;\r\n\tlink_wrapper_width: number;\r\n\troot_id: string | number;\r\n\r\n\tautofit: boolean;\r\n\tcolumns: IColumnItem[];\r\n\r\n\t/* scale*/\r\n\t/* it will be deprecated */\r\n\tdate_scale?: string;\r\n\tstep?: number;\r\n\tscale_unit?: DurationUnits;\r\n\tsubscales?: IScale[];\r\n\t/* it will be deprecated end */\r\n\r\n\tscales: IScale[];\r\n\r\n\tscale_offset_minimal: boolean;\r\n\r\n\tinherit_scale_class: boolean;\r\n\r\n\r\n\ttime_step: number;\r\n\tduration_step: number;\r\n\r\n\r\n\ttask_date: string;\r\n\ttime_picker: string;\r\n\ttask_attribute: string;\r\n\tlink_attribute: string;\r\n\tlayer_attribute: string;\r\n\tbuttons_left: string[];\r\n\t_migrate_buttons: {\r\n\t\tdhx_save_btn: \"gantt_save_btn\",\r\n\t\tdhx_cancel_btn: \"gantt_cancel_btn\",\r\n\t\tdhx_delete_btn: \"gantt_delete_btn\"\r\n\t};\r\n\r\n\tbuttons_right: string[];\r\n\r\n\r\n\tlightbox: {\r\n\t\tsections?: LightboxSection,\r\n\t\tproject_sections?: LightboxSection,\r\n\t\tmilestone_sections?: LightboxSection\r\n\t};\r\n\tdrag_lightbox: boolean;\r\n\tsort: boolean;\r\n\tdetails_on_create: boolean;\r\n\tdetails_on_dblclick: boolean;\r\n\tinitial_scroll: boolean;\r\n\ttask_scroll_offset: number;\r\n\r\n\torder_branch: boolean;\r\n\torder_branch_free: boolean;\r\n\r\n\t// task_height is deprecated, use 'bar_height` instead\r\n\ttask_height: number | \"full\";\r\n\tbar_height: number | \"full\";\r\n\tmin_column_width: number;\r\n\r\n\t// min width for grid column (when resizing)\r\n\tmin_grid_column_width: number;\r\n\t// name of the attribute with column index for resize element\r\n\tgrid_resizer_column_attribute: string;\r\n\t// name of the attribute with column index for resize element\r\n\t// grid_resizer_attribute: string; // usage of this parameter is not found\r\n\r\n\t// grid width can be increased after the column has been resized\r\n\tkeep_grid_width: boolean;\r\n\r\n\t// grid width can be adjusted\r\n\tgrid_resize: boolean;\r\n\tgrid_elastic_columns: boolean;\r\n\tshow_tasks_outside_timescale: boolean;\r\n\tshow_unscheduled: boolean;\r\n\treadonly_property: string;\r\n\teditable_property: string;\r\n\tcalendar_property: string;\r\n\tresource_calendars: object;\r\n\tdynamic_resource_calendars: boolean;\r\n\tinherit_calendar: boolean;\r\n\ttype_renderers: object;\r\n\r\n\tresize_rows: boolean;\r\n\t// name of the attribute with row index for resize element\r\n\ttask_grid_row_resizer_attribute: string;\r\n\t// min height for row (when resizing)\r\n\tmin_task_grid_row_height: number;\r\n\r\n\topen_tree_initially: boolean;\r\n\toptimize_render: boolean;\r\n\tprevent_default_scroll: boolean;\r\n\tshow_errors: boolean;\r\n\twai_aria_attributes: boolean;\r\n\tsmart_scales: boolean;\r\n\trtl: boolean;\r\n\tplaceholder_task: boolean | object;\r\n\thorizontal_scroll_key: TModifierKeys;\r\n\tdrag_timeline: {\r\n\t\tuseKey: TModifierKeys;\r\n\t\tignore: string;\r\n\t};\r\n\tdrag_multiple: boolean;\r\n\tcsp: TCsp;\r\n\r\n\tresources?: IResourceConfig;\r\n}\r\n\r\nmodule.exports = () => {\r\n\tconst result: IGanttConfig = {\r\n\t\tlayout: {\r\n\t\t\tcss: \"gantt_container\",\r\n\t\t\trows: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcols: [\r\n\t\t\t\t\t\t{view: \"grid\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\r\n\t\t\t\t\t\t{resizer: true, width: 1},\r\n\t\t\t\t\t\t{view: \"timeline\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\r\n\t\t\t\t\t\t{view: \"scrollbar\", id: \"scrollVer\"}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{view: \"scrollbar\", id: \"scrollHor\", height: 20}\r\n\t\t\t]\r\n\t\t},\r\n\t\tlinks: {\r\n\t\t\tfinish_to_start: \"0\",\r\n\t\t\tstart_to_start: \"1\",\r\n\t\t\tfinish_to_finish: \"2\",\r\n\t\t\tstart_to_finish: \"3\"\r\n\t\t},\r\n\t\ttypes: {\r\n\t\t\ttask: \"task\",\r\n\t\t\tproject: \"project\",\r\n\t\t\tmilestone: \"milestone\"\r\n\t\t},\r\n\t\tauto_types: false,\r\n\t\tduration_unit: \"day\",\r\n\t\twork_time: false,\r\n\t\tcorrect_work_time: false,\r\n\t\tskip_off_time: false,\r\n\r\n\t\tcascade_delete: true,\r\n\r\n\t\tautosize: false,\r\n\t\tautosize_min_width: 0,\r\n\t\tautoscroll: true,\r\n\t\tautoscroll_speed: 30,\r\n\t\tdeepcopy_on_parse: false,\r\n\t\tshow_links: true,\r\n\t\tshow_task_cells: true,\r\n\t\t// replace backgroung of the task area with a canvas img\r\n\t\tstatic_background: false,\r\n\t\tstatic_background_cells: true,\r\n\t\tbranch_loading: false,\r\n\t\tbranch_loading_property: \"$has_child\",\r\n\t\tshow_loading: false,\r\n\t\tshow_chart: true,\r\n\t\tshow_grid: true,\r\n\t\tmin_duration: 60 * 60 * 1000,\r\n\t\tdate_format: \"%d-%m-%Y %H:%i\", // use instead xml_date\r\n\t\txml_date: undefined, // \"%d-%m-%Y %H:%i\", // deprecated\r\n\t\tstart_on_monday: true,\r\n\t\tserver_utc: false,\r\n\t\tshow_progress: true,\r\n\t\tfit_tasks: false,\r\n\t\tselect_task: true,\r\n\t\tscroll_on_click: true,\r\n\t\tsmart_rendering: true,\r\n\t\tpreserve_scroll: true,\r\n\t\treadonly: false,\r\n\t\tcontainer_resize_timeout: 20,\r\n\r\n\t\t/*grid */\r\n\t\tdate_grid: \"%Y-%m-%d\",\r\n\r\n\t\tdrag_links: true,\r\n\t\tdrag_progress: true,\r\n\t\tdrag_resize: true,\r\n\t\tdrag_project: false,\r\n\t\tdrag_move: true,\r\n\t\tdrag_mode: {\r\n\t\t\tresize: \"resize\",\r\n\t\t\tprogress: \"progress\",\r\n\t\t\tmove: \"move\",\r\n\t\t\tignore: \"ignore\"\r\n\t\t},\r\n\t\tround_dnd_dates: true,\r\n\t\tlink_wrapper_width: 20,\r\n\t\troot_id: 0,\r\n\r\n\t\tautofit: false, // grid column automatic fit grid_width config\r\n\t\tcolumns: [\r\n\t\t\t{name: \"text\", tree: true, width: \"*\", resize: true},\r\n\t\t\t{name: \"start_date\", align: \"center\", resize: true},\r\n\t\t\t{name: \"duration\", align: \"center\"},\r\n\t\t\t{name: \"add\", width: 44}\r\n\t\t],\r\n\r\n\t\t/*scale*/\r\n\r\n\t\tscale_offset_minimal: true,\r\n\t\tinherit_scale_class: false,\r\n\r\n\t\tscales: [\r\n\t\t\t{\r\n\t\t\t\tunit: \"day\",\r\n\t\t\t\tstep: 1,\r\n\t\t\t\tdate: \"%d %M\"\r\n\t\t\t}\r\n\t\t],\r\n// \t\tdate_scale: \"%d %M\",\r\n\r\n\t\ttime_step: 60,\r\n\t\tduration_step: 1,\r\n\t\ttask_date: \"%d %F %Y\",\r\n\t\ttime_picker: \"%H:%i\",\r\n\t\ttask_attribute: \"data-task-id\",\r\n\t\tlink_attribute: \"data-link-id\",\r\n\t\tlayer_attribute: \"data-layer\",\r\n\t\tbuttons_left: [\r\n\t\t\t\"gantt_save_btn\",\r\n\t\t\t\"gantt_cancel_btn\"\r\n\t\t],\r\n\t\t_migrate_buttons: {\r\n\t\t\tdhx_save_btn: \"gantt_save_btn\",\r\n\t\t\tdhx_cancel_btn: \"gantt_cancel_btn\",\r\n\t\t\tdhx_delete_btn: \"gantt_delete_btn\"\r\n\t\t},\r\n\t\tbuttons_right: [\r\n\t\t\t\"gantt_delete_btn\"\r\n\t\t],\r\n\t\tlightbox: {\r\n\t\t\tsections: [\r\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t\t{name: \"time\", type: \"duration\", map_to: \"auto\"}\r\n\t\t\t],\r\n\t\t\tproject_sections: [\r\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\r\n\t\t\t\t{name: \"time\", type: \"duration\", readonly: true, map_to: \"auto\"}\r\n\t\t\t],\r\n\t\t\tmilestone_sections: [\r\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\r\n\t\t\t\t{name: \"time\", type: \"duration\", single_date: true, map_to: \"auto\"}\r\n\t\t\t]\r\n\t\t},\r\n\t\tdrag_lightbox: true,\r\n\t\tsort: false,\r\n\t\tdetails_on_create: true,\r\n\t\tdetails_on_dblclick: true,\r\n\t\tinitial_scroll: true,\r\n\t\ttask_scroll_offset: 100,\r\n\r\n\t\torder_branch: false,\r\n\t\torder_branch_free: false,\r\n\r\n\t\t// task height is deprecated, use 'bar_height' instead\r\n\t\ttask_height: undefined,// number px of 'full' for row height\r\n\t\tbar_height: \"full\",\r\n\t\tmin_column_width: 70,\r\n\r\n\t\t// min width for grid column (when resizing)\r\n\t\tmin_grid_column_width: 70,\r\n\t\t// name of the attribute with column index for resize element\r\n\t\tgrid_resizer_column_attribute: \"data-column-index\",\r\n\t\t// name of the attribute with column index for resize element\r\n\t\t// grid_resizer_attribute: \"grid_resizer\", // - usage of this parameter is not found in code\r\n\r\n\t\t// grid width can be increased after the column has been resized\r\n\t\tkeep_grid_width: false,\r\n\r\n\t\t// grid width can be adjusted\r\n\t\tgrid_resize: false,\r\n\t\tgrid_elastic_columns: false,\r\n\t\tshow_tasks_outside_timescale: false,\r\n\t\tshow_unscheduled: true,\r\n\r\n\t\tresize_rows: false,\r\n\t\t// name of the attribute with row index for resize element\r\n\t\ttask_grid_row_resizer_attribute: \"data-row-index\",\r\n\t\t// min height for row (when resizing)\r\n\t\tmin_task_grid_row_height: 30,\r\n\r\n\t\t//\r\n\t\treadonly_property: \"readonly\",\r\n\t\teditable_property: \"editable\",\r\n\t\tcalendar_property: \"calendar_id\",\r\n\t\tresource_calendars: {},\r\n\t\tdynamic_resource_calendars: false,\r\n\t\tinherit_calendar: false,\r\n\t\ttype_renderers: {},\r\n\r\n\t\topen_tree_initially: false,\r\n\t\toptimize_render: true,\r\n\t\tprevent_default_scroll: false,\r\n\t\tshow_errors: true,\r\n\t\twai_aria_attributes: true,\r\n\t\tsmart_scales: true,\r\n\t\trtl:false,\r\n\t\tplaceholder_task: false,\r\n\t\thorizontal_scroll_key: \"shiftKey\",\r\n\t\tdrag_timeline: {\r\n\t\t\tuseKey: undefined,\r\n\t\t\tignore: \".gantt_task_line, .gantt_task_link\"\r\n\t\t},\r\n\t\tdrag_multiple: true,\r\n\t\tcsp: \"auto\"\r\n\t};\r\n\treturn result;\r\n};\r\n","module.exports = function () {\n var services = {};\n\n function register(name, getter) {\n services[name] = getter;\n }\n\n function getService(name) {\n if (!services[name]) {\n return null;\n }\n\n return services[name]();\n }\n\n function dropService(name) {\n if (services[name]) {\n delete services[name];\n }\n }\n\n var servicesEnum = {};\n return {\n services: servicesEnum,\n setService: register,\n getService: getService,\n dropService: dropService,\n destructor: function destructor() {\n for (var i in services) {\n if (services[i]) {\n var service = services[i];\n\n if (service && service.destructor) {\n service.destructor();\n }\n }\n }\n\n services = null;\n }\n };\n};","export default class ExtensionsManager{\r\n\tprivate _extensions:{[key:string]: GanttPlugin };\r\n\r\n\tconstructor(config: {[key:string]: GanttPlugin }){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension = (name: string, ext: GanttPlugin) => {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension = (name: string): GanttPlugin => {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","module.exports = {\n KEY_CODES: {\n UP: 38,\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39,\n SPACE: 32,\n ENTER: 13,\n DELETE: 46,\n ESC: 27,\n TAB: 9\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction DHXGantt() {\n this.constants = require(\"../constants\");\n this.version = VERSION;\n this.license = LICENSE;\n this.templates = {};\n this.ext = {};\n this.keys = {\n edit_save: this.constants.KEY_CODES.ENTER,\n edit_cancel: this.constants.KEY_CODES.ESC\n };\n}\n\nmodule.exports = function (supportedExtensions) {\n // use a named constructor to make gantt instance discoverable in heap snapshots\n var gantt = new DHXGantt();\n\n var ExtensionManager = require(\"../ext/extension_manager\")[\"default\"];\n\n var extensionManager = new ExtensionManager(supportedExtensions);\n var activePlugins = {};\n\n gantt.plugins = function (config) {\n for (var i in config) {\n if (config[i] && !activePlugins[i]) {\n var plugin = extensionManager.getExtension(i);\n\n if (plugin) {\n plugin(gantt);\n activePlugins[i] = true;\n }\n }\n }\n\n return activePlugins;\n };\n\n gantt.$services = require(\"../core/common/services\")();\n gantt.config = require(\"../core/common/config\")();\n gantt.ajax = require(\"../core/common/ajax\")(gantt);\n gantt.date = require(\"../core/common/date\")(gantt);\n gantt.RemoteEvents = require(\"../core/remote/remote_events\").remoteEvents;\n\n var dnd = require(\"../core/common/dnd\")(gantt);\n\n gantt.$services.setService(\"dnd\", function () {\n return dnd;\n });\n\n var templatesLoader = require(\"../core/common/templates\")(gantt);\n\n gantt.$services.setService(\"templateLoader\", function () {\n return templatesLoader;\n });\n\n require(\"../utils/eventable\")(gantt);\n\n var StateService = require(\"../core/common/state\");\n\n var stateService = new StateService();\n stateService.registerProvider(\"global\", function () {\n var res = {\n min_date: gantt._min_date,\n max_date: gantt._max_date,\n selected_task: null\n }; // do not throw error if getState called from non-initialized gantt\n\n if (gantt.$data && gantt.$data.tasksStore) {\n res.selected_task = gantt.$data.tasksStore.getSelectedId();\n }\n\n return res;\n });\n gantt.getState = stateService.getState;\n gantt.$services.setService(\"state\", function () {\n return stateService;\n });\n\n var utils = require(\"../utils/utils\");\n\n utils.mixin(gantt, utils);\n gantt.Promise = require(\"../utils/promise\");\n gantt.env = require(\"../utils/env\");\n\n require(\"../core/datastore/datastore_hooks\")(gantt);\n\n var DataProcessor = require(\"../core/dataprocessor\");\n\n gantt.dataProcessor = DataProcessor.DEPRECATED_api;\n gantt.createDataProcessor = DataProcessor.createDataProcessor;\n\n require(\"../core/plugins\")(gantt);\n\n require(\"../core/dynamic_loading\")(gantt);\n\n require(\"../core/grid_column_api\")(gantt);\n\n require(\"../core/tasks\")(gantt);\n\n require(\"../core/load\")(gantt);\n\n require(\"../core/worktime/work_time\")(gantt);\n\n require(\"../core/data\")(gantt);\n\n require(\"../publish_helpers/void_script_second\")[\"default\"](gantt);\n\n require(\"../core/data_task_types\")(gantt);\n\n require(\"../core/cached_functions\")(gantt);\n\n require(\"../core/gantt_core\")(gantt);\n\n require(\"../core/destructor\")(gantt);\n\n require(\"../publish_helpers/void_script_third\")[\"default\"](gantt);\n\n var i18n = require(\"../locale\")[\"default\"]();\n\n gantt.i18n = {\n addLocale: i18n.addLocale,\n setLocale: function setLocale(locale) {\n if (typeof locale === \"string\") {\n var localeObject = i18n.getLocale(locale);\n\n if (!localeObject) {\n localeObject = i18n.getLocale(\"en\");\n }\n\n gantt.locale = localeObject;\n } else if (locale) {\n if (!gantt.locale) {\n gantt.locale = locale;\n } else {\n for (var i in locale) {\n if (locale[i] && _typeof(locale[i]) === \"object\") {\n if (!gantt.locale[i]) {\n gantt.locale[i] = {};\n }\n\n gantt.mixin(gantt.locale[i], locale[i], true);\n } else {\n gantt.locale[i] = locale[i];\n }\n }\n }\n }\n },\n getLocale: i18n.getLocale\n };\n gantt.i18n.setLocale(\"en\");\n return gantt;\n};","require(\"css/skins/terrace.less\");\n\nvar factory = require(\"./make_instance_common\");\n\nmodule.exports = function (supportedExtensions) {\n var gantt = factory(supportedExtensions);\n\n if (!gantt.env.isNode) {\n require(\"../core/ui_core\")(gantt);\n }\n\n return gantt;\n};","import { IUndo, IUndoCommand, IUndoCommands, IUndoPropAction, IUndoPropCommand, TActionType, TEntityType, TUndoStack, TUndoValue } from \"./types\";\r\n\r\nconst MAX_UNDO_STEPS = 100;\r\n\r\nexport class Undo implements IUndo {\r\n\r\n\tmaxSteps = MAX_UNDO_STEPS;\r\n\tundoEnabled = true;\r\n\tredoEnabled = true;\r\n\taction: IUndoPropAction = {\r\n\t\tcreate: (commands?: IUndoCommand[]): IUndoCommands => {\r\n\t\t\treturn { commands: (commands ? commands.slice() : []) };\r\n\t\t},\r\n\t\tinvert: (action: IUndoCommands): IUndoCommands => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\tconst revert = gantt.copy(action);\r\n\t\t\tconst commands = this.command;\r\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\r\n\t\t\t\tconst command = revert.commands[i] = commands.invert(revert.commands[i]);\r\n\t\t\t\tif (command.type === commands.type.update || command.type === commands.type.move) {\r\n\t\t\t\t\t[command.value, command.oldValue] = [command.oldValue, command.value];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn revert as IUndoCommands;\r\n\t\t}\r\n\t};\r\n\tcommand: IUndoPropCommand = {\r\n\t\t// entities that require different processing for undoing-redoing changes (gantt.config.undo_types)\r\n\t\tentity: null,\r\n\r\n\t\t// types of traced actions (gantt.config.undo_actions)\r\n\t\ttype: null,\r\n\r\n\t\tcreate: (value: TUndoValue, oldValue: TUndoValue, type: TActionType, entity: TEntityType): IUndoCommand => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\treturn {\r\n\t\t\t\tentity,\r\n\t\t\t\ttype,\r\n\t\t\t\tvalue: gantt.copy(value),\r\n\t\t\t\toldValue: gantt.copy(oldValue || value)\r\n\t\t\t};\r\n\t\t},\r\n\t\tinvert: (command: IUndoCommand): IUndoCommand => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\tconst revert = gantt.copy(command);\r\n\t\t\trevert.type = this.command.inverseCommands(command.type);\r\n\t\t\treturn revert;\r\n\t\t},\r\n\t\tinverseCommands: (command: TActionType): TActionType => {\r\n\t\t\tconst gantt = this._gantt;\r\n\t\t\tconst types = this.command.type;\r\n\t\t\tswitch (command) {\r\n\t\t\t\tcase types.update:\r\n\t\t\t\t\treturn types.update;\r\n\t\t\t\tcase types.remove:\r\n\t\t\t\t\treturn types.add;\r\n\t\t\t\tcase types.add:\r\n\t\t\t\t\treturn types.remove;\r\n\t\t\t\tcase types.move:\r\n\t\t\t\t\treturn types.move;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tgantt.assert(false, \"Invalid command \"+ command);\r\n\t\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate _undoStack = [];\r\n\tprivate _redoStack = [];\r\n\tprivate _gantt: any;\r\n\r\n\tconstructor(gantt: any){\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\tgetUndoStack() {\r\n\t\treturn this._undoStack;\r\n\t}\r\n\tsetUndoStack(stack: []) {\r\n\t\tthis._undoStack = stack;\r\n\t}\r\n\r\n\tgetRedoStack() {\r\n\t\treturn this._redoStack;\r\n\t}\r\n\tsetRedoStack(stack: []) {\r\n\t\tthis._redoStack = stack;\r\n\t}\r\n\r\n\tclearUndoStack() {\r\n\t\tthis._undoStack = [];\r\n\t}\r\n\r\n\tclearRedoStack() {\r\n\t\tthis._redoStack = [];\r\n\t}\r\n\r\n\tupdateConfigs() {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.maxSteps = gantt.config.undo_steps || MAX_UNDO_STEPS;\r\n\t\tthis.command.entity = gantt.config.undo_types;\r\n\t\tthis.command.type = gantt.config.undo_actions;\r\n\t\tthis.undoEnabled = !!gantt.config.undo;\r\n\t\tthis.redoEnabled = !!gantt.config.redo; // GS-873, Redo should work even when the `gantt.config.undo` is disabled.\r\n\t}\r\n\r\n\tundo() {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.updateConfigs();\r\n\t\tif (!this.undoEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst action = this._pop(this._undoStack);\r\n\t\tif (action) {\r\n\t\t\tthis._reorderCommands(action);\r\n\t\t}\r\n\t\tif (gantt.callEvent(\"onBeforeUndo\", [action]) !== false) {\r\n\t\t\tif (action) {\r\n\t\t\t\tthis._applyAction(this.action.invert(action));\r\n\t\t\t\tthis._push(this._redoStack, gantt.copy(action));\r\n\t\t\t\tgantt.callEvent(\"onAfterUndo\", [action]);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tgantt.callEvent(\"onAfterUndo\", [null]);\r\n\t}\r\n\r\n\tredo() {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.updateConfigs();\r\n\t\tif (!this.redoEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst action = this._pop(this._redoStack);\r\n\t\tif (action) {\r\n\t\t\tthis._reorderCommands(action);\r\n\t\t}\r\n\r\n\t\tif (gantt.callEvent(\"onBeforeRedo\", [action]) !== false) {\r\n\t\t\tif (action) {\r\n\t\t\t\tthis._applyAction(action);\r\n\t\t\t\tthis._push(this._undoStack, gantt.copy(action));\r\n\t\t\t\tgantt.callEvent(\"onAfterRedo\", [action]);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tgantt.callEvent(\"onAfterRedo\", [null]);\r\n\t}\r\n\r\n\t// storeUndo:\r\n\tlogAction(action: IUndoCommands) {\r\n\t\tthis._push(this._undoStack, action);\r\n\t\tthis._redoStack = [];\r\n\t}\r\n\r\n\tprivate _push(stack: TUndoStack, action: IUndoCommands): IUndoCommands {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif (!action.commands.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst event = stack === this._undoStack ? \"onBeforeUndoStack\" : \"onBeforeRedoStack\";\r\n\t\tif (gantt.callEvent(event, [action]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// commands can be removed from event handler\r\n\t\tif (!action.commands.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstack.push(action);\r\n\t\twhile (stack.length > this.maxSteps) {\r\n\t\t\tstack.shift();\r\n\t\t}\r\n\t\treturn action;\r\n\t}\r\n\r\n\tprivate _pop(stack: TUndoStack): IUndoCommands {\r\n\t\treturn stack.pop();\r\n\t}\r\n\r\n\tprivate _reorderCommands(action) {\r\n\t\t// firstly process tasks and only then links\r\n\t\t// in order to ensure links are added not earlier than their tasks\r\n\t\t// firstly to 'move' actions and only then updates\r\n\t\tconst weights = { any: 0, link:1, task:2 };\r\n\t\tconst actionWeights = { move: 1, any:0 };\r\n\t\taction.commands.sort(function(a, b) {\r\n\t\t\tif (a.entity === \"task\" && b.entity === \"task\") {\r\n\t\t\t\tif (a.type !== b.type) {\r\n\t\t\t\t\treturn (actionWeights[b.type] || 0) - (actionWeights[a.type] || 0);\r\n\t\t\t\t} else if (a.type === \"move\" && a.oldValue && b.oldValue && b.oldValue.parent === a.oldValue.parent) {\r\n\t\t\t\t\treturn a.oldValue.$index - b.oldValue.$index;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst weightA = weights[a.entity] || weights.any;\r\n\t\t\t\tconst weightB = weights[b.entity] || weights.any;\r\n\t\t\t\treturn weightB - weightA;\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _applyAction(action: IUndoCommands) {\r\n\t\tlet command = null;\r\n\t\tconst entities = this.command.entity;\r\n\t\tconst actions = this.command.type;\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst methods = {};\r\n\t\tmethods[entities.task] = {\r\n\t\t\tadd: \"addTask\",\r\n\t\t\tget: \"getTask\",\r\n\t\t\tupdate: \"updateTask\",\r\n\t\t\tremove: \"deleteTask\",\r\n\t\t\tmove: \"moveTask\",\r\n\t\t\tisExists: \"isTaskExists\"\r\n\t\t};\r\n\t\tmethods[entities.link] = {\r\n\t\t\tadd: \"addLink\",\r\n\t\t\tget: \"getLink\",\r\n\t\t\tupdate: \"updateLink\",\r\n\t\t\tremove: \"deleteLink\",\r\n\t\t\tisExists: \"isLinkExists\"\r\n\t\t};\r\n\r\n\t\tgantt.batchUpdate(function() {\r\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\r\n\t\t\t\tcommand = action.commands[i];\r\n\t\t\t\tconst method = methods[command.entity][command.type];\r\n\t\t\t\tconst getMethod = methods[command.entity].get;\r\n\t\t\t\tconst check = methods[command.entity].isExists;\r\n\r\n\t\t\t\tif (command.type === actions.add) {\r\n\t\t\t\t\tgantt[method](command.oldValue, command.oldValue.parent, command.oldValue.$local_index);\r\n\t\t\t\t} else if (command.type === actions.remove) {\r\n\t\t\t\t\tif (gantt[check](command.value.id)) {\r\n\t\t\t\t\t\tgantt[method](command.value.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (command.type === actions.update) {\r\n\t\t\t\t\tconst item = gantt[getMethod](command.value.id);\r\n\t\t\t\t\tfor(const prop in command.value){\r\n\t\t\t\t\t\tif(!prop.startsWith(\"$\") && !prop.startsWith(\"_\")){\r\n\t\t\t\t\t\t\titem[prop] = command.value[prop];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tgantt[method](command.value.id);\r\n\t\t\t\t} else if (command.type === actions.move) {\r\n\t\t\t\t\tgantt[method](command.value.id, command.value.$local_index, command.value.parent);\r\n\t\t\t\t\t// GS-680: We should send the changes to the server after we undo vertical reorder\r\n\t\t\t\t\tgantt.callEvent(\"onRowDragEnd\", [command.value.id]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import { IInlineEditState, IMonitor, IUndo, IUndoCommand, TActionType, TEntityType, TUndoValue } from \"./types\";\r\n\r\nconst noTrack = {\r\n\tonBeforeUndo: \"onAfterUndo\",\r\n\tonBeforeRedo: \"onAfterRedo\"\r\n};\r\n\r\nconst batchActions = [\r\n\t\"onTaskDragStart\",\r\n\t\"onAfterTaskUpdate\",\r\n\t\"onAfterTaskDelete\",\r\n\t\"onBeforeBatchUpdate\"\r\n];\r\n\r\nexport class Monitor implements IMonitor {\r\n\tprivate _batchAction = null;\r\n\tprivate _batchMode = false;\r\n\tprivate _ignore = false;\r\n\tprivate _ignoreMoveEvents = false;\r\n\tprivate _initialTasks = {};\r\n\tprivate _initialLinks = {};\r\n\tprivate _nestedTasks = {};\r\n\tprivate _nestedLinks = {};\r\n\tprivate _timeout;\r\n\tprivate _gantt: any;\r\n\tprivate _undo: IUndo;\r\n\r\n\tconstructor(undo: IUndo, gantt: any) {\r\n\t\tthis._undo = undo;\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._attachEvents();\r\n\t}\r\n\r\n\tstore(id: TaskID | LinkID, type: TEntityType, overwrite: boolean = false) {\r\n\t\tif (type === this._gantt.config.undo_types.task) {\r\n\t\t\treturn this._storeTask(id, overwrite);\r\n\t\t}\r\n\t\tif (type === this._gantt.config.undo_types.link) {\r\n\t\t\treturn this._storeLink(id, overwrite);\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\tisMoveEventsIgnored() {\r\n\t\treturn this._ignoreMoveEvents;\r\n\t}\r\n\ttoggleIgnoreMoveEvents(newValue?: boolean) {\r\n\t\tthis._ignoreMoveEvents = newValue || false;\r\n\t}\r\n\tstartIgnore() {\r\n\t\tthis._ignore = true;\r\n\t}\r\n\tstopIgnore() {\r\n\t\tthis._ignore = false;\r\n\t}\r\n\tstartBatchAction() {\r\n\t\t// try catching updates made from event handlers using timeout\r\n\t\tif (!this._timeout){\r\n\t\t\tthis._timeout = setTimeout(() => {\r\n\t\t\t\tthis.stopBatchAction();\r\n\t\t\t\tthis._timeout = null;\r\n\t\t\t}, 10);\r\n\t\t}\r\n\r\n\r\n\t\tif (this._ignore || this._batchMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._batchMode = true;\r\n\t\tthis._batchAction = this._undo.action.create();\r\n\t}\r\n\tstopBatchAction() {\r\n\t\tif (this._ignore) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst undo = this._undo;\r\n\t\tif (this._batchAction) {\r\n\t\t\tundo.logAction(this._batchAction);\r\n\t\t}\r\n\t\tthis._batchMode = false;\r\n\t\tthis._batchAction = null;\r\n\t}\r\n\tonTaskAdded(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.add);\r\n\t\t}\r\n\t}\r\n\tonTaskUpdated(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.update);\r\n\t\t}\r\n\t}\r\n\tonTaskMoved(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\t(task as any).$local_index = this._gantt.getTaskIndex(task.id);\r\n\t\t\tconst oldValue = this.getInitialTask(task.id);\r\n\t\t\tif((task as any).$local_index === oldValue.$local_index &&\r\n\t\t\t\tthis._gantt.getParent(task) === this._gantt.getParent(oldValue)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\tthis._storeEntityCommand(\r\n\t\t\t\ttask,\r\n\t\t\t\tthis.getInitialTask(task.id),\r\n\t\t\t\tthis._undo.command.type.move,\r\n\t\t\t\tthis._undo.command.entity.task\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\tonTaskDeleted(task: ITask) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.remove);\r\n\t\t\tif (this._nestedTasks[task.id]) {\r\n\t\t\t\tconst children = this._nestedTasks[task.id];\r\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\t\t\tthis._storeTaskCommand(children[i], this._undo.command.type.remove);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this._nestedLinks[task.id]) {\r\n\t\t\t\tconst childrenLinks = this._nestedLinks[task.id];\r\n\t\t\t\tfor (let i = 0; i < childrenLinks.length; i++) {\r\n\t\t\t\t\tthis._storeLinkCommand(childrenLinks[i], this._undo.command.type.remove);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tonLinkAdded(link: ILink) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.add);\r\n\t\t}\r\n\t}\r\n\tonLinkUpdated(link: ILink) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.update);\r\n\t\t}\r\n\t}\r\n\tonLinkDeleted(link: ILink) {\r\n\t\tif (!this._ignore) {\r\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.remove);\r\n\t\t}\r\n\t}\r\n\tsetNestedTasks(id: TaskID, taskIds: TaskID[]) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet task = null;\r\n\t\tconst tasks = [];\r\n\t\tlet\tlinkIds = this._getLinks(gantt.getTask(id));\r\n\r\n\t\tfor (let i = 0; i < taskIds.length; i++) {\r\n\t\t\ttask = this.setInitialTask(taskIds[i]);\r\n\t\t\tlinkIds = linkIds.concat(this._getLinks(task));\r\n\t\t\ttasks.push(task);\r\n\t\t}\r\n\r\n\t\tconst uniqueLinks = {};\r\n\t\tfor (let i = 0; i < linkIds.length; i++) {\r\n\t\t\tuniqueLinks[linkIds[i]] = true;\r\n\t\t}\r\n\t\tconst links = [];\r\n\t\tfor (const i in uniqueLinks) {\r\n\t\t\tlinks.push(this.setInitialLink(i));\r\n\t\t}\r\n\t\tthis._nestedTasks[id] = tasks;\r\n\t\tthis._nestedLinks[id] = links;\r\n\t}\r\n\tsetInitialTask(id: TaskID, overwrite?: boolean) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif (overwrite || (!this._initialTasks[id] || !this._batchMode)) {\r\n\t\t\tconst task = gantt.copy(gantt.getTask(id));\r\n\t\t\ttask.$index = gantt.getGlobalTaskIndex(id);\r\n\t\t\ttask.$local_index = gantt.getTaskIndex(id);\r\n\t\t\tthis.setInitialTaskObject(id, task);\r\n\t\t}\r\n\t\treturn this._initialTasks[id];\r\n\t}\r\n\tgetInitialTask(id: TaskID) {\r\n\t\treturn this._initialTasks[id];\r\n\t}\r\n\tclearInitialTasks() {\r\n\t\tthis._initialTasks = {};\r\n\t}\r\n\tsetInitialTaskObject(id: TaskID, object: ITask) {\r\n\t\tthis._initialTasks[id] = object;\r\n\t}\r\n\tsetInitialLink(id: LinkID, overwrite?: boolean) {\r\n\t\tif (!this._initialLinks[id] || !this._batchMode) {\r\n\t\t\tthis._initialLinks[id] = this._gantt.copy(this._gantt.getLink(id));\r\n\t\t}\r\n\t\treturn this._initialLinks[id];\r\n\t}\r\n\tgetInitialLink(id: LinkID) {\r\n\t\treturn this._initialLinks[id];\r\n\t}\r\n\tclearInitialLinks() {\r\n\t\tthis._initialLinks = {};\r\n\t}\r\n\tprivate _attachEvents() {\r\n\t\tlet deleteCacheCooldown = null;\r\n\t\tconst gantt = this._gantt;\r\n\r\n\t\tconst saveInitialAll = () => {\r\n\t\t\tif (!deleteCacheCooldown) {\r\n\t\t\t\tdeleteCacheCooldown = setTimeout(() => {\r\n\t\t\t\t\tdeleteCacheCooldown = null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.clearInitialTasks();\r\n\t\t\t\tgantt.eachTask((task: ITask) => {\r\n\t\t\t\t\tthis.setInitialTask(task.id);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.clearInitialLinks();\r\n\t\t\t\tgantt.getLinks().forEach((link: ILink) => {\r\n\t\t\t\t\tthis.setInitialLink(link.id);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst getMoveObjectByTaskId = (id: TaskID) => {\r\n\t\t\treturn gantt.copy(gantt.getTask(id));\r\n\t\t};\r\n\r\n\t\tfor (const i in noTrack) {\r\n\t\t\tgantt.attachEvent(i, () => {\r\n\t\t\t\tthis.startIgnore();\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t\tgantt.attachEvent(noTrack[i], () => {\r\n\t\t\t\tthis.stopIgnore();\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < batchActions.length; i++) {\r\n\t\t\tgantt.attachEvent(batchActions[i], () => {\r\n\t\t\t\tthis.startBatchAction();\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tgantt.attachEvent(\"onParse\", () => {\r\n\t\t\tthis._undo.clearUndoStack();\r\n\t\t\tthis._undo.clearRedoStack();\r\n\t\t\tsaveInitialAll();\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", (id: TaskID, task: ITask) => {\r\n\t\t\tthis.setInitialTask(id, true);\r\n\t\t\tthis.onTaskAdded(task);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", (id: TaskID, task: ITask) => {\r\n\t\t\tthis.onTaskUpdated(task);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", (id: TaskID, task: ITask) => {\r\n\t\t\tthis.onTaskDeleted(task);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterLinkAdd\", (id: LinkID, link: ILink) => {\r\n\t\t\tthis.setInitialLink(id, true);\r\n\t\t\tthis.onLinkAdded(link);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterLinkUpdate\", (id: LinkID, link: ILink) => {\r\n\t\t\tthis.onLinkUpdated(link);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onAfterLinkDelete\", (id: LinkID, link: ILink) => {\r\n\t\t\tthis.onLinkDeleted(link);\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onRowDragEnd\", (id: TaskID, target: TaskID) => {\r\n\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\r\n\t\t\tthis.toggleIgnoreMoveEvents();\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", (id: TaskID) => {\r\n\t\t\tthis.store(id, gantt.config.undo_types.task);\r\n\t\t\tconst nested = [];\r\n\r\n\t\t\t// remember task indexes in case their being deleted in a loop, so they could be restored in the correct order\r\n\t\t\tsaveInitialAll();\r\n\r\n\t\t\tgantt.eachTask((task: ITask) => {\r\n\t\t\t\tnested.push(task.id);\r\n\t\t\t}, id);\r\n\t\t\tthis.setNestedTasks(id, nested);\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tconst datastore = gantt.getDatastore(\"task\");\r\n\r\n\t\tdatastore.attachEvent(\"onBeforeItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\r\n\t\t\tif (!this.isMoveEventsIgnored()) {\r\n\t\t\t\tsaveInitialAll();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tdatastore.attachEvent(\"onAfterItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\r\n\t\t\tif (!this.isMoveEventsIgnored()) {\r\n\t\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onRowDragStart\", (id: TaskID, target: TaskID, e: Event) => {\r\n\t\t\tthis.toggleIgnoreMoveEvents(true);\r\n\t\t\tsaveInitialAll();\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskDrag\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\r\n\r\n\t\tgantt.attachEvent(\"onLightbox\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\r\n\r\n\t\tgantt.attachEvent(\"onBeforeTaskAutoSchedule\", (task: ITask) => {\r\n\t\t\tthis.store(task.id, gantt.config.undo_types.task);\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tif (gantt.ext.inlineEditors) {\r\n\t\t\tgantt.ext.inlineEditors.attachEvent(\"onEditStart\", (state: IInlineEditState) => {\r\n\t\t\t\tthis.store(state.id, gantt.config.undo_types.task);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _storeCommand(command: IUndoCommand) {\r\n\t\tconst undo = this._undo;\r\n\t\tundo.updateConfigs();\r\n\r\n\t\tif (!undo.undoEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this._batchMode) {\r\n\t\t\tthis._batchAction.commands.push(command);\r\n\t\t} else {\r\n\t\t\tconst action = undo.action.create([command]);\r\n\t\t\tundo.logAction(action);\r\n\t\t}\r\n\t}\r\n\tprivate _storeEntityCommand(obj: TUndoValue, old: TUndoValue, actionType: TActionType, entityType: TEntityType) {\r\n\t\tconst undo = this._undo;\r\n\t\tconst command = undo.command.create(obj, old, actionType, entityType);\r\n\t\tthis._storeCommand(command);\r\n\t}\r\n\tprivate _storeTaskCommand(obj: ITask, type: TActionType) {\r\n\t\tif(this._gantt.isTaskExists(obj.id)){\r\n\t\t\t(obj as any).$local_index = this._gantt.getTaskIndex(obj.id);\r\n\t\t}\r\n\r\n\t\tthis._storeEntityCommand(obj, this.getInitialTask(obj.id), type, this._undo.command.entity.task);\r\n\t}\r\n\tprivate _storeLinkCommand(obj: ILink, type: TActionType) {\r\n\t\tthis._storeEntityCommand(obj, this.getInitialLink(obj.id), type, this._undo.command.entity.link);\r\n\t}\r\n\tprivate _getLinks(task: ITask) {\r\n\t\treturn task.$source.concat(task.$target);\r\n\t}\r\n\tprivate _storeTask(taskId: TaskID, overwrite: boolean = false) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis.setInitialTask(taskId, overwrite);\r\n\t\tgantt.eachTask((child: ITask) => {\r\n\t\t\tthis.setInitialTask(child.id);\r\n\t\t}, taskId);\r\n\t\treturn true;\r\n\t}\r\n\tprivate _storeLink(linkId: LinkID, overwrite: boolean = false) {\r\n\t\tthis.setInitialLink(linkId, overwrite);\r\n\t\treturn true;\r\n\t}\r\n}","import { Monitor } from \"./monitor\";\r\nimport { IMonitor, IUndoCommand, TEntityType, TUndoStack } from \"./types\";\r\nimport { Undo } from \"./undo\";\r\n\r\nexport default function(gantt: any){\r\n\r\nconst _undo = new Undo(gantt);\r\nconst monitor: IMonitor = new Monitor(_undo, gantt);\r\n\r\ngantt.config.undo = true;\r\ngantt.config.redo = true;\r\n\r\n/**\r\n * entities that require different processing for undoing-redoing changes\r\n * @type {{link: string, task: string}}\r\n */\r\ngantt.config.undo_types = {\r\n\tlink: \"link\",\r\n\ttask: \"task\"\r\n};\r\n\r\n/**\r\n * types of traced actions\r\n * @type {{update: string, remove: string, add: string}}\r\n */\r\ngantt.config.undo_actions = {\r\n\tupdate: \"update\",\r\n\tremove: \"remove\", // remove item from datastore\r\n\tadd: \"add\",\r\n\tmove: \"move\" // move task in grid\r\n};\r\n\r\nif (!gantt.ext) {\r\n\tgantt.ext = {};\r\n}\r\n\r\ngantt.ext.undo = {\r\n\tundo: () => _undo.undo(),\r\n\tredo: () => _undo.redo(),\r\n\tgetUndoStack: () => _undo.getUndoStack(),\r\n\tsetUndoStack: (stack:[]) => _undo.setUndoStack(stack),\r\n\tgetRedoStack: () => _undo.getRedoStack(),\r\n\tsetRedoStack: (stack:[]) => _undo.setRedoStack(stack),\r\n\tclearUndoStack: () => _undo.clearUndoStack(),\r\n\tclearRedoStack: () => _undo.clearRedoStack(),\r\n\tsaveState: (id: TaskID | LinkID, type: TEntityType) => monitor.store(id, type, true),\r\n\tgetInitialState: (id: TaskID | LinkID, type: TEntityType) => {\r\n\t\tif(type === gantt.config.undo_types.link){\r\n\t\t\treturn monitor.getInitialLink(id);\r\n\t\t}else{\r\n\t\t\treturn monitor.getInitialTask(id);\r\n\t\t}\r\n\t}\r\n};\r\n\r\ngantt.undo = gantt.ext.undo.undo;\r\ngantt.redo = gantt.ext.undo.redo;\r\ngantt.getUndoStack = gantt.ext.undo.getUndoStack;\r\ngantt.getRedoStack = gantt.ext.undo.getRedoStack;\r\ngantt.clearUndoStack = gantt.ext.undo.clearUndoStack;\r\ngantt.clearRedoStack = gantt.ext.undo.clearRedoStack;\r\n\r\nfunction updTask(task: ITask, oldId: TaskID, newId: TaskID) {\r\n\tif (!task) { return; }\r\n\r\n\tif (task.id === oldId) {\r\n\t\ttask.id = newId;\r\n\t}\r\n\r\n\tif (task.parent === oldId) {\r\n\t\ttask.parent = newId;\r\n\t}\r\n}\r\n\r\nfunction changeTaskCommandId(command: IUndoCommand, oldId: TaskID, newId: TaskID) {\r\n\tupdTask(command.value, oldId, newId);\r\n\tupdTask(command.oldValue, oldId, newId);\r\n}\r\n\r\nfunction updLink(link: ILink, oldTaskId: TaskID, newTaskId: TaskID) {\r\n\tif (!link) { return; }\r\n\tif (link.source === oldTaskId) {\r\n\t\tlink.source = newTaskId;\r\n\t}\r\n\tif (link.target === oldTaskId) {\r\n\t\tlink.target = newTaskId;\r\n\t}\r\n}\r\n\r\nfunction changeLinkCommandId(command: IUndoCommand, oldId: LinkID, newId: LinkID) {\r\n\tupdLink(command.value, oldId, newId);\r\n\tupdLink(command.oldValue, oldId, newId);\r\n}\r\n\r\nfunction updateTasksIds(log: TUndoStack, oldId: TaskID, newId: TaskID) {\r\n\tconst undo = _undo;\r\n\r\n\tfor (let i = 0; i < log.length; i++) {\r\n\t\tconst entry = log[i];\r\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\r\n\t\t\tif (entry.commands[j].entity === undo.command.entity.task) {\r\n\t\t\t\tchangeTaskCommandId(entry.commands[j], oldId, newId);\r\n\t\t\t} else if (entry.commands[j].entity === undo.command.entity.link) {\r\n\t\t\t\tchangeLinkCommandId(entry.commands[j], oldId, newId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateLinksIds(log: TUndoStack, oldId: LinkID, newId: LinkID) {\r\n\tconst undo = _undo;\r\n\r\n\tfor (let i = 0; i < log.length; i++) {\r\n\t\tconst entry = log[i];\r\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\r\n\t\t\tconst command = entry.commands[j];\r\n\t\t\tif (command.entity === undo.command.entity.link) {\r\n\t\t\t\tif (command.value && command.value.id === oldId) {\r\n\t\t\t\t\tcommand.value.id = newId;\r\n\t\t\t\t}\r\n\t\t\t\tif (command.oldValue && command.oldValue.id === oldId) {\r\n\t\t\t\t\tcommand.oldValue.id = newId;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\ngantt.attachEvent(\"onTaskIdChange\", (oldId: TaskID, newId: TaskID) => {\r\n\tconst undo = _undo;\r\n\tupdateTasksIds(undo.getUndoStack(), oldId, newId);\r\n\tupdateTasksIds(undo.getRedoStack(), oldId, newId);\r\n});\r\n\r\ngantt.attachEvent(\"onLinkIdChange\", (oldId: LinkID, newId: LinkID) => {\r\n\tconst undo = _undo;\r\n\tupdateLinksIds(undo.getUndoStack(), oldId, newId);\r\n\tupdateLinksIds(undo.getRedoStack(), oldId, newId);\r\n});\r\n\r\ngantt.attachEvent(\"onGanttReady\", () => {\r\n\t_undo.updateConfigs();\r\n});\r\n\r\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\r\n\r\ninterface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement;\r\n\tprivate _gantt: any;\r\n\r\n\tconstructor(gantt: any){\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"gantt_tooltip\";\r\n\t\t\tgantt._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tgantt._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tgantt._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst gantt = this._gantt;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = gantt.config.tooltip_offset_x;\r\n\t\tconst offsetY = gantt.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of gantt\r\n\t\tif(container === gantt.$task_data){\r\n\t\t\tviewport = gantt.$task;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(gantt.$task);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as domEventsScope from \"../../core/ui/utils/dom_event_scope\";\r\nimport * as domHelpers from \"../../core/ui/utils/dom_helpers\";\r\nimport * as helpers from \"../../utils/helpers\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _gantt: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis.tooltip = new Tooltip(gantt);\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._domEvents = domEventsScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst gantt = this._gantt;\r\n\t\tif(!config.global){\r\n\t\t\troot = gantt.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst gantt = this._gantt;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\r\n\t\tthis.delayShow = helpers.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(gantt.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, gantt.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = helpers.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, gantt.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import {TooltipManager} from \"./tooltipManager\";\r\n\r\nexport default function(gantt: any){\r\n\r\ngantt.config.tooltip_timeout = 30;\r\ngantt.config.tooltip_offset_y = 20;\r\ngantt.config.tooltip_offset_x = 10;\r\ngantt.config.tooltip_hide_timeout = 30;\r\n\r\n\r\n\r\nconst tooltipManager = new TooltipManager(gantt);\r\n\r\ngantt.ext.tooltips = tooltipManager;\r\n\r\ngantt.attachEvent(\"onGanttReady\", function(){\r\n\r\n\ttooltipManager.tooltipFor({\r\n\t\tselector: \"[\"+gantt.config.task_attribute+\"]:not(.gantt_task_row)\",\r\n\t\thtml: (event: MouseEvent) => {\r\n\t\t\tif (gantt.config.touch && !gantt.config.touch_tooltip) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst targetTaskId = gantt.locate(event);\r\n\t\t\tif(gantt.isTaskExists(targetTaskId)){\r\n\t\t\t\tconst task = gantt.getTask(targetTaskId);\r\n\t\t\t\treturn gantt.templates.tooltip_text(task.start_date, task.end_date, task);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tglobal: false\r\n\t});\r\n});\r\n\r\ngantt.attachEvent(\"onDestroy\", function() {\r\n\ttooltipManager.destructor();\r\n});\r\n\r\ngantt.attachEvent(\"onLightbox\", function() {\r\n\ttooltipManager.hideTooltip();\r\n});\r\nconst isLinkCreate = () => {\r\n\tconst state = gantt.getState();\r\n\treturn !!state.link_source_id;\r\n};\r\ngantt.attachEvent(\"onBeforeTooltip\", function() {\r\n\tif (isLinkCreate()){\r\n\t\treturn false;\r\n\t}\r\n});\r\n\r\ngantt.attachEvent(\"onGanttScroll\", function(){\r\n\ttooltipManager.hideTooltip();\r\n});\r\n\r\n}","\r\ninterface IQuickInfoContainer{\r\n\tparent: HTMLElement;\r\n\txViewport: HTMLElement;\r\n\tyViewport: HTMLElement;\r\n}\r\n\r\nexport class QuickInfo {\r\n\tprivate _quickInfoTask: TaskID;\r\n\tprivate _quickInfoBoxId: number | string;\r\n\tprivate _quickInfoBox: HTMLElement;\r\n\tprivate _quickInfoReadonly: boolean | null;\r\n\tprivate _container: HTMLElement;\r\n\tprivate _gantt: any;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis._gantt = gantt;\r\n\t}\r\n\r\n\t// show at coordinates:\r\n\t// show(x: number, y: number)\r\n\t// show for a task:\r\n\t// show(id: TaskID)\r\n\tshow : {\r\n\t\t(x: number, y: number) : void;\r\n\t\t(id: TaskID) : void;\r\n\t} = (id: TaskID | number, y? : number) : void => {\r\n\t\tif (y === undefined) {\r\n\t\t\tthis._showForTask(id);\r\n\t\t} else {\r\n\t\t\tthis._showAtCoordinates(id as number, y);\r\n\t\t}\r\n\t}\r\n\r\n\thide = (forced?: boolean) : any => {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst qi = this._quickInfoBox;\r\n\t\tthis._quickInfoBoxId = 0;\r\n\t\tconst taskId = this._quickInfoTask;\r\n\t\tthis._quickInfoTask = null;\r\n\r\n\t\tif (qi && qi.parentNode){\r\n\r\n\t\t\tif (gantt.config.quick_info_detached) {\r\n\t\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\r\n\t\t\t\treturn qi.parentNode.removeChild(qi);\r\n\t\t\t}\r\n\r\n\t\t\tqi.className += \" gantt_qi_hidden\";\r\n\t\t\tif (qi.style.right === \"auto\"){\r\n\t\t\t\tqi.style.left = \"-350px\";\r\n\t\t\t} else {\r\n\t\t\t\tqi.style.right = \"-350px\";\r\n\t\t\t}\r\n\r\n\t\t\tif (forced) {\r\n\t\t\t\tqi.style.left = qi.style.right = \"\";\r\n\t\t\t\tqi.parentNode.removeChild(qi);\r\n\t\t\t}\r\n\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNode = (): HTMLElement => {\r\n\t\tif(this._quickInfoBox) {\r\n\t\t\treturn this._quickInfoBox;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tsetContainer = (container: string|HTMLElement): void => {\r\n\t\tif(container){\r\n\t\t\tthis._container = typeof container === \"string\" ? document.getElementById(container) : container;\r\n\t\t}\r\n\t}\r\n\r\n\tsetContent = (content?: IQuickInfoContent) => {\r\n\t\tconst gantt = this._gantt;\r\n\r\n\t\tconst defaultContent = {\r\n\t\t\ttaskId: null,\r\n\t\t\theader: {\r\n\t\t\t\ttitle: \"\",\r\n\t\t\t\tdate: \"\"\r\n\t\t\t},\r\n\t\t\tcontent: \"\",\r\n\t\t\tbuttons: gantt.config.quickinfo_buttons\r\n\t\t};\r\n\r\n\t\tif(!content){\r\n\t\t\tcontent = defaultContent;\r\n\t\t}\r\n\r\n\t\tif(!content.taskId){\r\n\t\t\tcontent.taskId = defaultContent.taskId;\r\n\t\t}\r\n\r\n\t\tif(!content.header){\r\n\t\t\tcontent.header = defaultContent.header;\r\n\t\t}\r\n\r\n\t\tif(!content.header.title){\r\n\t\t\tcontent.header.title = defaultContent.header.title;\r\n\t\t}\r\n\t\tif(!content.header.date){\r\n\t\t\tcontent.header.date = defaultContent.header.date;\r\n\t\t}\r\n\t\tif(!content.content){\r\n\t\t\tcontent.content = defaultContent.content;\r\n\t\t}\r\n\t\tif(!content.buttons){\r\n\t\t\tcontent.buttons = defaultContent.buttons;\r\n\t\t}\r\n\r\n\r\n\t\tlet qi = this.getNode();\r\n\t\tif(!qi){\r\n\t\t\tqi = this._createQuickInfoElement();\r\n\t\t}\r\n\r\n\t\tif(content.taskId){\r\n\t\t\tthis._quickInfoBoxId = content.taskId;\r\n\t\t}\r\n\r\n\t\tconst titleBox = qi.querySelector(\".gantt_cal_qi_title\") as HTMLElement;\r\n\t\tconst titleContent = titleBox.querySelector(\".gantt_cal_qi_tcontent\");\r\n\t\tconst titleDate = titleBox.querySelector(\".gantt_cal_qi_tdate\");\r\n\t\tconst main = qi.querySelector(\".gantt_cal_qi_content\");\r\n\t\tconst controls = qi.querySelector(\".gantt_cal_qi_controls\") as HTMLElement;\r\n\r\n\t\tgantt._waiAria.quickInfoHeader(qi, [content.header.title, content.header.date].join(\" \"));\r\n\r\n\t\ttitleContent.innerHTML = content.header.title;\r\n\t\ttitleDate.innerHTML = content.header.date;\r\n\r\n\t\tif(!content.header.title && !content.header.date){\r\n\t\t\ttitleBox.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\ttitleBox.style.display = \"\";\r\n\t\t}\r\n\t\tmain.innerHTML = content.content;\r\n\r\n\t\tconst buttons = content.buttons;\r\n\t\tif(!buttons.length){\r\n\t\t\tcontrols.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tcontrols.style.display = \"\";\r\n\t\t}\r\n\t\tlet html = \"\";\r\n\t\tfor (let i = 0; i < buttons.length; i++){\r\n\r\n\t\t\tconst ariaAttr = gantt._waiAria.quickInfoButtonAttrString(gantt.locale.labels[buttons[i]]);\r\n\r\n\t\t\thtml += \"<div class=\\\"gantt_qi_big_icon \"+buttons[i]+\"\\\" title=\\\"\"\r\n\t\t\t\t+gantt.locale.labels[buttons[i]]+\"\\\" \" + ariaAttr +\"><div class='gantt_menu_icon \" + buttons[i]\r\n\t\t\t\t+ \"'></div><div>\"+gantt.locale.labels[buttons[i]]+\"</div></div>\";\r\n\t\t}\r\n\t\tcontrols.innerHTML = html;\r\n\r\n\t\tgantt.eventRemove(qi, \"click\", this._qiButtonClickHandler);\r\n\t\tgantt.eventRemove(qi, \"keypress\", this._qiKeyPressHandler);\r\n\r\n\t\tgantt.event(qi, \"click\", this._qiButtonClickHandler);\r\n\t\tgantt.event(qi, \"keypress\", this._qiKeyPressHandler);\r\n\t}\r\n\r\n\tprivate _qiButtonClickHandler = (ev) => {\r\n\t\tev = ev || event;\r\n\t\tthis._qi_button_click(ev.target || ev.srcElement);\r\n\t}\r\n\r\n\tprivate _qiKeyPressHandler = (e) => {\r\n\t\te = e || event;\r\n\t\t// @ts-ignore\r\n\t\tconst code = e.which||event.keyCode;\r\n\t\tif (code === 13 || code === 32){\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._qi_button_click(e.target || e.srcElement);\r\n\t\t\t},1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _showAtCoordinates(x: number, y: number) : void {\r\n\t\tthis.hide(true);\r\n\t\tthis._quickInfoBoxId = 0;\r\n\t\tthis._quickInfoTask = null;\r\n\t\tif(!this._quickInfoBox){\r\n\t\t\tthis._createQuickInfoElement();\r\n\t\t\tthis.setContent();\r\n\t\t}\r\n\r\n\t\tthis._appendAtCoordinates(x, y);\r\n\t\tthis._gantt.callEvent(\"onQuickInfo\", [null]);\r\n\t}\r\n\r\n\tprivate _showForTask(id: TaskID) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif ((\r\n\t\t\tid === this._quickInfoBoxId &&\r\n\t\t\tgantt.utils.dom.isChildOf(this._quickInfoBox, document.body)\r\n\t\t) || !gantt.config.show_quick_info) {\r\n\t\t\t// not show if the quick info is already displayed for this task, or if it shouldn't be displayed\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.hide(true);\r\n\t\tconst offset = 6; // offset TASK <> QI-BOX in 'px'\r\n\t\tconst container = this._getContainer();\r\n\t\tconst pos = this._get_event_counter_part(id, offset, container.xViewport, container.yViewport);\r\n\r\n\t\tif (pos){\r\n\t\t\tthis._quickInfoBox = this._init_quick_info(id);\r\n\t\t\tthis._quickInfoTask = id;\r\n\t\t\tthis._quickInfoBox.className = this._prepare_quick_info_classname(id);\r\n\r\n\t\t\tthis._fill_quick_data(id);\r\n\t\t\tthis._show_quick_info(pos, offset);\r\n\t\t\tgantt.callEvent(\"onQuickInfo\", [id]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _get_event_counter_part(id: TaskID, offset: number, xViewport: HTMLElement, yViewport: HTMLElement) : any {\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet domEv = gantt.getTaskNode(id);\r\n\t\tif (!domEv) {\r\n\t\t\tdomEv = gantt.getTaskRowNode(id);\r\n\t\t\tif (!domEv) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet left = 0;\r\n\t\tconst top = offset + domEv.offsetTop + domEv.offsetHeight;\r\n\r\n\t\tlet node = domEv;\r\n\r\n\t\tif (gantt.utils.dom.isChildOf(node, xViewport)) {\r\n\t\t\twhile (node && node !== xViewport){\r\n\t\t\t\tleft += node.offsetLeft;\r\n\t\t\t\tnode = node.offsetParent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst scroll = gantt.getScrollState();\r\n\r\n\t\tif(node){\r\n\t\t\tconst dx = (left + domEv.offsetWidth/2) - scroll.x > (xViewport.offsetWidth/2) ? 1 : 0;\r\n\t\t\tconst dy = (top + domEv.offsetHeight/2) - scroll.y > (yViewport.offsetHeight/2) ? 1 : 0;\r\n\r\n\t\t\treturn { left, top, dx, dy, width:domEv.offsetWidth, height:domEv.offsetHeight };\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _createQuickInfoElement() : HTMLElement {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst qi = document.createElement(\"div\");\r\n\t\tqi.className += \"gantt_cal_quick_info\";\r\n\t\tgantt._waiAria.quickInfoAttr(qi);\r\n\r\n\t\t// title\r\n\t\tconst ariaAttr = gantt._waiAria.quickInfoHeaderAttrString();\r\n\t\tlet html = \"<div class=\\\"gantt_cal_qi_title\\\" \"+ariaAttr+\">\" +\r\n\t\t\t\"<div class=\\\"gantt_cal_qi_tcontent\\\"></div><div class=\\\"gantt_cal_qi_tdate\\\"></div>\" +\r\n\t\t\t\"</div>\" +\r\n\t\t\t\"<div class=\\\"gantt_cal_qi_content\\\"></div>\";\r\n\r\n\t\t// buttons\r\n\t\thtml += \"<div class=\\\"gantt_cal_qi_controls\\\">\";\r\n\t\thtml += \"</div>\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\r\n\r\n\t\tif (gantt.config.quick_info_detached) {\r\n\t\t\tconst container = this._getContainer();\r\n\t\t\tgantt.event(container.parent, \"scroll\", () => { this.hide(); });\r\n\t\t}\r\n\r\n\t\tthis._quickInfoBox = qi;\r\n\t\treturn qi;\r\n\t}\r\n\r\n\tprivate _init_quick_info(id: TaskID) : HTMLElement {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst task = gantt.getTask(id);\r\n\t\tif(typeof this._quickInfoReadonly === \"boolean\"){\r\n\t\t\tif(gantt.isReadonly(task) !== this._quickInfoReadonly){\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t\tthis._quickInfoBox = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._quickInfoReadonly = gantt.isReadonly(task);\r\n\r\n\t\tif (!this._quickInfoBox){\r\n\t\t\tthis._quickInfoBox = this._createQuickInfoElement();\r\n\t\t}\r\n\r\n\t\treturn this._quickInfoBox;\r\n\t}\r\n\r\n\tprivate _prepare_quick_info_classname(id: TaskID) : string {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst task = gantt.getTask(id);\r\n\r\n\t\tlet css = \"gantt_cal_quick_info\";\r\n\t\tconst template = gantt.templates.quick_info_class(task.start_date, task.end_date, task);\r\n\r\n\t\tif(template){\r\n\t\t\tcss += \" \" + template;\r\n\t\t}\r\n\t\treturn css;\r\n\t}\r\n\r\n\tprivate _fill_quick_data(id: TaskID) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst ev = gantt.getTask(id);\r\n\r\n\t\tthis._quickInfoBoxId = id;\r\n\r\n\t\tlet allowedButtons = [];\r\n\t\tif (this._quickInfoReadonly){\r\n\t\t\tconst buttons = gantt.config.quickinfo_buttons;\r\n\t\t\tconst isEditor = {icon_delete: true, icon_edit: true};\r\n\t\t\tfor (let i = 0; i < buttons.length; i++){\r\n\t\t\t\tif(this._quickInfoReadonly && isEditor[buttons[i]]){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tallowedButtons.push(buttons[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tallowedButtons = gantt.config.quickinfo_buttons;\r\n\t\t}\r\n\r\n\t\tthis.setContent({\r\n\t\t\theader: {\r\n\t\t\t\ttitle: gantt.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\t\t\tdate: gantt.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t\t\t},\r\n\t\t\tcontent: gantt.templates.quick_info_content(ev.start_date, ev.end_date, ev),\r\n\t\t\tbuttons: allowedButtons\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _appendAtCoordinates(x: number, y: number): void {\r\n\t\tconst qi = this._quickInfoBox;\r\n\t\tconst container = this._getContainer();\r\n\t\tif (!qi.parentNode ||\r\n\t\t\tqi.parentNode.nodeName.toLowerCase() === \"#document-fragment\"){ // IE8\r\n\t\t\tcontainer.parent.appendChild(qi);\r\n\t\t}\r\n\r\n\t\tqi.style.left = x + \"px\";\r\n\t\tqi.style.top = y + \"px\";\r\n\t}\r\n\r\n\tprivate _show_quick_info(pos: any, offset: number) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst qi = this._quickInfoBox;\r\n\t\tif (gantt.config.quick_info_detached) {\r\n\t\t\tconst container = this._getContainer();\r\n\t\t\tif (!qi.parentNode ||\r\n\t\t\t\tqi.parentNode.nodeName.toLowerCase() === \"#document-fragment\"){ // IE8\r\n\t\t\t\tcontainer.parent.appendChild(qi);\r\n\t\t\t}\r\n\t\t\tconst width = qi.offsetWidth;\r\n\t\t\tconst popupHeight = qi.offsetHeight;\r\n\r\n\t\t\tconst scrolls = gantt.getScrollState();\r\n\t\t\tconst xViewport = container.xViewport;\r\n\t\t\tconst yViewport = container.yViewport;\r\n\t\t\tconst screenWidth = xViewport.offsetWidth + scrolls.x - width;\r\n\r\n\t\t\tconst relativePopupTop = pos.top - scrolls.y;\r\n\t\t\tconst relativePopupBottom = relativePopupTop + popupHeight;\r\n\r\n\t\t\tlet top = pos.top;\r\n\t\t\tif(relativePopupBottom > yViewport.offsetHeight / 2){\r\n\t\t\t\ttop = pos.top - (popupHeight + pos.height + 2*offset);\r\n\t\t\t\tif(top < scrolls.y && relativePopupBottom <= yViewport.offsetHeight){\r\n\t\t\t\t\ttop = pos.top;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (top < scrolls.y) {\r\n\t\t\t\ttop = scrolls.y;\r\n\t\t\t}\r\n\r\n\t\t\tconst x = Math.min(Math.max(scrolls.x, pos.left - pos.dx*(width - pos.width)), screenWidth);\r\n\t\t\tconst y = top;\r\n\r\n\t\t\tthis._appendAtCoordinates(x, y);\r\n\t\t} else {\r\n\t\t\tqi.style.top = 20 + \"px\";\r\n\t\t\tif (pos.dx === 1){\r\n\t\t\t\tqi.style.right = \"auto\";\r\n\t\t\t\tqi.style.left = \"-300px\";\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tqi.style.left = \"10px\";\r\n\t\t\t\t},1);\r\n\t\t\t} else {\r\n\t\t\t\tqi.style.left = \"auto\";\r\n\t\t\t\tqi.style.right = \"-300px\";\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tqi.style.right = \"10px\";\r\n\t\t\t\t},1);\r\n\t\t\t}\r\n\t\t\tqi.className += \" gantt_qi_\"+(pos.dx === 1 ? \"left\" : \"right\");\r\n\t\t\tgantt.$root.appendChild(qi);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _qi_button_click(node: any) : void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst box = this._quickInfoBox;\r\n\t\tif (!node || node === box){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst mask = node.className;\r\n\t\tif (mask.indexOf(\"_icon\") !== -1){\r\n\t\t\tconst id = this._quickInfoBoxId;\r\n\t\t\tgantt.$click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else {\r\n\t\t\tthis._qi_button_click(node.parentNode);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _getContainer(): IQuickInfoContainer{\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet container = this._container ? this._container : gantt.$task_data;\r\n\t\tif (container && container.offsetHeight && container.offsetWidth) {\r\n\t\t\treturn {\r\n\t\t\t\tparent: container,\r\n\t\t\t\txViewport: gantt.$task,\r\n\t\t\t\tyViewport: gantt.$task_data\r\n\t\t\t};\r\n\t\t}\r\n\t\tcontainer = this._container ? this._container : gantt.$grid_data;\r\n\t\tif (container && container.offsetHeight && container.offsetWidth) {\r\n\t\t\treturn {\r\n\t\t\t\tparent: container,\r\n\t\t\t\txViewport: gantt.$grid,\r\n\t\t\t\tyViewport: gantt.$grid_data\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tparent: this._container ? this._container : gantt.$layout,\r\n\t\t\txViewport: gantt.$layout,\r\n\t\t\tyViewport: gantt.$layout\r\n\t\t};\r\n\t}\r\n}\r\n","import { QuickInfo } from \"./quickInfo\";\r\n\r\nexport default function(gantt: any){\r\n\r\nif (!gantt.ext) {\r\n\tgantt.ext = {};\r\n}\r\ngantt.ext.quickInfo = new QuickInfo(gantt);\r\n\r\ngantt.config.quickinfo_buttons = [\"icon_delete\",\"icon_edit\"];\r\ngantt.config.quick_info_detached = true;\r\ngantt.config.show_quick_info = true;\r\n\r\ngantt.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };\r\ngantt.templates.quick_info_content = function(start, end, ev){ return ev.details || ev.text; };\r\ngantt.templates.quick_info_date = function(start, end, ev){\r\n\treturn gantt.templates.task_time(start, end, ev);\r\n};\r\ngantt.templates.quick_info_class = function(start, end, task){ return \"\"; };\r\n\r\ngantt.attachEvent(\"onTaskClick\", function(id,e){\r\n\t// GS-1460 Don't show Quick Info when clicking on the \"+\" button\r\n\tif (!gantt.utils.dom.closest(e.target, \".gantt_add\")){\r\n\t\tsetTimeout(function() {\r\n\t\t\tgantt.ext.quickInfo.show(id);\r\n\t\t}, 0);\r\n\t}\r\n\r\n\treturn true;\r\n});\r\n\r\nconst events = [\"onViewChange\", \"onLightbox\", \"onBeforeTaskDelete\", \"onBeforeDrag\"];\r\nconst hidingFunction = function(){\r\n\tgantt.ext.quickInfo.hide();\r\n\treturn true;\r\n};\r\nfor (let i=0; i<events.length; i++){\r\n\tgantt.attachEvent(events[i], hidingFunction);\r\n}\r\n// GS-957: We don't want to hide QuickInfo when we click on it.\r\ngantt.attachEvent(\"onEmptyClick\", function(e){\r\n\tlet hideQuickInfo = true;\r\n\tconst parent = document.querySelector(\".gantt_cal_quick_info\");\r\n\tif (parent){\r\n\t\tconst quickInfoClick = gantt.utils.dom.isChildOf(e.target, parent);\r\n\t\tif (quickInfoClick){\r\n\t\t\thideQuickInfo = false;\r\n\t\t}\r\n\t}\r\n\tif (hideQuickInfo){\r\n\t\thidingFunction();\r\n\t}\r\n});\r\nfunction clearQuickInfo() {\r\n\tgantt.ext.quickInfo.hide();\r\n\tgantt.ext.quickInfo._quickInfoBox = null;\r\n\treturn true;\r\n}\r\ngantt.attachEvent(\"onGanttReady\", clearQuickInfo);\r\ngantt.attachEvent(\"onDestroy\", clearQuickInfo);\r\n\r\ngantt.event(window, \"keydown\", function(e){\r\n\tif (e.keyCode === 27){\r\n\t\tgantt.ext.quickInfo.hide();\r\n\t}\r\n});\r\n\r\n}","var _require = require(\"../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nmodule.exports = function (gantt) {\n gantt.config.multiselect = true;\n gantt.config.multiselect_one_level = false;\n gantt._multiselect = {\n _selected: {},\n _one_level: false,\n _active: true,\n _first_selected_when_shift: null,\n getDefaultSelected: function getDefaultSelected() {\n var selected = this.getSelected();\n return selected.length ? selected[selected.length - 1] : null;\n },\n setFirstSelected: function setFirstSelected(id) {\n this._first_selected_when_shift = id;\n },\n getFirstSelected: function getFirstSelected() {\n return this._first_selected_when_shift;\n },\n isActive: function isActive() {\n this.updateState();\n return this._active;\n },\n updateState: function updateState() {\n this._one_level = gantt.config.multiselect_one_level;\n var active = this._active;\n this._active = gantt.config.select_task;\n\n if (this._active != active) {\n this.reset();\n }\n },\n reset: function reset() {\n this._selected = {};\n },\n setLastSelected: function setLastSelected(id) {\n gantt.$data.tasksStore.silent(function () {\n var store = gantt.$data.tasksStore;\n if (id) store.select(id + \"\");else store.unselect(null);\n });\n },\n getLastSelected: function getLastSelected() {\n var last = gantt.$data.tasksStore.getSelectedId();\n if (last && gantt.isTaskExists(last)) return last;\n return null;\n },\n select: function select(id, e) {\n if (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, true, e]) && gantt.callEvent(\"onBeforeTaskSelected\", [id])) {\n this._selected[id] = true;\n this.setLastSelected(id);\n this.afterSelect(id);\n gantt.callEvent(\"onTaskMultiSelect\", [id, true, e]);\n gantt.callEvent(\"onTaskSelected\", [id]);\n return true;\n }\n\n return false;\n },\n toggle: function toggle(id, e) {\n if (this._selected[id]) {\n this.unselect(id, e);\n } else {\n this.select(id, e);\n }\n },\n unselect: function unselect(id, e) {\n if (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, false, e])) {\n this._selected[id] = false;\n if (this.getLastSelected() == id) this.setLastSelected(this.getDefaultSelected());\n this.afterSelect(id);\n gantt.callEvent(\"onTaskMultiSelect\", [id, false, e]);\n gantt.callEvent(\"onTaskUnselected\", [id]);\n }\n },\n isSelected: function isSelected(id) {\n return !!(gantt.isTaskExists(id) && this._selected[id]);\n },\n getSelected: function getSelected() {\n var res = [];\n\n for (var i in this._selected) {\n if (this._selected[i] && gantt.isTaskExists(i)) {\n res.push(i);\n } else {\n this._selected[i] = false;\n }\n }\n\n res.sort(function (a, b) {\n return gantt.getGlobalTaskIndex(a) > gantt.getGlobalTaskIndex(b) ? 1 : -1;\n });\n return res;\n },\n forSelected: function forSelected(callback) {\n var selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n callback(selected[i]);\n }\n },\n isSameLevel: function isSameLevel(id) {\n if (!this._one_level) return true;\n var last = this.getLastSelected();\n if (!last) return true;\n if (!(gantt.isTaskExists(last) && gantt.isTaskExists(id))) return true;\n return !!(gantt.calculateTaskLevel(gantt.getTask(last)) == gantt.calculateTaskLevel(gantt.getTask(id)));\n },\n afterSelect: function afterSelect(id) {\n if (gantt.isTaskExists(id)) {\n // FIXME: quick workaround to prevent re-filtering inside refresh on multiselect\n gantt._quickRefresh(function () {\n gantt.refreshTask(id);\n });\n }\n },\n doSelection: function doSelection(e) {\n if (!this.isActive()) return false; // deny selection when click on 'expand' or 'collapse' icons\n\n if (gantt._is_icon_open_click(e)) return false;\n var target_ev = gantt.locate(e);\n if (!target_ev) return false;\n if (!gantt.callEvent(\"onBeforeMultiSelect\", [e])) return false;\n var selected = this.getSelected();\n var defaultLast = this.getFirstSelected();\n var isLast = false;\n var last = this.getLastSelected();\n var multiSelect = gantt.config.multiselect;\n\n var singleSelection = function () {\n // GS-719: If the multiselect extension is added we still need a way\n // to open the inline editors after clicking on the cells in the grid\n var controller = gantt.ext.inlineEditors;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (gantt.config.inline_editors_multiselect_open && cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n }\n\n this.setFirstSelected(target_ev);\n\n if (!this.isSelected(target_ev)) {\n this.select(target_ev, e);\n }\n\n selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n if (selected[i] !== target_ev) {\n this.unselect(selected[i], e);\n }\n }\n }.bind(this);\n\n var blockSelection = function () {\n if (!last) last = target_ev;else if (target_ev) {\n var first_indx = gantt.getGlobalTaskIndex(this.getFirstSelected());\n var target_indx = gantt.getGlobalTaskIndex(target_ev);\n var last_indx = gantt.getGlobalTaskIndex(last); // clear prev selection\n\n var tmp = last;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n this.unselect(tmp, e);\n tmp = first_indx > last_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n\n tmp = target_ev;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n if (this.select(tmp, e) && !isLast) {\n isLast = true;\n defaultLast = tmp;\n }\n\n tmp = first_indx > target_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n }\n }.bind(this);\n\n if (multiSelect && (e.ctrlKey || e.metaKey)) {\n if (!this.isSelected(target_ev)) this.setFirstSelected(target_ev);\n\n if (target_ev) {\n this.toggle(target_ev, e);\n }\n } else if (multiSelect && e.shiftKey) {\n if (!gantt.isTaskExists(this.getFirstSelected()) || this.getFirstSelected() === null) {\n this.setFirstSelected(target_ev);\n }\n\n if (selected.length) {\n // select a group of tasks\n blockSelection();\n } else {\n // select a task when no task is selected and Shift is pressed\n singleSelection();\n }\n } else {\n // no key press or no multiple selection on the mouse click\n singleSelection();\n }\n\n if (this.isSelected(target_ev)) {\n this.setLastSelected(target_ev);\n } else if (defaultLast) {\n if (target_ev == last) this.setLastSelected(e.shiftKey ? defaultLast : this.getDefaultSelected());\n } else {\n this.setLastSelected(null);\n }\n\n if (!this.getSelected().length) this.setLastSelected(null);\n if (!this.getLastSelected() || !this.isSelected(this.getFirstSelected())) this.setFirstSelected(this.getLastSelected());\n return true;\n }\n };\n\n (function () {\n var old_selectTask = gantt.selectTask;\n\n gantt.selectTask = function (id) {\n id = replaceValidZeroId(id, this.config.root_id);\n if (!id) return false;\n var multiselect = gantt._multiselect;\n var res = id;\n\n if (multiselect.isActive()) {\n if (multiselect.select(id, null)) {\n multiselect.setLastSelected(id);\n }\n\n multiselect.setFirstSelected(multiselect.getLastSelected());\n } else {\n res = old_selectTask.call(this, id);\n }\n\n return res;\n };\n\n var old_unselectTask = gantt.unselectTask;\n\n gantt.unselectTask = function (id) {\n var multiselect = gantt._multiselect;\n var isActive = multiselect.isActive();\n id = id || multiselect.getLastSelected();\n\n if (id && isActive) {\n multiselect.unselect(id, null);\n if (id == multiselect.getLastSelected()) multiselect.setLastSelected(null);\n gantt.refreshTask(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n\n var res = id;\n if (!isActive) res = old_unselectTask.call(this, id);\n return res;\n };\n\n gantt.toggleTaskSelection = function (id) {\n var multiselect = gantt._multiselect;\n\n if (id && multiselect.isActive()) {\n multiselect.toggle(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n };\n\n gantt.getSelectedTasks = function () {\n var multiselect = gantt._multiselect;\n multiselect.isActive();\n return multiselect.getSelected();\n };\n\n gantt.eachSelectedTask = function (callback) {\n return this._multiselect.forSelected(callback);\n };\n\n gantt.isSelectedTask = function (id) {\n return this._multiselect.isSelected(id);\n };\n\n gantt.getLastSelectedTask = function () {\n return this._multiselect.getLastSelected();\n };\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var old_isSelected = gantt.$data.tasksStore.isSelected;\n\n gantt.$data.tasksStore.isSelected = function (id) {\n if (gantt._multiselect.isActive()) {\n return gantt._multiselect.isSelected(id);\n }\n\n return old_isSelected.call(this, id);\n };\n });\n })();\n\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (gantt.isSelectedTask(id)) {\n multiselect.unselect(id, null);\n multiselect.select(new_id, null);\n }\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (multiselect._selected[id]) {\n // GS-1057: don't unselect the task here because the task is already unselected \n // it was in the select.js file before it was deleted\n // multiselect.unselect(id, null);\n multiselect._selected[id] = false;\n multiselect.setLastSelected(multiselect.getDefaultSelected());\n }\n\n multiselect.forSelected(function (task_id) {\n if (!gantt.isTaskExists(task_id)) multiselect.unselect(task_id, null);\n });\n });\n gantt.attachEvent(\"onBeforeTaskMultiSelect\", function (id, state, e) {\n var multiselect = gantt._multiselect;\n\n if (state && multiselect.isActive()) {\n if (multiselect._one_level) {\n return multiselect.isSameLevel(id);\n }\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._multiselect.doSelection(e)) gantt.callEvent(\"onMultiSelect\", [e]);\n return true;\n });\n};","module.exports = function (gantt) {\n if (!gantt._markers) {\n gantt._markers = gantt.createDatastore({\n name: \"marker\",\n initItem: function initItem(marker) {\n marker.id = marker.id || gantt.uid();\n return marker;\n }\n });\n }\n\n gantt.config.show_markers = true;\n\n function render_marker(marker) {\n if (!gantt.config.show_markers) return false;\n if (!marker.start_date) return false;\n var state = gantt.getState();\n if (+marker.start_date > +state.max_date) return;\n if ((!marker.end_date || +marker.end_date < +state.min_date) && +marker.start_date < +state.min_date) return;\n var div = document.createElement(\"div\");\n div.setAttribute(\"data-marker-id\", marker.id);\n var css = \"gantt_marker\";\n if (gantt.templates.marker_class) css += \" \" + gantt.templates.marker_class(marker);\n\n if (marker.css) {\n css += \" \" + marker.css;\n }\n\n if (marker.title) {\n div.title = marker.title;\n }\n\n div.className = css;\n var start = gantt.posFromDate(marker.start_date);\n div.style.left = start + \"px\";\n var markerHeight = Math.max(gantt.getRowTop(gantt.getVisibleTaskCount()), 0) + \"px\";\n\n if (gantt.config.timeline_placeholder) {\n markerHeight = gantt.$container.scrollHeight + \"px\";\n }\n\n div.style.height = markerHeight;\n\n if (marker.end_date) {\n var end = gantt.posFromDate(marker.end_date);\n div.style.width = Math.max(end - start, 0) + \"px\";\n }\n\n if (marker.text) {\n div.innerHTML = \"<div class='gantt_marker_content' >\" + marker.text + \"</div>\";\n }\n\n return div;\n }\n\n function initMarkerArea() {\n if (!gantt.$task_data) return;\n var markerArea = document.createElement(\"div\");\n markerArea.className = \"gantt_marker_area\";\n gantt.$task_data.appendChild(markerArea);\n gantt.$marker_area = markerArea;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n if (!gantt.$marker_area) initMarkerArea();\n });\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.$marker_area) {\n initMarkerArea();\n gantt.renderMarkers();\n }\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n // GS-1304 - markers should attach when layout is initialized, both on gantt.init and gantt.resetLayout\n // wait for \"onBeforeGanttRender\", so all layout elements will be in DOM\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n initMarkerArea();\n var layers = gantt.$services.getService(\"layers\");\n var markerRenderer = layers.createDataRender({\n name: \"marker\",\n defaultContainer: function defaultContainer() {\n return gantt.$marker_area;\n }\n });\n markerRenderer.addLayer(render_marker);\n }, {\n once: true\n });\n });\n\n gantt.getMarker = function (id) {\n if (!this._markers) return null;\n return this._markers.getItem(id);\n };\n\n gantt.addMarker = function (marker) {\n return this._markers.addItem(marker);\n };\n\n gantt.deleteMarker = function (id) {\n if (!this._markers.exists(id)) return false;\n\n this._markers.removeItem(id);\n\n return true;\n };\n\n gantt.updateMarker = function (id) {\n this._markers.refresh(id);\n };\n\n gantt._getMarkers = function () {\n return this._markers.getItems();\n };\n\n gantt.renderMarkers = function () {\n this._markers.refresh();\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.dispatcher = {\n isActive: false,\n activeNode: null,\n globalNode: new gantt.$keyboardNavigation.GanttNode(),\n enable: function enable() {\n this.isActive = true;\n this.setActiveNode(this.getActiveNode());\n },\n disable: function disable() {\n this.isActive = false;\n },\n isEnabled: function isEnabled() {\n return !!this.isActive;\n },\n getDefaultNode: function getDefaultNode() {\n var node;\n\n if (gantt.config.keyboard_navigation_cells) {\n node = new gantt.$keyboardNavigation.TaskCell();\n } else {\n node = new gantt.$keyboardNavigation.TaskRow();\n }\n\n if (!node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n setDefaultNode: function setDefaultNode() {\n this.setActiveNode(this.getDefaultNode());\n },\n getActiveNode: function getActiveNode() {\n var node = this.activeNode;\n\n if (node && !node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n fromDomElement: function fromDomElement(e) {\n var inputs = [gantt.$keyboardNavigation.TaskRow, gantt.$keyboardNavigation.TaskCell, gantt.$keyboardNavigation.HeaderCell];\n\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].prototype.fromDomElement) {\n var node = inputs[i].prototype.fromDomElement(e);\n if (node) return node;\n }\n }\n\n return null;\n },\n focusGlobalNode: function focusGlobalNode() {\n this.blurNode(this.globalNode);\n this.focusNode(this.globalNode);\n },\n setActiveNode: function setActiveNode(el) {\n //console.trace()\n var focusChanged = true;\n\n if (this.activeNode) {\n if (this.activeNode.compareTo(el)) {\n focusChanged = false;\n }\n }\n\n if (this.isEnabled()) {\n if (focusChanged) this.blurNode(this.activeNode);\n this.activeNode = el;\n this.focusNode(this.activeNode, !focusChanged);\n }\n },\n focusNode: function focusNode(el, keptFocus) {\n if (el && el.focus) {\n el.focus(keptFocus);\n }\n },\n blurNode: function blurNode(el) {\n if (el && el.blur) {\n el.blur();\n }\n },\n keyDownHandler: function keyDownHandler(e) {\n if (gantt.$keyboardNavigation.isModal()) return;\n if (!this.isEnabled()) return;\n\n if (e.defaultPrevented) {\n return;\n }\n\n var ganttNode = this.globalNode;\n var command = gantt.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\n var activeElement = this.getActiveNode();\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onKeyDown\", [command, e]) === false) {\n return;\n }\n\n if (!activeElement) {\n this.setDefaultNode();\n } else if (activeElement.findHandler(command)) {\n activeElement.doAction(command, e);\n } else if (ganttNode.findHandler(command)) {\n ganttNode.doAction(command, e);\n }\n },\n _timeout: null,\n awaitsFocus: function awaitsFocus() {\n return this._timeout !== null;\n },\n delay: function delay(callback, _delay) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(gantt.bind(function () {\n this._timeout = null;\n callback();\n }, this), _delay || 1);\n },\n clearDelay: function clearDelay() {\n clearTimeout(this._timeout);\n }\n };\n};","module.exports = function (gantt) {\n (function () {\n var modalsStack = [];\n\n function isModal() {\n return !!modalsStack.length;\n }\n\n function afterPopup(box) {\n setTimeout(function () {\n if (!isModal()) {\n if (!gantt.$destroyed) {\n gantt.focus();\n }\n }\n }, 1);\n }\n\n function startModal(box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n gantt.event(box, \"keydown\", trapFocus);\n modalsStack.push(box); //gantt.$keyboardNavigation.dispatcher.disable();\n }\n\n function endModal() {\n var box = modalsStack.pop();\n\n if (box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n }\n\n afterPopup(box);\n }\n\n function isTopModal(box) {\n return box == modalsStack[modalsStack.length - 1];\n }\n\n function trapFocus(event) {\n var target = event.currentTarget;\n if (!isTopModal(target)) return;\n gantt.$keyboardNavigation.trapFocus(target, event);\n }\n\n function traceLightbox() {\n startModal(gantt.getLightbox());\n }\n\n gantt.attachEvent(\"onLightbox\", traceLightbox);\n gantt.attachEvent(\"onAfterLightbox\", endModal);\n gantt.attachEvent(\"onLightboxChange\", function () {\n endModal();\n traceLightbox();\n });\n gantt.attachEvent(\"onAfterQuickInfo\", function () {\n afterPopup();\n });\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n saveFocus();\n startModal(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function () {\n endModal();\n restoreFocus();\n });\n var focusElement = null;\n\n function saveFocus() {\n focusElement = gantt.utils.dom.getActiveElement();\n }\n\n function restoreFocus() {\n setTimeout(function () {\n if (focusElement) {\n focusElement.focus();\n focusElement = null;\n }\n }, 1);\n }\n\n gantt.$keyboardNavigation.isModal = isModal;\n })();\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n var _require = require(\"../../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\n gantt.$keyboardNavigation.TaskCell = function (taskId, index) {\n taskId = replaceValidZeroId(taskId, gantt.config.root_id);\n\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n this.columnIndex = index || 0; // provided task may not exist, in this case node will be detectes as invalid\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n this.globalIndex = gantt.getGlobalTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskCell.prototype = gantt._compose(gantt.$keyboardNavigation.TaskRow, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.$keyboardNavigation.TaskRow.prototype.isValid.call(this) && !!gantt.getGridColumns()[this.columnIndex];\n },\n fallback: function fallback() {\n var node = gantt.$keyboardNavigation.TaskRow.prototype.fallback.call(this);\n var result = node;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow) {\n var visibleColumns = gantt.getGridColumns();\n var index = this.columnIndex;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n result = new gantt.$keyboardNavigation.TaskCell(node.taskId, index);\n }\n }\n\n return result;\n },\n fromDomElement: function fromDomElement(el) {\n if (!gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n var index = 0;\n var cellElement = domHelpers.locateAttribute(el, \"data-column-index\");\n\n if (cellElement) {\n index = cellElement.getAttribute(\"data-column-index\") * 1;\n }\n\n return new gantt.$keyboardNavigation.TaskCell(taskId, index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n var row = gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n if (!row) return null;\n return row.querySelector(\"[data-column-index='\" + this.columnIndex + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n keys: {\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell(this.columnIndex);\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskCell(prevTask, this.columnIndex);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(nextTask, this.columnIndex));\n }\n },\n \"left\": function left() {\n if (this.columnIndex > 0) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.columnIndex < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex + 1));\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, 0));\n },\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id, this.columnIndex));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(0).id, this.columnIndex));\n }\n }\n }\n });\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.TaskRow = function (taskId) {\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n this.globalIndex = gantt.getGlobalTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskRow.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.isTaskExists(this.taskId) && gantt.getTaskIndex(this.taskId) > -1;\n },\n fallback: function fallback() {\n if (!gantt.getVisibleTaskCount()) {\n var header = new gantt.$keyboardNavigation.HeaderCell();\n if (!header.isValid()) return null;else return header;\n } else {\n var nextIndex = -1; // GS-1393. When Gantt tries to restore the focus, it should rely on the global index\n\n if (gantt.getTaskByIndex(this.globalIndex - 1)) {\n nextIndex = this.globalIndex - 1;\n } else if (gantt.getTaskByIndex(this.globalIndex + 1)) {\n nextIndex = this.globalIndex + 1;\n } else {\n var globalIndex = this.globalIndex;\n\n while (globalIndex >= 0) {\n if (gantt.getTaskByIndex(globalIndex)) {\n nextIndex = globalIndex;\n break;\n }\n\n globalIndex--;\n }\n }\n\n if (nextIndex > -1) {\n return new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(nextIndex).id);\n }\n }\n },\n fromDomElement: function fromDomElement(el) {\n if (gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n return new gantt.$keyboardNavigation.TaskRow(taskId);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n return gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n focus: function focus(keptFocus) {\n if (!keptFocus) {\n var pos = gantt.getTaskPosition(gantt.getTask(this.taskId));\n var height = gantt.getTaskHeight(this.taskId);\n var scroll = gantt.getScrollState();\n var viewWidth;\n\n if (gantt.$task) {\n viewWidth = gantt.$task.offsetWidth;\n } else {\n viewWidth = scroll.inner_width;\n }\n\n var viewHeight;\n\n if (gantt.$grid_data || gantt.$task_data) {\n viewHeight = (gantt.$grid_data || gantt.$task_data).offsetHeight;\n } else {\n viewHeight = scroll.inner_height;\n }\n\n if (pos.top < scroll.y || pos.top + height > scroll.y + viewHeight) {\n gantt.scrollTo(null, pos.top - height * 5);\n } else if (gantt.config.scroll_on_click && gantt.config.show_chart) {\n // horizontal scroll activated\n if (pos.left > scroll.x + viewWidth) {\n // scroll forward to the start of the task\n gantt.scrollTo(pos.left - gantt.config.task_scroll_offset);\n } else if (pos.left + pos.width < scroll.x) {\n // scroll back to the end of the task\n gantt.scrollTo(pos.left + pos.width - gantt.config.task_scroll_offset);\n }\n }\n }\n\n gantt.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this, [keptFocus]); // GS-152 if there are scrollbars with custom names, change their scroll position\n\n scrollGrid();\n\n function scrollGrid() {\n var grid = gantt.$ui.getView(\"grid\");\n var scrollPositionX = parseInt(grid.$grid.scrollLeft);\n var scrollPositionY = parseInt(grid.$grid_data.scrollTop);\n var attachedScrollbarHorizontal = grid.$config.scrollX;\n\n if (attachedScrollbarHorizontal && grid.$config.scrollable) {\n var scrollbarHorizontal = gantt.$ui.getView(attachedScrollbarHorizontal);\n\n if (scrollbarHorizontal) {\n scrollbarHorizontal.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n\n var attachedScrollbarVertical = grid.$config.scrollY;\n\n if (attachedScrollbarVertical) {\n var scrollbarVertical = gantt.$ui.getView(attachedScrollbarVertical);\n\n if (scrollbarVertical) {\n scrollbarVertical.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n }\n },\n keys: {\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(0).id));\n }\n },\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell();\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskRow(prevTask);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(nextTask));\n }\n },\n \"shift+down\": function shiftDown() {\n if (gantt.hasChild(this.taskId) && !gantt.getTask(this.taskId).$open) {\n gantt.open(this.taskId);\n }\n },\n \"shift+up\": function shiftUp() {\n if (gantt.hasChild(this.taskId) && gantt.getTask(this.taskId).$open) {\n gantt.close(this.taskId);\n }\n },\n \"shift+right\": function shiftRight() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var prevId = gantt.getPrevSibling(this.taskId);\n\n if (gantt.isTaskExists(prevId) && !gantt.isChildOf(this.taskId, prevId)) {\n var parent = gantt.getTask(prevId);\n parent.$open = true;\n var result = gantt.moveTask(this.taskId, -1, prevId);\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n \"shift+left\": function shiftLeft() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var parent = gantt.getParent(this.taskId);\n\n if (gantt.isTaskExists(parent)) {\n var result = gantt.moveTask(this.taskId, gantt.getTaskIndex(parent) + 1, gantt.getParent(parent));\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n // select\n \"space\": function space(e) {\n if (!gantt.isSelectedTask(this.taskId)) {\n gantt.selectTask(this.taskId);\n } else {\n gantt.unselectTask(this.taskId);\n }\n },\n // collapse\n \"ctrl+left\": function ctrlLeft(e) {\n gantt.close(this.taskId);\n },\n // expand\n \"ctrl+right\": function ctrlRight(e) {\n gantt.open(this.taskId);\n },\n // delete task\n \"delete\": function _delete(e) {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.$click.buttons[\"delete\"](this.taskId);\n },\n // open lightbox\n \"enter\": function enter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.showLightbox(this.taskId);\n },\n // add subtask\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.TaskRow.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.HeaderCell = function (index) {\n this.index = index || 0;\n };\n\n gantt.$keyboardNavigation.HeaderCell.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) return false;\n }\n\n return !!gantt.getGridColumns()[this.index] || !gantt.getVisibleTaskCount();\n },\n fallback: function fallback() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) {\n return new gantt.$keyboardNavigation.TaskRow();\n }\n\n return null;\n }\n\n var visibleColumns = gantt.getGridColumns();\n var index = this.index;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n fromDomElement: function fromDomElement(el) {\n var cellElement = domHelpers.locateClassName(el, \"gantt_grid_head_cell\");\n\n if (cellElement) {\n var index = 0;\n\n while (cellElement && cellElement.previousSibling) {\n cellElement = cellElement.previousSibling;\n index += 1;\n }\n\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n var cells = gantt.$grid_scale.childNodes;\n return cells[this.index];\n },\n keys: {\n \"left\": function left() {\n if (this.index > 0) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.index < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index + 1));\n }\n },\n \"down\": function down() {\n var taskRow;\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (gantt.isTaskExists(rootLevel[0])) {\n taskRow = rootLevel[0];\n }\n\n if (taskRow) {\n if (gantt.config.keyboard_navigation_cells) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(taskRow, this.index));\n } else {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(taskRow));\n }\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(0));\n },\n // press header button\n \"enter, space\": function enterSpace() {\n var node = domHelpers.getActiveElement();\n node.click();\n },\n // add new task\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.HeaderCell.prototype.bindAll(gantt.$keyboardNavigation.HeaderCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.KeyNavNode = function () {};\n\n gantt.$keyboardNavigation.KeyNavNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n isValid: function isValid() {\n return true;\n },\n fallback: function fallback() {\n return null;\n },\n moveTo: function moveTo(element) {\n gantt.$keyboardNavigation.dispatcher.setActiveNode(element);\n },\n compareTo: function compareTo(b) {\n // good enough comparison of two random objects\n if (!b) return false;\n\n for (var i in this) {\n if (!!this[i] != !!b[i]) return false;\n var canStringifyThis = !!(this[i] && this[i].toString);\n var canStringifyThat = !!(b[i] && b[i].toString);\n if (canStringifyThat != canStringifyThis) return false;\n\n if (!(canStringifyThat && canStringifyThis)) {\n if (b[i] != this[i]) return false;\n } else {\n if (b[i].toString() != this[i].toString()) return false;\n }\n }\n\n return true;\n },\n getNode: function getNode() {},\n focus: function focus() {\n var node = this.getNode();\n if (!node) return;\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeFocus\", [node]) === false) {\n return;\n }\n\n if (node) {\n node.setAttribute(\"tabindex\", \"-1\");\n\n if (!node.$eventAttached) {\n node.$eventAttached = true;\n gantt.event(node, \"focus\", function (e) {\n e.preventDefault();\n return false;\n }, false);\n } //node.className += \" gantt_focused\";\n\n\n if (gantt.utils.dom.isChildOf(document.activeElement, node)) {\n node = document.activeElement;\n }\n\n if (node.focus) node.focus();\n eventFacade.callEvent(\"onFocus\", [this.getNode()]);\n }\n },\n blur: function blur() {\n var node = this.getNode();\n\n if (node) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n eventFacade.callEvent(\"onBlur\", [node]);\n node.setAttribute(\"tabindex\", \"-1\"); //node.className = (node.className || \"\").replace(/ ?gantt_focused/g, \"\");\n }\n }\n });\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.GanttNode = function () {};\n\n gantt.$keyboardNavigation.GanttNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n focus: function focus() {\n gantt.focus();\n },\n blur: function blur() {},\n isEnabled: function isEnabled() {\n return gantt.$container.hasAttribute(\"tabindex\");\n },\n scrollHorizontal: function scrollHorizontal(dir) {\n var date = gantt.dateFromPos(gantt.getScrollState().x);\n var scale = gantt.getScale();\n var step = dir < 0 ? -scale.step : scale.step;\n date = gantt.date.add(date, step, scale.unit);\n gantt.scrollTo(gantt.posFromDate(date));\n },\n scrollVertical: function scrollVertical(dir) {\n var top = gantt.getScrollState().y;\n var step = gantt.config.row_height;\n gantt.scrollTo(null, top + (dir < 0 ? -1 : 1) * step);\n },\n keys: {\n \"alt+left\": function altLeft(e) {\n this.scrollHorizontal(-1);\n },\n \"alt+right\": function altRight(e) {\n this.scrollHorizontal(1);\n },\n \"alt+up\": function altUp(e) {\n this.scrollVertical(-1);\n },\n \"alt+down\": function altDown(e) {\n this.scrollVertical(1);\n },\n // undo\n \"ctrl+z\": function ctrlZ() {\n if (gantt.undo) gantt.undo();\n },\n // redo\n \"ctrl+r\": function ctrlR() {\n if (gantt.redo) gantt.redo();\n }\n }\n });\n gantt.$keyboardNavigation.GanttNode.prototype.bindAll(gantt.$keyboardNavigation.GanttNode.prototype.keys);\n};","module.exports = function (gantt) {\n (function () {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.getFocusableNodes = domHelpers.getFocusableNodes;\n\n gantt.$keyboardNavigation.trapFocus = function trapFocus(root, e) {\n if (e.keyCode != 9) return false;\n var focusable = gantt.$keyboardNavigation.getFocusableNodes(root);\n var currentFocus = domHelpers.getActiveElement();\n var currentIndex = -1;\n\n for (var i = 0; i < focusable.length; i++) {\n if (focusable[i] == currentFocus) {\n currentIndex = i;\n break;\n }\n }\n\n if (e.shiftKey) {\n // back tab\n if (currentIndex <= 0) {\n // go to the last element if we focused on the first\n var lastItem = focusable[focusable.length - 1];\n\n if (lastItem) {\n lastItem.focus();\n e.preventDefault();\n return true;\n }\n }\n } else {\n // forward tab\n if (currentIndex >= focusable.length - 1) {\n // forward tab from last element should go back to the first element\n var firstItem = focusable[0];\n\n if (firstItem) {\n firstItem.focus();\n e.preventDefault();\n return true;\n }\n }\n }\n\n return false;\n };\n })();\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.EventHandler = {\n _handlers: null,\n findHandler: function findHandler(command) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var hash = shortcuts.getHash(command);\n return this._handlers[hash];\n },\n doAction: function doAction(command, e) {\n var handler = this.findHandler(command);\n\n if (handler) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeAction\", [command, e]) === false) {\n return;\n }\n\n handler.call(this, e);\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n },\n bind: function bind(shortcut, handler) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n this._handlers[shortcuts.getHash(commands[i])] = handler;\n }\n },\n unbind: function unbind(shortcut) {\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n if (this._handlers[shortcuts.getHash(commands[i])]) {\n delete this._handlers[shortcuts.getHash(commands[i])];\n }\n }\n },\n bindAll: function bindAll(map) {\n for (var i in map) {\n this.bind(i, map[i]);\n }\n },\n initKeys: function initKeys() {\n if (!this._handlers) this._handlers = {};\n\n if (this.keys) {\n this.bindAll(this.keys);\n }\n }\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.shortcuts = {\n createCommand: function createCommand() {\n return {\n modifiers: {\n \"shift\": false,\n \"alt\": false,\n \"ctrl\": false,\n \"meta\": false\n },\n keyCode: null\n };\n },\n parse: function parse(shortcut) {\n var commands = [];\n var expr = this.getExpressions(this.trim(shortcut));\n\n for (var i = 0; i < expr.length; i++) {\n var words = this.getWords(expr[i]);\n var command = this.createCommand();\n\n for (var j = 0; j < words.length; j++) {\n if (this.commandKeys[words[j]]) {\n command.modifiers[words[j]] = true;\n } else if (this.specialKeys[words[j]]) {\n command.keyCode = this.specialKeys[words[j]];\n } else {\n command.keyCode = words[j].charCodeAt(0);\n }\n }\n\n commands.push(command);\n }\n\n return commands;\n },\n getCommandFromEvent: function getCommandFromEvent(domEvent) {\n var command = this.createCommand();\n command.modifiers.shift = !!domEvent.shiftKey;\n command.modifiers.alt = !!domEvent.altKey;\n command.modifiers.ctrl = !!domEvent.ctrlKey;\n command.modifiers.meta = !!domEvent.metaKey;\n command.keyCode = domEvent.which || domEvent.keyCode;\n\n if (command.keyCode >= 96 && command.keyCode <= 105) {\n // numpad keys 96-105 -> 48-57\n command.keyCode -= 48; //convert numpad number code to regular number code\n }\n\n var printableKey = String.fromCharCode(command.keyCode);\n\n if (printableKey) {\n command.keyCode = printableKey.toLowerCase().charCodeAt(0);\n }\n\n return command;\n },\n getHashFromEvent: function getHashFromEvent(domEvent) {\n return this.getHash(this.getCommandFromEvent(domEvent));\n },\n getHash: function getHash(command) {\n var parts = [];\n\n for (var i in command.modifiers) {\n if (command.modifiers[i]) {\n parts.push(i);\n }\n }\n\n parts.push(command.keyCode);\n return parts.join(this.junctionChar);\n },\n getExpressions: function getExpressions(shortcut) {\n return shortcut.split(this.junctionChar);\n },\n getWords: function getWords(term) {\n return term.split(this.combinationChar);\n },\n trim: function trim(shortcut) {\n return shortcut.replace(/\\s/g, \"\");\n },\n junctionChar: \",\",\n combinationChar: \"+\",\n commandKeys: {\n \"shift\": 16,\n \"alt\": 18,\n \"ctrl\": 17,\n \"meta\": true\n },\n specialKeys: {\n \"backspace\": 8,\n \"tab\": 9,\n \"enter\": 13,\n \"esc\": 27,\n \"space\": 32,\n \"up\": 38,\n \"down\": 40,\n \"left\": 37,\n \"right\": 39,\n \"home\": 36,\n \"end\": 35,\n \"pageup\": 33,\n \"pagedown\": 34,\n \"delete\": 46,\n \"insert\": 45,\n \"plus\": 107,\n \"f1\": 112,\n \"f2\": 113,\n \"f3\": 114,\n \"f4\": 115,\n \"f5\": 116,\n \"f6\": 117,\n \"f7\": 118,\n \"f8\": 119,\n \"f9\": 120,\n \"f10\": 121,\n \"f11\": 122,\n \"f12\": 123\n }\n };\n};","module.exports = function (gantt) {\n var eventable = require(\"../utils/eventable\");\n\n function setupKeyNav(gantt) {\n gantt.config.keyboard_navigation = true;\n gantt.config.keyboard_navigation_cells = false;\n gantt.$keyboardNavigation = {};\n\n gantt._compose = function () {\n var parts = Array.prototype.slice.call(arguments, 0);\n var res = {};\n\n for (var i = 0; i < parts.length; i++) {\n var obj = parts[i];\n\n if (typeof obj == \"function\") {\n obj = new obj();\n }\n\n for (var p in obj) {\n res[p] = obj[p];\n }\n }\n\n return res;\n };\n\n require(\"./keyboard_navigation/common/keyboard_shortcuts\")(gantt);\n\n require(\"./keyboard_navigation/common/eventhandler\")(gantt);\n\n require(\"./keyboard_navigation/common/trap_modal_focus\")(gantt);\n\n require(\"./keyboard_navigation/elements/gantt_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/nav_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/header_cell\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_row\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_cell\")(gantt);\n\n require(\"./keyboard_navigation/modals\")(gantt);\n\n require(\"./keyboard_navigation/core\")(gantt);\n\n var domHelpers = require(\"../core/ui/utils/dom_helpers\");\n\n (function () {\n var dispatcher = gantt.$keyboardNavigation.dispatcher;\n\n dispatcher.isTaskFocused = function (id) {\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow || node instanceof gantt.$keyboardNavigation.TaskCell) {\n if (node.taskId == id) {\n return true;\n }\n }\n\n return false;\n };\n\n var keyDownHandler = function keyDownHandler(e) {\n if (!gantt.config.keyboard_navigation) return; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return;\n\n if (isNoKeyboardNavigationElement(e) || isLightboxElement(e)) {\n return;\n }\n\n return dispatcher.keyDownHandler(e);\n };\n\n var focusHandler = function focusHandler(e) {\n if (dispatcher.$preventDefault) {\n e.preventDefault();\n gantt.$container.blur();\n return false; // do nothing if key-nav focus is already planned\n } else if (!dispatcher.awaitsFocus()) {\n // otherwise - re-focus key-nav element on gantt focus\n dispatcher.focusGlobalNode();\n }\n };\n\n var reFocusActiveNode = function reFocusActiveNode() {\n if (!dispatcher.isEnabled()) return;\n var outsideGantt = !domHelpers.isChildOf(document.activeElement, gantt.$container) && document.activeElement.localName != \"body\";\n var activeNode = dispatcher.getActiveNode();\n if (!activeNode || outsideGantt) return;\n var domElement = activeNode.getNode();\n var top, left;\n\n if (domElement && domElement.parentNode) {\n top = domElement.parentNode.scrollTop;\n left = domElement.parentNode.scrollLeft;\n }\n\n activeNode.focus(true);\n\n if (domElement && domElement.parentNode) {\n domElement.parentNode.scrollTop = top;\n domElement.parentNode.scrollLeft = left;\n }\n };\n\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.config.keyboard_navigation) return;\n reFocusActiveNode();\n });\n gantt.attachEvent(\"onGanttRender\", function () {\n gantt.eventRemove(gantt.$root, \"keydown\", keyDownHandler);\n gantt.eventRemove(gantt.$container, \"focus\", focusHandler);\n gantt.eventRemove(gantt.$container, \"mousedown\", mousedownHandler);\n\n if (gantt.config.keyboard_navigation) {\n gantt.event(gantt.$root, \"keydown\", keyDownHandler);\n gantt.event(gantt.$container, \"focus\", focusHandler);\n gantt.event(gantt.$container, \"mousedown\", mousedownHandler);\n gantt.$container.setAttribute(\"tabindex\", \"0\");\n } else {\n gantt.$container.removeAttribute(\"tabindex\");\n }\n });\n\n function getTaskNodeConstructor() {\n if (gantt.config.keyboard_navigation_cells) {\n return gantt.$keyboardNavigation.TaskCell;\n } else {\n return gantt.$keyboardNavigation.TaskRow;\n }\n }\n\n function isInlineEditorCell(e) {\n return !!domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\");\n } // GS-1445. Cancel keyboard navigation within custom elements\n\n\n function isNoKeyboardNavigationElement(e) {\n return !!domHelpers.closest(e.target, \".no_keyboard_navigation\");\n }\n\n function isLightboxElement(e) {\n return !!domHelpers.closest(e.target, \".gantt_cal_light\");\n }\n\n function mousedownHandler(e) {\n if (!gantt.config.keyboard_navigation) return true; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return true;\n\n if (isNoKeyboardNavigationElement(e)) {\n return;\n }\n\n var focusNode;\n var locateTask = dispatcher.fromDomElement(e);\n\n if (locateTask) {\n //var node = getTaskNodeConstructor();\n if (dispatcher.activeNode instanceof gantt.$keyboardNavigation.TaskCell && domHelpers.isChildOf(e.target, gantt.$task)) {\n locateTask = new gantt.$keyboardNavigation.TaskCell(locateTask.taskId, dispatcher.activeNode.columnIndex);\n }\n\n focusNode = locateTask;\n }\n\n if (focusNode) {\n if (!dispatcher.isEnabled()) {\n dispatcher.activeNode = focusNode;\n } else {\n dispatcher.delay(function () {\n dispatcher.setActiveNode(focusNode);\n });\n }\n } else {\n // empty click should drop focus from gantt, insert of reselecting default node\n dispatcher.$preventDefault = true;\n setTimeout(function () {\n dispatcher.$preventDefault = false;\n }, 300);\n }\n }\n\n var onReady = gantt.attachEvent(\"onGanttReady\", function () {\n // restore focus on repainted tasks\n gantt.detachEvent(onReady);\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function (id) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId == id) {\n reFocusActiveNode();\n }\n }\n });\n\n if (gantt._smart_render) {\n var updateRender = gantt._smart_render._redrawTasks;\n\n gantt._smart_render._redrawTasks = function (renderers, items) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId !== undefined) {\n var focusedItemVisible = false;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id == currentNode.taskId && items[i].start_date) {\n focusedItemVisible = true;\n break;\n }\n }\n\n if (!focusedItemVisible) {\n items.push(gantt.getTask(currentNode.taskId));\n }\n }\n }\n\n var res = updateRender.apply(this, arguments);\n return res;\n };\n }\n });\n var createdTaskId = null;\n var keepFocusOnNewTask = false;\n gantt.attachEvent(\"onTaskCreated\", function (task) {\n createdTaskId = task.id;\n return true;\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (!gantt.config.keyboard_navigation) return true;\n\n if (dispatcher.isEnabled()) {\n // GS-1394. After adding a new task, the focus shouldn't change to the placeholder task\n if (id == createdTaskId) {\n keepFocusOnNewTask = true;\n setTimeout(function () {\n keepFocusOnNewTask = false;\n createdTaskId = null;\n });\n }\n\n if (keepFocusOnNewTask && item.type == gantt.config.types.placeholder) {\n return;\n }\n\n var columnIndex = 0;\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskCell) {\n columnIndex = node.columnIndex;\n }\n\n var nodeConstructor = getTaskNodeConstructor();\n\n if (item.type == gantt.config.types.placeholder && gantt.config.placeholder_task.focusOnCreate === false) {// do not focus on the placeholder task\n } else {\n dispatcher.setActiveNode(new nodeConstructor(id, columnIndex));\n }\n }\n });\n gantt.attachEvent(\"onTaskIdChange\", function (oldId, newId) {\n if (!gantt.config.keyboard_navigation) return true;\n var node = dispatcher.activeNode;\n\n if (dispatcher.isTaskFocused(oldId)) {\n node.taskId = newId;\n }\n\n return true;\n });\n var interval = setInterval(function () {\n if (!gantt.config.keyboard_navigation) return;\n\n if (!dispatcher.isEnabled()) {\n dispatcher.enable();\n }\n\n return;\n }, 500);\n gantt.attachEvent(\"onDestroy\", function () {\n clearInterval(interval);\n });\n\n function getScopeName(obj) {\n if (obj instanceof gantt.$keyboardNavigation.GanttNode) {\n return \"gantt\";\n } else if (obj instanceof gantt.$keyboardNavigation.HeaderCell) {\n return \"headerCell\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskRow) {\n return \"taskRow\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskCell) {\n return \"taskCell\";\n }\n\n return null;\n }\n\n function getScope(mode) {\n var scopes = {\n \"gantt\": gantt.$keyboardNavigation.GanttNode,\n \"headerCell\": gantt.$keyboardNavigation.HeaderCell,\n \"taskRow\": gantt.$keyboardNavigation.TaskRow,\n \"taskCell\": gantt.$keyboardNavigation.TaskCell\n };\n return scopes[mode] || scopes.gantt;\n }\n\n function findVisibleColumnIndex(columnName) {\n var columns = gantt.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n var keyNavFacade = {};\n eventable(keyNavFacade);\n gantt.mixin(keyNavFacade, {\n addShortcut: function addShortcut(shortcut, handler, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.bind(shortcut, handler);\n }\n },\n getShortcutHandler: function getShortcutHandler(shortcut, scope) {\n var commands = gantt.$keyboardNavigation.shortcuts.parse(shortcut);\n\n if (commands.length) {\n return keyNavFacade.getCommandHandler(commands[0], scope);\n }\n },\n getCommandHandler: function getCommandHandler(command, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n if (command) {\n return scopeObject.prototype.findHandler(command);\n }\n }\n },\n removeShortcut: function removeShortcut(shortcut, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.unbind(shortcut);\n }\n },\n focus: function focus(config) {\n var type = config ? config.type : null;\n var constructor = getScope(type);\n var node;\n\n switch (type) {\n case \"taskCell\":\n node = new constructor(config.id, findVisibleColumnIndex(config.column));\n break;\n\n case \"taskRow\":\n node = new constructor(config.id);\n break;\n\n case \"headerCell\":\n node = new constructor(findVisibleColumnIndex(config.column));\n break;\n\n default:\n break;\n }\n\n dispatcher.delay(function () {\n if (node) {\n dispatcher.setActiveNode(node);\n } else {\n dispatcher.enable();\n\n if (!dispatcher.getActiveNode()) {\n dispatcher.setDefaultNode();\n } else {\n if (!dispatcher.awaitsFocus()) {\n dispatcher.enable();\n }\n }\n }\n });\n },\n getActiveNode: function getActiveNode() {\n if (dispatcher.isEnabled()) {\n var node = dispatcher.getActiveNode();\n var scope = getScopeName(node);\n var columns = gantt.getGridColumns();\n\n switch (scope) {\n case \"taskCell\":\n return {\n type: \"taskCell\",\n id: node.taskId,\n column: columns[node.columnIndex].name\n };\n\n case \"taskRow\":\n return {\n type: \"taskRow\",\n id: node.taskId\n };\n\n case \"headerCell\":\n return {\n type: \"headerCell\",\n column: columns[node.index].name\n };\n }\n }\n\n return null;\n }\n });\n gantt.$keyboardNavigation.facade = keyNavFacade;\n gantt.ext.keyboardNavigation = keyNavFacade;\n\n gantt.focus = function () {\n keyNavFacade.focus();\n };\n\n gantt.addShortcut = keyNavFacade.addShortcut;\n gantt.getShortcutHandler = keyNavFacade.getShortcutHandler;\n gantt.removeShortcut = keyNavFacade.removeShortcut;\n })();\n }\n\n setupKeyNav(gantt);\n};","export default function(gantt: any){\r\n\r\ninterface IBody extends HTMLElement {\r\n\tmsRequestFullscreen?: () => void;\r\n\tmozRequestFullScreen?: () => void;\r\n\twebkitRequestFullscreen?: (ALLOW_KEYBOARD_INPUT: any) => void;\r\n}\r\n\r\n\r\ninterface IConsole extends Console {\r\n\twarning?: (str: string) => void;\r\n}\r\n\r\ninterface IDocument extends Document {\r\n\tfullscreenElement: Element;\r\n\tmozFullScreenElement?: Element;\r\n\twebkitFullscreenElement?: Element;\r\n\tmsFullscreenElement?: Element;\r\n\twebkitFullscreenEnabled?: boolean;\r\n\tmozFullScreenEnabled?: boolean;\r\n\tmsFullscreenEnabled?: boolean;\r\n\tmsExitFullscreen?: () => void;\r\n\tmozCancelFullScreen?: () => void;\r\n\twebkitExitFullscreen?: () => void;\r\n}\r\n\r\ninterface IElement extends Element {\r\n\tALLOW_KEYBOARD_INPUT?: boolean;\r\n}\r\n\r\ninterface IElementSizes extends ISizes {\r\n\tmodified: boolean;\r\n}\r\n\r\ninterface ISizes {\r\n\twidth: null | string;\r\n\theight: null | string;\r\n\ttop: null | string;\r\n\tleft: null | string;\r\n\tposition: null | string;\r\n\tzIndex: null | number;\r\n}\r\n\r\nfunction isExpanded() {\r\n\tconst element = ((document as IDocument).fullscreenElement ||\r\n\t\t(document as IDocument).mozFullScreenElement ||\r\n\t\t(document as IDocument).webkitFullscreenElement ||\r\n\t\t(document as IDocument).msFullscreenElement);\r\n\treturn !!(element && element === document.body);\r\n}\r\n\r\nfunction isFullscreenAvailable() {\r\n\ttry {\r\n\t\treturn (document as IDocument).fullscreenEnabled ||\r\n\t\t\t(document as IDocument).webkitFullscreenEnabled ||\r\n\t\t\t(document as IDocument).mozFullScreenEnabled ||\r\n\t\t\t(document as IDocument).msFullscreenEnabled;\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Fullscreen is not available:\", e); // tslint:disable-line:no-console\r\n\t}\r\n}\r\n\r\nconst state = gantt.$services.getService(\"state\");\r\nstate.registerProvider(\"fullscreen\", () => {\r\n\tif (isFullscreenAvailable()){\r\n\t\treturn { fullscreen: isExpanded() };\r\n\t} else {\r\n\t\treturn undefined;\r\n\t}\r\n});\r\n\r\nlet backupBodyPadding = {\r\n\toverflow: null,\r\n\tpadding: null,\r\n\tpaddingTop: null,\r\n\tpaddingRight: null,\r\n\tpaddingBottom: null,\r\n\tpaddingLeft: null\r\n};\r\n\r\nconst backupElementSizes: IElementSizes = {\r\n\twidth: null,\r\n\theight: null,\r\n\ttop: null,\r\n\tleft: null,\r\n\tposition: null,\r\n\tzIndex: null,\r\n\tmodified: false\r\n};\r\n\r\nlet backupPositioning = null;\r\nfunction resetParentPositioning(root){\r\n\tlet parent = root.parentNode;\r\n\tconst positions = [];\r\n\twhile(parent && parent.style){\r\n\t\tpositions.push({\r\n\t\t\telement: parent,\r\n\t\t\toriginalPositioning: parent.style.position\r\n\t\t});\r\n\t\tparent.style.position = \"static\";\r\n\t\tparent = parent.parentNode;\r\n\t}\r\n\treturn positions;\r\n}\r\n\r\nfunction restoreParentPositioning(positions: any[]){\r\n\tpositions.forEach(record => {\r\n\t\trecord.element.style.position = record.originalPositioning;\r\n\t});\r\n}\r\n\r\n// expand gantt root element to fullscreen automatically\r\nfunction setFullScreenSizes() {\r\n\tconst root = gantt.ext.fullscreen.getFullscreenElement();\r\n\tconst body = document.body;\r\n\tupdateSizes(root.style, backupElementSizes);\r\n\tbackupBodyPadding = {\r\n\t\toverflow: body.style.overflow,\r\n\t\tpadding: body.style.padding ? body.style.padding : null,\r\n\t\tpaddingTop: body.style.paddingTop ? body.style.paddingTop : null,\r\n\t\tpaddingRight: body.style.paddingRight ? body.style.paddingRight : null,\r\n\t\tpaddingBottom: body.style.paddingBottom ? body.style.paddingBottom : null,\r\n\t\tpaddingLeft: body.style.paddingLeft ? body.style.paddingLeft : null\r\n\t};\r\n\r\n\tif (body.style.padding) {\r\n\t\tbody.style.padding = \"0\";\r\n\t}\r\n\tif (body.style.paddingTop) {\r\n\t\tbody.style.paddingTop = \"0\";\r\n\t}\r\n\tif (body.style.paddingRight) {\r\n\t\tbody.style.paddingRight = \"0\";\r\n\t}\r\n\tif (body.style.paddingBottom) {\r\n\t\tbody.style.paddingBottom = \"0\";\r\n\t}\r\n\tif (body.style.paddingLeft) {\r\n\t\tbody.style.paddingLeft = \"0\";\r\n\t}\r\n\r\n\tbody.style.overflow = \"hidden\";\r\n\r\n\troot.style.width = \"100vw\";\r\n\troot.style.height = \"100vh\";\r\n\troot.style.top = \"0px\";\r\n\troot.style.left = \"0px\";\r\n\troot.style.position = \"absolute\";\r\n\troot.style.zIndex = 1;\r\n\tbackupElementSizes.modified = true;\r\n\tbackupPositioning = resetParentPositioning(root);\r\n}\r\n\r\nfunction restoreSizes() {\r\n\tconst root = gantt.ext.fullscreen.getFullscreenElement();\r\n\tconst body = document.body;\r\n\tif (backupElementSizes.modified) {\r\n\t\tif (backupBodyPadding.padding) {\r\n\t\t\tbody.style.padding = backupBodyPadding.padding;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingTop) {\r\n\t\t\tbody.style.paddingTop = backupBodyPadding.paddingTop;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingRight) {\r\n\t\t\tbody.style.paddingRight = backupBodyPadding.paddingRight;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingBottom) {\r\n\t\t\tbody.style.paddingBottom = backupBodyPadding.paddingBottom;\r\n\t\t}\r\n\t\tif (backupBodyPadding.paddingLeft) {\r\n\t\t\tbody.style.paddingLeft = backupBodyPadding.paddingLeft;\r\n\t\t}\r\n\r\n\t\tbody.style.overflow = backupBodyPadding.overflow;\r\n\t\tbackupBodyPadding = {\r\n\t\t\toverflow: null,\r\n\t\t\tpadding: null,\r\n\t\t\tpaddingTop: null,\r\n\t\t\tpaddingRight: null,\r\n\t\t\tpaddingBottom: null,\r\n\t\t\tpaddingLeft: null\r\n\t\t};\r\n\t\tupdateSizes(backupElementSizes, root.style);\r\n\t\tbackupElementSizes.modified = false;\r\n\t}\r\n\trestoreParentPositioning(backupPositioning);\r\n\tbackupPositioning = null;\r\n}\r\n\r\nfunction updateSizes(source: ISizes, target: ISizes) {\r\n\ttarget.width = source.width;\r\n\ttarget.height = source.height;\r\n\ttarget.top = source.top;\r\n\ttarget.left = source.left;\r\n\ttarget.position = source.position;\r\n\ttarget.zIndex = source.zIndex;\r\n}\r\n\r\nfunction addDOMEvents() {\r\n\tgantt.event(document, \"webkitfullscreenchange\", onFullScreenChange);\r\n\tgantt.event(document, \"mozfullscreenchange\", onFullScreenChange);\r\n\tgantt.event(document, \"MSFullscreenChange\", onFullScreenChange);\r\n\t// For IE on Win 10\r\n\tgantt.event(document, \"fullscreenChange\", onFullScreenChange);\r\n\tgantt.event(document, \"fullscreenchange\", onFullScreenChange);\r\n}\r\n\r\nlet expandGantt = false;\r\nfunction onFullScreenChange() {\r\n\tif (!gantt.$container) {\r\n\t\t// do nothing if gantt is not yet initialized\r\n\t\treturn;\r\n\t}\r\n\tlet event: \"onExpand\" | \"onCollapse\";\r\n\tconst isBodyExpanded = isExpanded();\r\n\r\n\tif (isBodyExpanded) {\r\n\t\tif (expandGantt) {\r\n\t\t\tevent = \"onExpand\";\r\n\t\t\tsetFullScreenSizes();\r\n\t\t}\r\n\t} else if (expandGantt) {\r\n\t\texpandGantt = false;\r\n\t\tevent = \"onCollapse\";\r\n\t\trestoreSizes();\r\n\t}\r\n\tsetTimeout(() => {\r\n\t\tgantt.render();\r\n\t});\r\n\tsetTimeout(() => {\r\n\t\tgantt.callEvent(event, [gantt.ext.fullscreen.getFullscreenElement()]);\r\n\t});\r\n}\r\n\r\nfunction cantFullscreen() {\r\n\tif (!gantt.$container) { // check is gantt initialized or not\r\n\t\treturn true;\r\n\t}\r\n\tif (!gantt.ext.fullscreen.getFullscreenElement()) {\r\n\t\treturn true;\r\n\t}\r\n\tif (!isFullscreenAvailable()) {\r\n\t\t// tslint:disable-next-line: no-console\r\n\t\tconst method = (console as IConsole).warning || console.log;\r\n\t\tmethod(\"The `fullscreen` feature not being allowed, or full-screen mode not being supported\");\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}\r\n\r\ngantt.ext.fullscreen = {\r\n\texpand(): void {\r\n\t\tif (cantFullscreen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isExpanded()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!gantt.callEvent(\"onBeforeExpand\", [this.getFullscreenElement()])) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\texpandGantt = true;\r\n\r\n\t\t// we switch body to fullscreen and then expand fullscreen element to viewport\r\n\t\t// we do it to correct display common elements: lightboxes, tooltip etc.\r\n\t\tconst element = document.body as IBody;\r\n\t\tconst requestArguments = element.webkitRequestFullscreen ?\r\n\t\t\t[(Element as unknown as IElement).ALLOW_KEYBOARD_INPUT] : [];\r\n\r\n\t\tconst requestFullscreen = element.msRequestFullscreen ||\r\n\t\t\telement.mozRequestFullScreen ||\r\n\t\t\telement.webkitRequestFullscreen ||\r\n\t\t\telement.requestFullscreen;\r\n\r\n\t\tif (requestFullscreen) {\r\n\t\t\trequestFullscreen.apply(element, requestArguments);\r\n\t\t}\r\n\t},\r\n\tcollapse(): void {\r\n\t\tif (cantFullscreen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!isExpanded()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!gantt.callEvent(\"onBeforeCollapse\", [this.getFullscreenElement()])) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst requestExitFullscreen = (document as IDocument).msExitFullscreen ||\r\n\t\t\t(document as IDocument).mozCancelFullScreen ||\r\n\t\t\t(document as IDocument).webkitExitFullscreen ||\r\n\t\t\t(document as IDocument).exitFullscreen;\r\n\r\n\t\tif (requestExitFullscreen) {\r\n\t\t\trequestExitFullscreen.apply(document);\r\n\t\t}\r\n\t},\r\n\ttoggle(): void {\r\n\t\tif (cantFullscreen()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!isExpanded()) {\r\n\t\t\tthis.expand();\r\n\t\t} else {\r\n\t\t\tthis.collapse();\r\n\t\t}\r\n\r\n\t},\r\n\tgetFullscreenElement(): HTMLElement {\r\n\t\treturn gantt.$root;\r\n\t},\r\n};\r\n\r\ngantt.expand = function() {\r\n\tgantt.ext.fullscreen.expand();\r\n};\r\n\r\ngantt.collapse = function(){\r\n\tgantt.ext.fullscreen.collapse();\r\n};\r\n\r\ngantt.attachEvent(\"onGanttReady\", addDOMEvents);\r\n\r\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar stringifyPrimitive = function stringifyPrimitive(v) {\n switch (_typeof(v)) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function (obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n\n if (obj === null) {\n obj = undefined;\n }\n\n if (_typeof(obj) === 'object') {\n return map(objectKeys(obj), function (k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\n if (isArray(obj[k])) {\n return map(obj[k], function (v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map(xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n\n return res;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'; // If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function (qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n var maxKeys = 1000;\n\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length; // maxKeys <= 0 means that we should not limit keys count\n\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr,\n vstr,\n k,\n v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = {\n isString: function isString(arg) {\n return typeof arg === 'string';\n },\n isObject: function isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n },\n isNull: function isNull(arg) {\n return arg === null;\n },\n isNullOrUndefined: function isNullOrUndefined(arg) {\n return arg == null;\n }\n};","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! https://mths.be/punycode v1.4.1 by @mathias */\n;\n\n(function (root) {\n /** Detect free variables */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n var freeModule = (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;;\n /* no condition */\n k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (typeof define == 'function' && _typeof(define.amd) == 'object' && define.amd) {\n define('punycode', function () {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = punycode;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n // in Rhino or a web browser\n root.punycode = punycode;\n }\n})(this);","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n};","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","var Buffer = require('buffer').Buffer;\n\nmodule.exports = function (buf) {\n // If the buffer is backed by a Uint8Array, a faster version will work\n if (buf instanceof Uint8Array) {\n // If the buffer isn't a subarray, return the underlying ArrayBuffer\n if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n } else if (typeof buf.buffer.slice === 'function') {\n // Otherwise we need to get a proper copy\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n }\n\n if (Buffer.isBuffer(buf)) {\n // This is the slow version that will work with any Buffer\n // implementation (even in old browsers)\n var arrayCopy = new Uint8Array(buf.length);\n var len = buf.length;\n\n for (var i = 0; i < len; i++) {\n arrayCopy[i] = buf[i];\n }\n\n return arrayCopy.buffer;\n } else {\n throw new Error('Argument must be a Buffer');\n }\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n/*<replacement>*/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","/**\n * Module exports.\n */\nmodule.exports = deprecate;\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);","'use strict';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\n}","var capability = require('./capability');\n\nvar inherits = require('inherits');\n\nvar response = require('./response');\n\nvar stream = require('readable-stream');\n\nvar toArrayBuffer = require('to-arraybuffer');\n\nvar IncomingMessage = response.IncomingMessage;\nvar rStates = response.readyStates;\n\nfunction decideMode(preferBinary, useFetch) {\n if (capability.fetch && useFetch) {\n return 'fetch';\n } else if (capability.mozchunkedarraybuffer) {\n return 'moz-chunked-arraybuffer';\n } else if (capability.msstream) {\n return 'ms-stream';\n } else if (capability.arraybuffer && preferBinary) {\n return 'arraybuffer';\n } else if (capability.vbArray && preferBinary) {\n return 'text:vbarray';\n } else {\n return 'text';\n }\n}\n\nvar ClientRequest = module.exports = function (opts) {\n var self = this;\n stream.Writable.call(self);\n self._opts = opts;\n self._body = [];\n self._headers = {};\n if (opts.auth) self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'));\n Object.keys(opts.headers).forEach(function (name) {\n self.setHeader(name, opts.headers[name]);\n });\n var preferBinary;\n var useFetch = true;\n\n if (opts.mode === 'disable-fetch' || 'requestTimeout' in opts && !capability.abortController) {\n // If the use of XHR should be preferred. Not typically needed.\n useFetch = false;\n preferBinary = true;\n } else if (opts.mode === 'prefer-streaming') {\n // If streaming is a high priority but binary compatibility and\n // the accuracy of the 'content-type' header aren't\n preferBinary = false;\n } else if (opts.mode === 'allow-wrong-content-type') {\n // If streaming is more important than preserving the 'content-type' header\n preferBinary = !capability.overrideMimeType;\n } else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n // Use binary if text streaming may corrupt data or the content-type header, or for speed\n preferBinary = true;\n } else {\n throw new Error('Invalid value for opts.mode');\n }\n\n self._mode = decideMode(preferBinary, useFetch);\n self._fetchTimer = null;\n self.on('finish', function () {\n self._onFinish();\n });\n};\n\ninherits(ClientRequest, stream.Writable);\n\nClientRequest.prototype.setHeader = function (name, value) {\n var self = this;\n var lowerName = name.toLowerCase(); // This check is not necessary, but it prevents warnings from browsers about setting unsafe\n // headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n // http-browserify did it, so I will too.\n\n if (unsafeHeaders.indexOf(lowerName) !== -1) return;\n self._headers[lowerName] = {\n name: name,\n value: value\n };\n};\n\nClientRequest.prototype.getHeader = function (name) {\n var header = this._headers[name.toLowerCase()];\n\n if (header) return header.value;\n return null;\n};\n\nClientRequest.prototype.removeHeader = function (name) {\n var self = this;\n delete self._headers[name.toLowerCase()];\n};\n\nClientRequest.prototype._onFinish = function () {\n var self = this;\n if (self._destroyed) return;\n var opts = self._opts;\n var headersObj = self._headers;\n var body = null;\n\n if (opts.method !== 'GET' && opts.method !== 'HEAD') {\n if (capability.arraybuffer) {\n body = toArrayBuffer(Buffer.concat(self._body));\n } else if (capability.blobConstructor) {\n body = new global.Blob(self._body.map(function (buffer) {\n return toArrayBuffer(buffer);\n }), {\n type: (headersObj['content-type'] || {}).value || ''\n });\n } else {\n // get utf8 string\n body = Buffer.concat(self._body).toString();\n }\n } // create flattened list of headers\n\n\n var headersList = [];\n Object.keys(headersObj).forEach(function (keyName) {\n var name = headersObj[keyName].name;\n var value = headersObj[keyName].value;\n\n if (Array.isArray(value)) {\n value.forEach(function (v) {\n headersList.push([name, v]);\n });\n } else {\n headersList.push([name, value]);\n }\n });\n\n if (self._mode === 'fetch') {\n var signal = null;\n var fetchTimer = null;\n\n if (capability.abortController) {\n var controller = new AbortController();\n signal = controller.signal;\n self._fetchAbortController = controller;\n\n if ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n self._fetchTimer = global.setTimeout(function () {\n self.emit('requestTimeout');\n if (self._fetchAbortController) self._fetchAbortController.abort();\n }, opts.requestTimeout);\n }\n }\n\n global.fetch(self._opts.url, {\n method: self._opts.method,\n headers: headersList,\n body: body || undefined,\n mode: 'cors',\n credentials: opts.withCredentials ? 'include' : 'same-origin',\n signal: signal\n }).then(function (response) {\n self._fetchResponse = response;\n\n self._connect();\n }, function (reason) {\n global.clearTimeout(self._fetchTimer);\n if (!self._destroyed) self.emit('error', reason);\n });\n } else {\n var xhr = self._xhr = new global.XMLHttpRequest();\n\n try {\n xhr.open(self._opts.method, self._opts.url, true);\n } catch (err) {\n process.nextTick(function () {\n self.emit('error', err);\n });\n return;\n } // Can't set responseType on really old browsers\n\n\n if ('responseType' in xhr) xhr.responseType = self._mode.split(':')[0];\n if ('withCredentials' in xhr) xhr.withCredentials = !!opts.withCredentials;\n if (self._mode === 'text' && 'overrideMimeType' in xhr) xhr.overrideMimeType('text/plain; charset=x-user-defined');\n\n if ('requestTimeout' in opts) {\n xhr.timeout = opts.requestTimeout;\n\n xhr.ontimeout = function () {\n self.emit('requestTimeout');\n };\n }\n\n headersList.forEach(function (header) {\n xhr.setRequestHeader(header[0], header[1]);\n });\n self._response = null;\n\n xhr.onreadystatechange = function () {\n switch (xhr.readyState) {\n case rStates.LOADING:\n case rStates.DONE:\n self._onXHRProgress();\n\n break;\n }\n }; // Necessary for streaming in Firefox, since xhr.response is ONLY defined\n // in onprogress, not in onreadystatechange with xhr.readyState = 3\n\n\n if (self._mode === 'moz-chunked-arraybuffer') {\n xhr.onprogress = function () {\n self._onXHRProgress();\n };\n }\n\n xhr.onerror = function () {\n if (self._destroyed) return;\n self.emit('error', new Error('XHR error'));\n };\n\n try {\n xhr.send(body);\n } catch (err) {\n process.nextTick(function () {\n self.emit('error', err);\n });\n return;\n }\n }\n};\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\n\n\nfunction statusValid(xhr) {\n try {\n var status = xhr.status;\n return status !== null && status !== 0;\n } catch (e) {\n return false;\n }\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n var self = this;\n if (!statusValid(self._xhr) || self._destroyed) return;\n if (!self._response) self._connect();\n\n self._response._onXHRProgress();\n};\n\nClientRequest.prototype._connect = function () {\n var self = this;\n if (self._destroyed) return;\n self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer);\n\n self._response.on('error', function (err) {\n self.emit('error', err);\n });\n\n self.emit('response', self._response);\n};\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n var self = this;\n\n self._body.push(chunk);\n\n cb();\n};\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n var self = this;\n self._destroyed = true;\n global.clearTimeout(self._fetchTimer);\n if (self._response) self._response._destroyed = true;\n if (self._xhr) self._xhr.abort();else if (self._fetchAbortController) self._fetchAbortController.abort();\n};\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n var self = this;\n\n if (typeof data === 'function') {\n cb = data;\n data = undefined;\n }\n\n stream.Writable.prototype.end.call(self, data, encoding, cb);\n};\n\nClientRequest.prototype.flushHeaders = function () {};\n\nClientRequest.prototype.setTimeout = function () {};\n\nClientRequest.prototype.setNoDelay = function () {};\n\nClientRequest.prototype.setSocketKeepAlive = function () {}; // Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\n\n\nvar unsafeHeaders = ['accept-charset', 'accept-encoding', 'access-control-request-headers', 'access-control-request-method', 'connection', 'content-length', 'cookie', 'cookie2', 'date', 'dnt', 'expect', 'host', 'keep-alive', 'origin', 'referer', 'te', 'trailer', 'transfer-encoding', 'upgrade', 'via'];","var http = require('http');\n\nvar url = require('url');\n\nvar https = module.exports;\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key];\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params);\n return http.request.call(this, params, cb);\n};\n\nhttps.get = function (params, cb) {\n params = validateParams(params);\n return http.get.call(this, params, cb);\n};\n\nfunction validateParams(params) {\n if (typeof params === 'string') {\n params = url.parse(params);\n }\n\n if (!params.protocol) {\n params.protocol = 'https:';\n }\n\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"');\n }\n\n return params;\n}","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n\n for (var i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","export default function(gantt: any) {\r\n\r\n\tgantt.ext = gantt.ext || {};\r\n\r\n\tgantt.ext.export_api = gantt.ext.export_api || {\r\n\r\n\t\t_apiUrl: \"https://export.dhtmlx.com/gantt\",\r\n\r\n\t\tgetNodeJSTransport(url: string): { module: {request: any}, defaultPort: number } {\r\n\t\t\tconst protocol = url.split(\"://\")[0];\r\n\t\t\tlet module;\r\n\t\t\tlet defaultPort;\r\n\t\t\tswitch (protocol) {\r\n\t\t\t\tcase \"https\":\r\n\t\t\t\t\tmodule = require(\"https\");\r\n\t\t\t\t\tdefaultPort = 443;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"http\":\r\n\t\t\t\t\tmodule = require(\"http\");\r\n\t\t\t\t\tdefaultPort = 80;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error(`Unsupported protocol: ${protocol}, url: ${url}`);\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmodule,\r\n\t\t\t\tdefaultPort\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t_prepareConfigPDF(config, type){\r\n\t\t\tif (config && config.raw) {\r\n\t\t\t\tlet previousDateRage = null;\r\n\t\t\t\tif (config.start && config.end){\r\n\t\t\t\t\tpreviousDateRage = {\r\n\t\t\t\t\t\tstart_date: gantt.config.start_date,\r\n\t\t\t\t\t\tend_date: gantt.config.end_date,\r\n\t\t\t\t\t};\r\n\t\t\t\t\tgantt.config.start_date = gantt.date.str_to_date(gantt.config.date_format)(config.start);\r\n\t\t\t\t\tgantt.config.end_date = gantt.date.str_to_date(gantt.config.date_format)(config.end);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig = gantt.mixin(config, {\r\n\t\t\t\t\tname: \"gantt.\" + type, data: gantt.ext.export_api._serializeHtml()\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (previousDateRage){\r\n\t\t\t\t\tgantt.config.start_date = previousDateRage.start_date;\r\n\t\t\t\t\tgantt.config.end_date = previousDateRage.end_date;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconfig = gantt.mixin((config || {}), {\r\n\t\t\t\t\tname: \"gantt.\" + type,\r\n\t\t\t\t\tdata: gantt.ext.export_api._serializeAll(),\r\n\t\t\t\t\tconfig: gantt.config\r\n\t\t\t\t});\r\n\t\t\t\tgantt.ext.export_api._fixColumns(config.config.columns);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.version = gantt.version;\r\n\t\t\tgantt.ext.export_api._sendToExport(config, type);\r\n\t\t},\r\n\r\n\t\texportToPDF(config) {\r\n\t\t\tgantt.ext.export_api._prepareConfigPDF(config, \"pdf\");\r\n\t\t},\r\n\r\n\t\texportToPNG(config) {\r\n\t\t\tgantt.ext.export_api._prepareConfigPDF(config, \"png\");\r\n\t\t},\r\n\r\n\r\n\t\texportToICal(config) {\r\n\t\t\tconfig = gantt.mixin((config || {}), {\r\n\t\t\t\tname: \"gantt.ical\",\r\n\t\t\t\tdata: gantt.ext.export_api._serializePlain().data,\r\n\t\t\t\tversion: gantt.version\r\n\t\t\t});\r\n\t\t\tgantt.ext.export_api._sendToExport(config, \"ical\");\r\n\t\t},\r\n\r\n\t\texportToExcel(config) {\r\n\t\t\tconfig = config || {};\r\n\r\n\t\t\tlet tasks;\r\n\t\t\tlet dates;\r\n\t\t\tlet state;\r\n\t\t\tlet scroll;\r\n\t\t\t// GS-2124, we need to get all task nodes to correctly obtain the colors\r\n\t\t\tconst smartRendering = gantt.config.smart_rendering;\r\n\t\t\tif (config.visual === \"base-colors\"){\r\n\t\t\t\tgantt.config.smart_rendering = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (config.start || config.end) {\r\n\t\t\t\tstate = gantt.getState();\r\n\t\t\t\tdates = [gantt.config.start_date, gantt.config.end_date];\r\n\t\t\t\tscroll = gantt.getScrollState();\r\n\t\t\t\tconst convert = gantt.date.str_to_date(gantt.config.date_format);\r\n\t\t\t\ttasks = gantt.eachTask;\r\n\r\n\t\t\t\tif (config.start){\r\n\t\t\t\t\tgantt.config.start_date = convert(config.start);\r\n\t\t\t\t}\r\n\t\t\t\tif (config.end){\r\n\t\t\t\t\tgantt.config.end_date = convert(config.end);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgantt.render();\r\n\t\t\t\tgantt.config.smart_rendering = smartRendering;\r\n\r\n\t\t\t\tgantt.eachTask = gantt.ext.export_api._eachTaskTimed(gantt.config.start_date, gantt.config.end_date);\r\n\t\t\t} else if (config.visual === \"base-colors\"){\r\n\t\t\t\tgantt.render();\r\n\t\t\t\tgantt.config.smart_rendering = smartRendering;\r\n\t\t\t}\r\n\r\n\t\t\tgantt._no_progress_colors = config.visual === \"base-colors\";\r\n\r\n\t\t\tlet data = null;\r\n\t\t\tif (!gantt.env.isNode) {\r\n\t\t\t\tdata = gantt.ext.export_api._serializeTable(config).data;\r\n\t\t\t}\r\n\r\n\t\t\tconfig = gantt.mixin(config, {\r\n\t\t\t\tname: \"gantt.xlsx\",\r\n\t\t\t\ttitle: \"Tasks\",\r\n\t\t\t\tdata,\r\n\t\t\t\tcolumns: gantt.ext.export_api._serializeColumns({ rawDates: true }),\r\n\t\t\t\tversion: gantt.version\r\n\t\t\t});\r\n\r\n\t\t\tif (config.visual){\r\n\t\t\t\tconfig.scales = gantt.ext.export_api._serializeScales(config);\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._sendToExport(config, \"excel\");\r\n\r\n\t\t\tif (config.start || config.end) {\r\n\t\t\t\tgantt.config.start_date = state.min_date;\r\n\t\t\t\tgantt.config.end_date = state.max_date;\r\n\t\t\t\tgantt.eachTask = tasks;\r\n\r\n\t\t\t\tgantt.render();\r\n\t\t\t\tgantt.scrollTo(scroll.x, scroll.y);\r\n\r\n\t\t\t\tgantt.config.start_date = dates[0];\r\n\t\t\t\tgantt.config.end_date = dates[1];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\texportToJSON(config) {\r\n\t\t\tconfig = gantt.mixin((config || {}), {\r\n\t\t\t\tname: \"gantt.json\",\r\n\t\t\t\tdata: gantt.ext.export_api._serializeAll(),\r\n\t\t\t\tconfig: gantt.config,\r\n\t\t\t\tcolumns: gantt.ext.export_api._serializeColumns(),\r\n\t\t\t\tworktime: gantt.ext.export_api._getWorktimeSettings(),\r\n\t\t\t\tversion: gantt.version\r\n\t\t\t});\r\n\t\t\tgantt.ext.export_api._sendToExport(config, \"json\");\r\n\t\t},\r\n\r\n\r\n\t\timportFromExcel(config) {\r\n\t\t\ttry {\r\n\t\t\t\tconst formData = config.data;\r\n\t\t\t\tif (formData instanceof FormData) {\r\n\r\n\t\t\t\t} else if (formData instanceof File) {\r\n\t\t\t\t\tconst data = new FormData();\r\n\t\t\t\t\tdata.append(\"file\", formData);\r\n\t\t\t\t\tconfig.data = data;\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {}\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tgantt.ext.export_api._nodejsImportExcel(config);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.ext.export_api._sendImportAjaxExcel(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\timportFromMSProject(config) {\r\n\t\t\tconst formData = config.data;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tif (formData instanceof FormData) {\r\n\r\n\t\t\t\t} else if (formData instanceof File) {\r\n\t\t\t\t\tconst data = new FormData();\r\n\t\t\t\t\tdata.append(\"file\", formData);\r\n\t\t\t\t\tconfig.data = data;\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {}\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tgantt.ext.export_api._nodejsImportMSP(config);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.ext.export_api._sendImportAjaxMSP(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\timportFromPrimaveraP6(config) {\r\n\t\t\tconfig.type = \"primaveraP6-parse\";\r\n\t\t\treturn gantt.importFromMSProject(config);\r\n\t\t},\r\n\t\texportToMSProject(config) {\r\n\t\t\tconfig = config || {};\r\n\t\t\tconfig.skip_circular_links = config.skip_circular_links === undefined ? true : !!config.skip_circular_links;\r\n\r\n\t\t\tconst oldXmlFormat = gantt.templates.xml_format;\r\n\t\t\tconst oldFormatDate = gantt.templates.format_date;\r\n\t\t\tconst oldXmlDate = gantt.config.xml_date;\r\n\t\t\tconst oldDateFormat = gantt.config.date_format;\r\n\r\n\t\t\tconst exportServiceDateFormat = \"%d-%m-%Y %H:%i:%s\";\r\n\r\n\t\t\tgantt.config.xml_date = exportServiceDateFormat;\r\n\t\t\tgantt.config.date_format = exportServiceDateFormat;\r\n\t\t\tgantt.templates.xml_format = gantt.date.date_to_str(exportServiceDateFormat);\r\n\t\t\tgantt.templates.format_date = gantt.date.date_to_str(exportServiceDateFormat);\r\n\t\t\tconst data = gantt.ext.export_api._serializeAll();\r\n\r\n\t\t\tgantt.ext.export_api._customProjectProperties(data, config);\r\n\r\n\t\t\tgantt.ext.export_api._customTaskProperties(data, config);\r\n\r\n\t\t\tif (config.skip_circular_links) {\r\n\t\t\t\tgantt.ext.export_api._clearRecLinks(data);\r\n\t\t\t}\r\n\r\n\t\t\tconfig = gantt.ext.export_api._exportConfig(data, config);\r\n\r\n\t\t\tgantt.ext.export_api._sendToExport(config, config.type || \"msproject\");\r\n\t\t\tgantt.config.xml_date = oldXmlDate;\r\n\t\t\tgantt.config.date_format = oldDateFormat;\r\n\t\t\tgantt.templates.xml_format = oldXmlFormat;\r\n\t\t\tgantt.templates.format_date = oldFormatDate;\r\n\r\n\t\t\tgantt.config.$custom_data = null;\r\n\t\t\tgantt.config.custom = null;\r\n\t\t},\r\n\r\n\t\texportToPrimaveraP6(config) {\r\n\t\t\tconfig = config || {};\r\n\t\t\tconfig.type = \"primaveraP6\";\r\n\t\t\treturn gantt.exportToMSProject(config);\r\n\t\t},\r\n\r\n\t\t_nodejsImportExcel(config) {\r\n\t\t\t// tslint:disable-next-line no-implicit-dependencies\r\n\t\t\tconst formDataInstance = require(\"form-data\");\r\n\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst network = gantt.ext.export_api.getNodeJSTransport(url);\r\n\t\t\tconst parts1 = url.split(\"://\")[1];\r\n\t\t\tconst parts2 = parts1.split(\"/\")[0].split(\":\");\r\n\t\t\tconst parts3 = parts1.split(\"/\");\r\n\r\n\t\t\tconst hostname = parts2[0];\r\n\t\t\tconst port = parts2[1] || network.defaultPort;\r\n\t\t\tconst path = \"/\" + parts3.slice(1).join(\"/\");\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\thostname,\r\n\t\t\t\tport,\r\n\t\t\t\tpath,\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst formData = new formDataInstance();\r\n\t\t\tformData.append(\"file\", config.data);\r\n\t\t\tformData.append(\"type\", \"excel-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify({\r\n\t\t\t\tsheet: config.sheet || 0\r\n\t\t\t}));\r\n\r\n\t\t\toptions.headers[\"Content-Type\"] = formData.getHeaders()[\"content-type\"];\r\n\r\n\t\t\tconst req = network.module.request(options, function(res) {\r\n\t\t\t\tlet resData = \"\";\r\n\t\t\t\tres.on(\"data\", function(d) {\r\n\t\t\t\t\tresData += d;\r\n\t\t\t\t});\r\n\t\t\t\tres.on(\"end\", function(d) {\r\n\t\t\t\t\tconfig.callback(resData.toString());\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treq.on(\"error\", function(error) {\r\n\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t\t\tformData.pipe(req);\r\n\t\t},\r\n\t\t_nodejsImportMSP(config) {\r\n\r\n\t\t\t// tslint:disable-next-line no-implicit-dependencies\r\n\t\t\tconst formDataInstance = require(\"form-data\");\r\n\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst network = gantt.ext.export_api.getNodeJSTransport(url);\r\n\t\t\tconst parts1 = url.split(\"://\")[1];\r\n\t\t\tconst parts2 = parts1.split(\"/\")[0].split(\":\");\r\n\t\t\tconst parts3 = parts1.split(\"/\");\r\n\r\n\t\t\tconst hostname = parts2[0];\r\n\t\t\tconst port = parts2[1] || network.defaultPort;\r\n\t\t\tconst path = \"/\" + parts3.slice(1).join(\"/\");\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\thostname,\r\n\t\t\t\tport,\r\n\t\t\t\tpath,\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst settings = {\r\n\t\t\t\tdurationUnit: config.durationUnit || undefined,\r\n\t\t\t\tprojectProperties: config.projectProperties || undefined,\r\n\t\t\t\ttaskProperties: config.taskProperties || undefined,\r\n\t\t\t};\r\n\r\n\t\t\tconst formData = new formDataInstance();\r\n\t\t\tformData.append(\"file\", config.data);\r\n\t\t\tformData.append(\"type\", config.type || \"msproject-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify(settings), options);\r\n\r\n\t\t\toptions.headers[\"Content-Type\"] = formData.getHeaders()[\"content-type\"];\r\n\r\n\t\t\tconst req = network.module.request(options, function(res) {\r\n\t\t\t\tlet resData = \"\";\r\n\t\t\t\tres.on(\"data\", function(d) {\r\n\t\t\t\t\tresData += d;\r\n\t\t\t\t});\r\n\t\t\t\tres.on(\"end\", function(d) {\r\n\t\t\t\t\tconfig.callback(resData.toString());\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treq.on(\"error\", function(error) {\r\n\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t\t\tformData.pipe(req);\r\n\t\t},\r\n\r\n\r\n\r\n\t\t_fixColumns(columns) {\r\n\t\t\tfor (let i = 0; i < columns.length; i++) {\r\n\t\t\t\tcolumns[i].label = columns[i].label || gantt.locale.labels[\"column_\" + columns[i].name];\r\n\t\t\t\tif (typeof columns[i].width === \"string\") {\r\n\t\t\t\t\tcolumns[i].width = columns[i].width * 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_xdr(url, pack, cb) {\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tgantt.ext.export_api._nodejsPostRequest(url, pack, cb);\r\n\t\t\t} else {\r\n\t\t\t\tgantt.ajax.post(url, pack, cb);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_nodejsPostRequest(url, pack, cb){\r\n\t\t\tconst network = gantt.ext.export_api.getNodeJSTransport(url);\r\n\r\n\t\t\tconst parts1 = url.split(\"://\")[1];\r\n\t\t\tconst parts2 = parts1.split(\"/\")[0].split(\":\");\r\n\t\t\tconst parts3 = parts1.split(\"/\");\r\n\r\n\t\t\tconst hostname = parts2[0];\r\n\t\t\tconst port = parts2[1] || network.defaultPort;\r\n\t\t\tconst path = \"/\" + parts3.slice(1).join(\"/\");\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\thostname,\r\n\t\t\t\tport,\r\n\t\t\t\tpath,\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\t\"Content-Length\": JSON.stringify(pack).length\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst req = network.module.request(options, function(res) {\r\n\t\t\t\tconst resData = [];\r\n\t\t\t\tres.on(\"data\", function(d) {\r\n\t\t\t\t\tresData.push(d);\r\n\t\t\t\t});\r\n\t\t\t\tres.on(\"end\", function(d) {\r\n\t\t\t\t\tcb(Buffer.concat(resData));\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treq.on(\"error\", function(error) {\r\n\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\r\n\t\t\treq.write(JSON.stringify(pack));\r\n\t\t\treq.end();\r\n\t\t},\r\n\r\n\t\t_markColumns(base) {\r\n\t\t\tconst columns = base.config.columns;\r\n\t\t\tif (columns){\r\n\t\t\t\tfor (let i = 0; i < columns.length; i++) {\r\n\t\t\t\t\tif (columns[i].template){\r\n\t\t\t\t\t\tcolumns[i].$template = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_sendImportAjaxExcel(config) {\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst store = config.store || 0;\r\n\t\t\tconst formData = config.data;\r\n\t\t\tconst callback = config.callback;\r\n\r\n\t\t\tformData.append(\"type\", \"excel-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify({\r\n\t\t\t\tsheet: config.sheet || 0\r\n\t\t\t}));\r\n\r\n\t\t\tif (store){\r\n\t\t\t\tformData.append(\"store\", store);\r\n\t\t\t}\r\n\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\t\t\txhr.onreadystatechange = function(e) {\r\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 0) {// network error\r\n\t\t\t\t\tif (callback) {\r\n\t\t\t\t\t\tcallback(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.onload = function() {\r\n\t\t\t\tconst fail = xhr.status > 400;\r\n\t\t\t\tlet info = null;\r\n\r\n\t\t\t\tif (!fail) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinfo = JSON.parse(xhr.responseText);\r\n\t\t\t\t\t} catch (e) { }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback(info);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.open(\"POST\", url, true);\r\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\t\txhr.send(formData);\r\n\t\t},\r\n\r\n\r\n\t\t_ajaxToExport(data, type, callback) {\r\n\t\t\tdelete data.callback;\r\n\r\n\t\t\tconst url = data.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst pack = \"type=\" + type + \"&store=1&data=\" + encodeURIComponent(JSON.stringify(data));\r\n\r\n\t\t\tconst cb = function(loader) {\r\n\t\t\t\tconst xdoc = loader.xmlDoc || loader;\r\n\t\t\t\tconst fail = xdoc.status > 400;\r\n\t\t\t\tlet info = null;\r\n\r\n\t\t\t\tif (!fail) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinfo = JSON.parse(xdoc.responseText);\r\n\t\t\t\t\t} catch (e) { }\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t};\r\n\r\n\t\t\tgantt.ext.export_api._xdr(url, pack, cb);\r\n\t\t},\r\n\t\t_serializableGanttConfig(config) {\r\n\t\t\tconst result = gantt.mixin({}, config);\r\n\r\n\t\t\tif (result.columns) {\r\n\t\t\t\tresult.columns = result.columns.map(function(col) {\r\n\t\t\t\t\tconst copy = gantt.mixin({}, col);\r\n\t\t\t\t\tdelete copy.editor;\r\n\t\t\t\t\treturn copy;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdelete result.editor_types;\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t_sendToExport(data, type) {\r\n\t\t\tconst convert = gantt.date.date_to_str(gantt.config.date_format || gantt.config.xml_date);\r\n\t\t\tif (data.config) {\r\n\t\t\t\tdata.config = gantt.copy(gantt.ext.export_api._serializableGanttConfig(data.config));\r\n\t\t\t\tgantt.ext.export_api._markColumns(data, type);\r\n\r\n\t\t\t\tif (data.config.start_date && data.config.end_date) {\r\n\t\t\t\t\tif (data.config.start_date instanceof Date) {\r\n\t\t\t\t\t\tdata.config.start_date = convert(data.config.start_date);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (data.config.end_date instanceof Date) {\r\n\t\t\t\t\t\tdata.config.end_date = convert(data.config.end_date);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (gantt.env.isNode) {\r\n\t\t\t\tconst url = data.server || gantt.ext.export_api._apiUrl;\r\n\t\t\t\tconst pack = {\r\n\t\t\t\t\ttype,\r\n\t\t\t\t\tstore: 0,\r\n\t\t\t\t\tdata: JSON.stringify(data)\r\n\t\t\t\t};\r\n\t\t\t\tconst callbackFunction = data.callback || function(response) {\r\n\t\t\t\t\t// tslint:disable-next-line no-console\r\n\t\t\t\t\tconsole.log(response);\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn gantt.ext.export_api._xdr(url, pack, callbackFunction);\r\n\t\t\t}\r\n\r\n\t\t\tif (data.callback) {\r\n\t\t\t\treturn gantt.ext.export_api._ajaxToExport(data, type, data.callback);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tconst form = gantt.ext.export_api._createHiddenForm();\r\n\t\t\tform.firstChild.action = data.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\t\tform.firstChild.childNodes[1].value = type;\r\n\t\t\tform.firstChild.submit();\r\n\t\t},\r\n\r\n\t\t_createHiddenForm() {\r\n\t\t\tif (!gantt.ext.export_api._hidden_export_form) {\r\n\t\t\t\tconst t = gantt.ext.export_api._hidden_export_form = document.createElement(\"div\");\r\n\t\t\t\tt.style.display = \"none\";\r\n\t\t\t\tt.innerHTML = \"<form method='POST' target='_blank'><textarea name='data' style='width:0px; height:0px;' readonly='true'></textarea><input type='hidden' name='type' value=''></form>\";\r\n\t\t\t\tdocument.body.appendChild(t);\r\n\t\t\t}\r\n\t\t\treturn gantt.ext.export_api._hidden_export_form;\r\n\t\t},\r\n\r\n\r\n\t\t_copyObjectBase(obj) {\r\n\t\t\tconst copy = {\r\n\t\t\t\tstart_date: undefined,\r\n\t\t\t\tend_date: undefined\r\n\t\t\t};\r\n\t\t\tfor (const key in obj) {\r\n\t\t\t\tif (key.charAt(0) === \"$\"){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tcopy[key] = obj[key];\r\n\t\t\t}\r\n\t\t\tconst formatDate = gantt.templates.xml_format || gantt.templates.format_date;\r\n\r\n\t\t\tcopy.start_date = formatDate(copy.start_date);\r\n\t\t\tif (copy.end_date){\r\n\t\t\t\tcopy.end_date = formatDate(copy.end_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\r\n\t\t_color_box: null,\r\n\t\t_color_hash: {},\r\n\r\n\t\t_getStyles(css) {\r\n\t\t\tif (!gantt.ext.export_api._color_box) {\r\n\t\t\t\tgantt.ext.export_api._color_box = document.createElement(\"DIV\");\r\n\t\t\t\tgantt.ext.export_api._color_box.style.cssText = \"position:absolute; display:none;\";\r\n\t\t\t\tdocument.body.appendChild(gantt.ext.export_api._color_box);\r\n\t\t\t}\r\n\t\t\tif (gantt.ext.export_api._color_hash[css]){\r\n\t\t\t\treturn gantt.ext.export_api._color_hash[css];\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._color_box.className = css;\r\n\t\t\tconst color = gantt.ext.export_api._getColor(gantt.ext.export_api._color_box, \"color\");\r\n\t\t\tconst backgroundColor = gantt.ext.export_api._getColor(gantt.ext.export_api._color_box, \"backgroundColor\");\r\n\t\t\treturn (gantt.ext.export_api._color_hash[css] = color + \";\" + backgroundColor);\r\n\t\t},\r\n\r\n\r\n\t\t_getMinutesWorktimeSettings(parsedRanges) {\r\n\t\t\tconst minutes = [];\r\n\t\t\tparsedRanges.forEach(function(range) {\r\n\t\t\t\tminutes.push(range.startMinute);\r\n\t\t\t\tminutes.push(range.endMinute);\r\n\t\t\t});\r\n\t\t\treturn minutes;\r\n\t\t},\r\n\r\n\t\t_getWorktimeSettings() {\r\n\r\n\t\t\tconst defaultWorkTimes = {\r\n\t\t\t\thours: [0, 24],\r\n\t\t\t\tminutes: null,\r\n\t\t\t\tdates: { 0: true, 1: true, 2: true, 3: true, 4: true, 5: true, 6: true }\r\n\t\t\t};\r\n\r\n\t\t\tlet time;\r\n\t\t\tif (!gantt.config.work_time) {\r\n\t\t\t\ttime = defaultWorkTimes;\r\n\t\t\t} else {\r\n\t\t\t\tconst wTime = gantt._working_time_helper;\r\n\t\t\t\tif (wTime && wTime.get_calendar) {\r\n\t\t\t\t\ttime = wTime.get_calendar();\r\n\t\t\t\t} else if (wTime) {\r\n\t\t\t\t\ttime = {\r\n\t\t\t\t\t\thours: wTime.hours,\r\n\t\t\t\t\t\tminutes: null,\r\n\t\t\t\t\t\tdates: wTime.dates\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (gantt.config.worktimes && gantt.config.worktimes.global) {\r\n\t\t\t\t\tconst settings = gantt.config.worktimes.global;\r\n\r\n\t\t\t\t\tif (settings.parsed) {\r\n\t\t\t\t\t\tconst minutes = gantt.ext.export_api._getMinutesWorktimeSettings(settings.parsed.hours);\r\n\t\t\t\t\t\ttime = {\r\n\t\t\t\t\t\t\thours: null,\r\n\t\t\t\t\t\t\tminutes,\r\n\t\t\t\t\t\t\tdates: {}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tfor (const i in settings.parsed.dates) {\r\n\t\t\t\t\t\t\tif (Array.isArray(settings.parsed.dates[i])) {\r\n\t\t\t\t\t\t\t\ttime.dates[i] = gantt.ext.export_api._getMinutesWorktimeSettings(settings.parsed.dates[i]);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttime.dates[i] = settings.parsed.dates[i];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttime = {\r\n\t\t\t\t\t\t\thours: settings.hours,\r\n\t\t\t\t\t\t\tminutes: null,\r\n\t\t\t\t\t\t\tdates: settings.dates\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttime = defaultWorkTimes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn time;\r\n\t\t},\r\n\r\n\r\n\t\t_eachTaskTimed(start, end) {\r\n\t\t\treturn function(code, parent, master) {\r\n\t\t\t\tparent = parent || gantt.config.root_id;\r\n\t\t\t\tmaster = master || gantt;\r\n\r\n\t\t\t\tconst branch = gantt.getChildren(parent);\r\n\t\t\t\tif (branch){\r\n\t\t\t\t\tfor (let i = 0; i < branch.length; i++) {\r\n\t\t\t\t\t\tconst item = gantt._pull[branch[i]];\r\n\t\t\t\t\t\tif ((!start || item.end_date > start) && (!end || item.start_date < end)){\r\n\t\t\t\t\t\t\tcode.call(master, item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (gantt.hasChild(item.id)){\r\n\t\t\t\t\t\t\tgantt.eachTask(code, item.id, master);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\r\n\t\t// patch broken json serialization in gantt 2.1\r\n\t\t_originalCopyObject: gantt.json._copyObject,\r\n\r\n\r\n\t\t_copyObjectPlain(obj) {\r\n\t\t\tconst text = gantt.templates.task_text(obj.start_date, obj.end_date, obj);\r\n\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectBase(obj);\r\n\t\t\tcopy.text = text || copy.text;\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_getColor(node, style) {\r\n\t\t\tconst value = node.currentStyle ? node.currentStyle[style] : getComputedStyle(node, null)[style];\r\n\t\t\tconst rgb = value.replace(/\\s/g, \"\").match(/^rgba?\\((\\d+),(\\d+),(\\d+)/i);\r\n\t\t\treturn ((rgb && rgb.length === 4) ?\r\n\t\t\t\t(\"0\" + parseInt(rgb[1], 10).toString(16)).slice(-2) +\r\n\t\t\t\t(\"0\" + parseInt(rgb[2], 10).toString(16)).slice(-2) +\r\n\t\t\t\t(\"0\" + parseInt(rgb[3], 10).toString(16)).slice(-2) : value).replace(\"#\", \"\");\r\n\t\t},\r\n\r\n\r\n\t\t// excel serialization\r\n\t\t_copyObjectTable(obj) {\r\n\t\t\t// Excel interprets UTC time as local time in every timezone, send local time instead of actual UTC time.\r\n\t\t\t// https://github.com/SheetJS/js-xlsx/issues/126#issuecomment-60531614\r\n\t\t\tconst toISOstring = gantt.date.date_to_str(\"%Y-%m-%dT%H:%i:%s.000Z\");\r\n\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectColumns(obj, gantt.ext.export_api._copyObjectPlain(obj));\r\n\t\t\tif (copy.start_date){\r\n\t\t\t\tcopy.start_date = toISOstring(obj.start_date);\r\n\t\t\t}\r\n\t\t\tif (copy.end_date){\r\n\t\t\t\tcopy.end_date = toISOstring(obj.end_date);\r\n\t\t\t}\r\n\r\n\t\t\t// private gantt._day_index_by_date was replaced by public gantt.columnIndexByDate in gantt 5.0\r\n\t\t\tconst getDayIndex = gantt._day_index_by_date ? gantt._day_index_by_date : gantt.columnIndexByDate;\r\n\r\n\t\t\tcopy.$start = getDayIndex.call(gantt, obj.start_date);\r\n\t\t\tcopy.$end = getDayIndex.call(gantt, obj.end_date);\r\n\r\n\t\t\t// GS-2100. Correct bar position considering hidden cells\r\n\t\t\tlet hiddenCells = 0;\r\n\t\t\tconst scaleCellsWidth = gantt.getScale().width;\r\n\t\t\tif (scaleCellsWidth.indexOf(0) > -1) {\r\n\t\t\t\tlet i = 0;\r\n\t\t\t\tfor (i; i < copy.$start; i++) {\r\n\t\t\t\t\tif (!scaleCellsWidth[i]) {\r\n\t\t\t\t\t\thiddenCells++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcopy.$start -= hiddenCells;\r\n\r\n\t\t\t\tfor (i; i < copy.$end; i++) {\r\n\t\t\t\t\tif (!scaleCellsWidth[i]) {\r\n\t\t\t\t\t\thiddenCells++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcopy.$end -= hiddenCells;\r\n\t\t\t}\r\n\r\n\t\t\tcopy.$level = obj.$level;\r\n\t\t\tcopy.$type = obj.$rendered_type;\r\n\r\n\t\t\tconst tmps = gantt.templates;\r\n\t\t\tcopy.$text = tmps.task_text(obj.start, obj.end_date, obj);\r\n\t\t\tcopy.$left = tmps.leftside_text ? tmps.leftside_text(obj.start, obj.end_date, obj) : \"\";\r\n\t\t\tcopy.$right = tmps.rightside_text ? tmps.rightside_text(obj.start, obj.end_date, obj) : \"\";\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_copyObjectColors(obj) {\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectTable(obj);\r\n\r\n\t\t\tconst node = gantt.getTaskNode(obj.id);\r\n\t\t\tif (node && node.firstChild) {\r\n\t\t\t\tlet color = gantt.ext.export_api._getColor((gantt._no_progress_colors ? node : node.firstChild), \"backgroundColor\");\r\n\t\t\t\tif (color === \"363636\"){\r\n\t\t\t\t\tcolor = gantt.ext.export_api._getColor(node, \"backgroundColor\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcopy.$color = color;\r\n\t\t\t} else if (obj.color){\r\n\t\t\t\tcopy.$color = obj.color;\r\n\t\t\t}\r\n\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_copyObjectColumns(obj, copy) {\r\n\t\t\tfor (let i = 0; i < gantt.config.columns.length; i++) {\r\n\t\t\t\tconst ct = gantt.config.columns[i].template;\r\n\t\t\t\tif (ct) {\r\n\t\t\t\t\tlet val = ct(obj);\r\n\t\t\t\t\tif (val instanceof Date){\r\n\t\t\t\t\t\tval = gantt.templates.date_grid(val, obj);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcopy[\"_\" + i] = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\t\t_copyObjectAll(obj) {\r\n\t\t\tconst copy = gantt.ext.export_api._copyObjectBase(obj);\r\n\r\n\t\t\tconst templates = [\r\n\t\t\t\t\"leftside_text\",\r\n\t\t\t\t\"rightside_text\",\r\n\t\t\t\t\"task_text\",\r\n\t\t\t\t\"progress_text\",\r\n\t\t\t\t\"task_class\"\r\n\t\t\t];\r\n\r\n\t\t\t// serialize all text templates\r\n\t\t\tfor (let i = 0; i < templates.length; i++) {\r\n\t\t\t\tconst template = gantt.templates[templates[i]];\r\n\t\t\t\tif (template){\r\n\t\t\t\t\tcopy[\"$\" + i] = template(obj.start_date, obj.end_date, obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._copyObjectColumns(obj, copy);\r\n\t\t\tcopy.open = obj.$open;\r\n\t\t\treturn copy;\r\n\t\t},\r\n\r\n\r\n\t\t_serializeHtml() {\r\n\t\t\tconst smartScales = gantt.config.smart_scales;\r\n\t\t\tconst smartRendering = gantt.config.smart_rendering;\r\n\t\t\tif (smartScales || smartRendering) {\r\n\t\t\t\tgantt.config.smart_rendering = false;\r\n\t\t\t\tgantt.config.smart_scales = false;\r\n\t\t\t\tgantt.render();\r\n\t\t\t}\r\n\r\n\t\t\tconst html = gantt.$container.parentNode.innerHTML;\r\n\r\n\t\t\tif (smartScales || smartRendering) {\r\n\t\t\t\tgantt.config.smart_scales = smartScales;\r\n\t\t\t\tgantt.config.smart_rendering = smartRendering;\r\n\t\t\t\tgantt.render();\r\n\t\t\t}\r\n\r\n\t\t\treturn html;\r\n\t\t},\r\n\r\n\t\t_serializeAll() {\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._copyObjectAll;\r\n\t\t\tconst data = gantt.ext.export_api._exportSerialize();\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._originalCopyObject;\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t_serializePlain() {\r\n\t\t\tconst oldXmlFormat = gantt.templates.xml_format;\r\n\t\t\tconst oldFormatDate = gantt.templates.format_date;\r\n\t\t\tgantt.templates.xml_format = gantt.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\t\t\tgantt.templates.format_date = gantt.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._copyObjectPlain;\r\n\r\n\t\t\tconst data = gantt.ext.export_api._exportSerialize();\r\n\r\n\t\t\tgantt.templates.xml_format = oldXmlFormat;\r\n\t\t\tgantt.templates.format_date = oldFormatDate;\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._originalCopyObject;\r\n\r\n\t\t\tdelete data.links;\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t_getRaw() {\r\n\t\t\t// support Gantt < 5.0\r\n\t\t\tif (gantt._scale_helpers) {\r\n\t\t\t\tconst scales = gantt._get_scales();\r\n\t\t\t\tconst\tminWidth = gantt.config.min_column_width;\r\n\t\t\t\tconst\tautosizeMinWidth = gantt._get_resize_options().x ? Math.max(gantt.config.autosize_min_width, 0) : gantt.config.$task.offsetWidth;\r\n\t\t\t\tconst\theight = gantt.config.config.scale_height - 1;\r\n\t\t\t\treturn gantt._scale_helpers.prepareConfigs(scales, minWidth, autosizeMinWidth, height);\r\n\t\t\t} else { // Gantt >= 5.0\r\n\t\t\t\tconst timeline = gantt.$ui.getView(\"timeline\");\r\n\t\t\t\tif (timeline) {\r\n\t\t\t\t\tlet availWidth = timeline.$config.width;\r\n\t\t\t\t\tif (gantt.config.autosize === \"x\" || gantt.config.autosize === \"xy\") {\r\n\t\t\t\t\t\tavailWidth = Math.max(gantt.config.autosize_min_width, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst state = gantt.getState();\r\n\t\t\t\t\tconst\tscales = timeline._getScales();\r\n\t\t\t\t\tconst\tminWidth = gantt.config.min_column_width;\r\n\t\t\t\t\tconst\theight = gantt.config.scale_height - 1;\r\n\t\t\t\t\tconst\trtl = gantt.config.rtl;\r\n\t\t\t\t\treturn timeline.$scaleHelper.prepareConfigs(scales, minWidth, availWidth, height, state.min_date, state.max_date, rtl);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_serializeTable(config) {\r\n\t\t\tgantt.json._copyObject = config.visual ? gantt.ext.export_api._copyObjectColors : gantt.ext.export_api._copyObjectTable;\r\n\t\t\tconst data = gantt.ext.export_api._exportSerialize();\r\n\t\t\tgantt.json._copyObject = gantt.ext.export_api._originalCopyObject;\r\n\r\n\t\t\tdelete data.links;\r\n\r\n\t\t\tif (config.cellColors) {\r\n\t\t\t\tconst css = gantt.templates.timeline_cell_class || gantt.templates.task_cell_class;\r\n\t\t\t\tif (css) {\r\n\t\t\t\t\tconst raw = gantt.ext.export_api._getRaw();\r\n\t\t\t\t\tlet steps = raw[0].trace_x;\r\n\t\t\t\t\tfor (let i = 1; i < raw.length; i++){\r\n\t\t\t\t\t\tif (raw[i].trace_x.length > steps.length){\r\n\t\t\t\t\t\t\tsteps = raw[i].trace_x;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (let i = 0; i < data.data.length; i++) {\r\n\t\t\t\t\t\tdata.data[i].styles = [];\r\n\t\t\t\t\t\tconst task = gantt.getTask(data.data[i].id);\r\n\t\t\t\t\t\tfor (let j = 0; j < steps.length; j++) {\r\n\t\t\t\t\t\t\tconst date = steps[j];\r\n\t\t\t\t\t\t\tconst cellCss = css(task, date);\r\n\t\t\t\t\t\t\tif (cellCss){\r\n\t\t\t\t\t\t\t\tdata.data[i].styles.push({ index: j, styles: gantt.ext.export_api._getStyles(cellCss) });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t_serializeScales(config) {\r\n\t\t\tconst scales = [];\r\n\t\t\tconst raw = gantt.ext.export_api._getRaw();\r\n\r\n\t\t\tlet min = Infinity;\r\n\t\t\tlet max = 0;\r\n\t\t\tfor (let i = 0; i < raw.length; i++) {\r\n\t\t\t\tmin = Math.min(min, raw[i].col_width);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < raw.length; i++) {\r\n\t\t\t\tlet start = 0;\r\n\t\t\t\tlet end = 0;\r\n\t\t\t\tconst row = [];\r\n\r\n\t\t\t\tscales.push(row);\r\n\t\t\t\tconst step = raw[i];\r\n\t\t\t\tmax = Math.max(max, step.trace_x.length);\r\n\t\t\t\tconst template = step.format || step.template || (step.date ? gantt.date.date_to_str(step.date) : gantt.config.date_scale);\r\n\r\n\t\t\t\tfor (let j = 0; j < step.trace_x.length; j++) {\r\n\t\t\t\t\tconst date = step.trace_x[j];\r\n\t\t\t\t\tend = start + Math.round(step.width[j] / min);\r\n\r\n\t\t\t\t\tconst scaleCell = { text: template(date), start, end, styles: \"\" };\r\n\r\n\t\t\t\t\tif (config.cellColors) {\r\n\t\t\t\t\t\tconst css = step.css || gantt.templates.scaleCell_class;\r\n\t\t\t\t\t\tif (css) {\r\n\t\t\t\t\t\t\tconst scaleCss = css(date);\r\n\t\t\t\t\t\t\tif (scaleCss){\r\n\t\t\t\t\t\t\t\tscaleCell.styles = gantt.ext.export_api._getStyles(scaleCss);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.push(scaleCell);\r\n\t\t\t\t\tstart = end;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn { width: max, height: scales.length, data: scales };\r\n\t\t},\r\n\r\n\t\t_serializeColumns(config) {\r\n\t\t\tgantt.exportMode = true;\r\n\r\n\t\t\tconst columns = [];\r\n\t\t\tconst cols = gantt.config.columns;\r\n\r\n\t\t\tlet ccount = 0;\r\n\t\t\tfor (let i = 0; i < cols.length; i++) {\r\n\t\t\t\tif (cols[i].name === \"add\" || cols[i].name === \"buttons\") {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumns[ccount] = {\r\n\t\t\t\t\tid: ((cols[i].template) ? (\"_\" + i) : cols[i].name),\r\n\t\t\t\t\theader: cols[i].label || gantt.locale.labels[\"column_\" + cols[i].name],\r\n\t\t\t\t\twidth: (cols[i].width ? Math.floor(cols[i].width / 4) : \"\")\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (cols[i].name === \"duration\"){\r\n\t\t\t\t\tcolumns[ccount].type = \"number\";\r\n\t\t\t\t}\r\n\t\t\t\tif (cols[i].name === \"start_date\" || cols[i].name === \"end_date\") {\r\n\t\t\t\t\tcolumns[ccount].type = \"date\";\r\n\t\t\t\t\tif (config && config.rawDates){\r\n\t\t\t\t\t\tcolumns[ccount].id = cols[i].name;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tccount++;\r\n\t\t\t}\r\n\r\n\t\t\tgantt.exportMode = false;\r\n\t\t\treturn columns;\r\n\t\t},\r\n\r\n\t\t_exportSerialize() {\r\n\t\t\tgantt.exportMode = true;\r\n\r\n\t\t\tconst xmlFormat = gantt.templates.xml_format;\r\n\t\t\tconst formatDate = gantt.templates.format_date;\r\n\r\n\t\t\t// use configuration date format for serialization so date could be parsed on the export\r\n\t\t\t// required when custom format date function is defined\r\n\t\t\tgantt.templates.xml_format =\r\n\t\t\t\tgantt.templates.format_date =\r\n\t\t\t\tgantt.date.date_to_str(gantt.config.date_format || gantt.config.xml_date);\r\n\r\n\t\t\tconst data = gantt.serialize();\r\n\r\n\t\t\tgantt.templates.xml_format = xmlFormat;\r\n\t\t\tgantt.templates.format_date = formatDate;\r\n\t\t\tgantt.exportMode = false;\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\r\n\t\t_setLevel(data) {\r\n\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\t\tif (data[i].parent == 0) {\r\n\t\t\t\t\tdata[i]._lvl = 1;\r\n\t\t\t\t}\r\n\t\t\t\tfor (let j = i + 1; j < data.length; j++) {\r\n\t\t\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\t\t\tif (data[i].id == data[j].parent) {\r\n\t\t\t\t\t\tdata[j]._lvl = data[i]._lvl + 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_clearLevel(data) {\r\n\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\tdelete data[i]._lvl;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_clearRecLinks(data) {\r\n\t\t\tgantt.ext.export_api._setLevel(data.data);\r\n\t\t\tconst tasks = {};\r\n\t\t\tfor (let i = 0; i < data.data.length; i++) {\r\n\t\t\t\ttasks[data.data[i].id] = data.data[i];\r\n\t\t\t}\r\n\r\n\t\t\tconst links = {};\r\n\r\n\t\t\tfor (let i = 0; i < data.links.length; i++) {\r\n\t\t\t\tconst link = data.links[i];\r\n\t\t\t\tif (gantt.isTaskExists(link.source) && gantt.isTaskExists(link.target) &&\r\n\t\t\t\t\ttasks[link.source] && tasks[link.target]) {\r\n\t\t\t\t\tlinks[link.id] = link;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (const j in links) {\r\n\t\t\t\tgantt.ext.export_api._makeLinksSameLevel(links[j], tasks);\r\n\t\t\t}\r\n\r\n\t\t\tconst skippedLinks = {};\r\n\t\t\tfor (const j in tasks) {\r\n\t\t\t\tgantt.ext.export_api._clearCircDependencies(tasks[j], links, tasks, {}, skippedLinks, null);\r\n\t\t\t}\r\n\r\n\t\t\tif (Object.keys(links)) {\r\n\t\t\t\tgantt.ext.export_api._clearLinksSameLevel(links, tasks);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < data.links.length; i++) {\r\n\t\t\t\tif (!links[data.links[i].id]) {\r\n\t\t\t\t\tdata.links.splice(i, 1);\r\n\t\t\t\t\ti--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tgantt.ext.export_api._clearLevel(data.data);\r\n\t\t},\r\n\r\n\t\t_clearCircDependencies(task, links, tasks, usedTasks, skippedLinks, prevLink) {\r\n\t\t\tconst sources = task.$_source;\r\n\t\t\tif (!sources) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (usedTasks[task.id]) {\r\n\t\t\t\tgantt.ext.export_api._onCircDependencyFind(prevLink, links, usedTasks, skippedLinks);\r\n\t\t\t}\r\n\r\n\t\t\tusedTasks[task.id] = true;\r\n\r\n\t\t\tconst targets = {};\r\n\r\n\t\t\tfor (let i = 0; i < sources.length; i++) {\r\n\t\t\t\tif (skippedLinks[sources[i]]) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tconst curLink = links[sources[i]];\r\n\t\t\t\tconst targetTask = tasks[curLink._target];\r\n\t\t\t\tif (targets[targetTask.id]) { // two link from one task to another\r\n\t\t\t\t\tgantt.ext.export_api._onCircDependencyFind(curLink, links, usedTasks, skippedLinks);\r\n\t\t\t\t}\r\n\t\t\t\ttargets[targetTask.id] = true;\r\n\t\t\t\tgantt.ext.export_api._clearCircDependencies(targetTask, links, tasks, usedTasks, skippedLinks, curLink);\r\n\t\t\t}\r\n\t\t\tusedTasks[task.id] = false;\r\n\t\t},\r\n\r\n\t\t_onCircDependencyFind(link, links, usedTasks, skippedLinks) {\r\n\t\t\tif (link) {\r\n\t\t\t\tif (gantt.callEvent(\"onExportCircularDependency\", [link.id, link])) {\r\n\t\t\t\t\tdelete links[link.id];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete usedTasks[link._source];\r\n\t\t\t\tdelete usedTasks[link._target];\r\n\t\t\t\tskippedLinks[link.id] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_makeLinksSameLevel(link, tasks) {\r\n\t\t\tlet task;\r\n\t\t\tlet targetLvl;\r\n\t\t\tconst linkT = {\r\n\t\t\t\ttarget: tasks[link.target],\r\n\t\t\t\tsource: tasks[link.source]\r\n\t\t\t};\r\n\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\tif (linkT.target._lvl != linkT.source._lvl) {\r\n\t\t\t\tif (linkT.target._lvl < linkT.source._lvl) {\r\n\t\t\t\t\ttask = \"source\";\r\n\t\t\t\t\ttargetLvl = linkT.target._lvl;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttask = \"target\";\r\n\t\t\t\t\ttargetLvl = linkT.source._lvl;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tconst parent = tasks[linkT[task].parent];\r\n\t\t\t\t\tif (!parent) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlinkT[task] = parent;\r\n\t\t\t\t} while (linkT[task]._lvl < targetLvl);\r\n\r\n\t\t\t\tlet sourceParent = tasks[linkT.source.parent];\r\n\t\t\t\tlet\ttargetParent = tasks[linkT.target.parent];\r\n\t\t\t\t// tslint:disable-next-line triple-equals\r\n\t\t\t\twhile (sourceParent && targetParent && sourceParent.id != targetParent.id) {\r\n\t\t\t\t\tlinkT.source = sourceParent;\r\n\t\t\t\t\tlinkT.target = targetParent;\r\n\t\t\t\t\tsourceParent = tasks[linkT.source.parent];\r\n\t\t\t\t\ttargetParent = tasks[linkT.target.parent];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlink._target = linkT.target.id;\r\n\t\t\tlink._source = linkT.source.id;\r\n\r\n\t\t\tif (!linkT.target.$_target){\r\n\t\t\t\tlinkT.target.$_target = [];\r\n\t\t\t}\r\n\t\t\tlinkT.target.$_target.push(link.id);\r\n\r\n\t\t\tif (!linkT.source.$_source){\r\n\t\t\t\tlinkT.source.$_source = [];\r\n\t\t\t}\r\n\t\t\tlinkT.source.$_source.push(link.id);\r\n\t\t},\r\n\r\n\t\t_clearLinksSameLevel(links, tasks) {\r\n\t\t\tfor (const link in links) {\r\n\t\t\t\tdelete links[link]._target;\r\n\t\t\t\tdelete links[link]._source;\r\n\t\t\t}\r\n\r\n\t\t\tfor (const task in tasks) {\r\n\t\t\t\tdelete tasks[task].$_source;\r\n\t\t\t\tdelete tasks[task].$_target;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_customProjectProperties(data, config) {\r\n\t\t\tif (config && config.project) {\r\n\t\t\t\tfor (const i in config.project) {\r\n\t\t\t\t\tif (!gantt.config.$custom_data){\r\n\t\t\t\t\t\tgantt.config.$custom_data = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgantt.config.$custom_data[i] = typeof config.project[i] === \"function\" ? config.project[i](gantt.config) : config.project[i];\r\n\t\t\t\t}\r\n\t\t\t\tdelete config.project;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_customTaskProperties(data, config) {\r\n\t\t\tif (config && config.tasks) {\r\n\t\t\t\tdata.data.forEach(function(el) {\r\n\t\t\t\t\tfor (const i in config.tasks) {\r\n\t\t\t\t\t\tif (!el.$custom_data){\r\n\t\t\t\t\t\t\tel.$custom_data = {};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tel.$custom_data[i] = typeof config.tasks[i] === \"function\" ? config.tasks[i](el, gantt.config) : config.tasks[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tdelete config.tasks;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_exportConfig(data, config) {\r\n\t\t\tconst projectName = config.name || \"gantt.xml\";\r\n\t\t\tdelete config.name;\r\n\r\n\t\t\tgantt.config.custom = config;\r\n\r\n\t\t\tconst time = gantt.ext.export_api._getWorktimeSettings();\r\n\r\n\t\t\tconst projectDates = gantt.getSubtaskDates();\r\n\t\t\tif (projectDates.start_date && projectDates.end_date) {\r\n\t\t\t\tconst formatDate = gantt.templates.format_date || gantt.templates.xml_format;\r\n\t\t\t\tgantt.config.start_end = {\r\n\t\t\t\t\tstart_date: formatDate(projectDates.start_date),\r\n\t\t\t\t\tend_date: formatDate(projectDates.end_date)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tconst manual = config.auto_scheduling === undefined ? false : !!config.auto_scheduling;\r\n\r\n\t\t\tconst res = {\r\n\t\t\t\tcallback: config.callback || null,\r\n\t\t\t\tconfig: gantt.config,\r\n\t\t\t\tdata,\r\n\t\t\t\tmanual,\r\n\t\t\t\tname: projectName,\r\n\t\t\t\tworktime: time\r\n\t\t\t};\r\n\t\t\tfor (const i in config) {\r\n\t\t\t\tres[i] = config[i];\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\r\n\t\t_sendImportAjaxMSP(config) {\r\n\t\t\tconst url = config.server || gantt.ext.export_api._apiUrl;\r\n\t\t\tconst store = config.store || 0;\r\n\t\t\tconst formData = config.data;\r\n\t\t\tconst callback = config.callback;\r\n\r\n\t\t\tconst settings = {\r\n\t\t\t\tdurationUnit: config.durationUnit || undefined,\r\n\t\t\t\tprojectProperties: config.projectProperties || undefined,\r\n\t\t\t\ttaskProperties: config.taskProperties || undefined,\r\n\t\t\t};\r\n\r\n\t\t\tformData.append(\"type\", config.type || \"msproject-parse\");\r\n\t\t\tformData.append(\"data\", JSON.stringify(settings));\r\n\r\n\t\t\tif (store){\r\n\t\t\t\tformData.append(\"store\", store);\r\n\t\t\t}\r\n\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\t\t\txhr.onreadystatechange = function(e) {\r\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 0) {// network error\r\n\t\t\t\t\tif (callback) {\r\n\t\t\t\t\t\tcallback(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.onload = function(){\r\n\t\t\t\tconst fail = xhr.status > 400;\r\n\t\t\t\tlet info = null;\r\n\r\n\t\t\t\tif (!fail) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tinfo = JSON.parse(xhr.responseText);\r\n\t\t\t\t\t} catch (e) { }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback(info);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.open(\"POST\", url, true);\r\n\t\t\txhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\t\txhr.send(formData);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\r\n\tgantt.exportToPDF = gantt.ext.export_api.exportToPDF;\r\n\tgantt.exportToPNG = gantt.ext.export_api.exportToPNG;\r\n\tgantt.exportToICal = gantt.ext.export_api.exportToICal;\r\n\tgantt.exportToExcel = gantt.ext.export_api.exportToExcel;\r\n\tgantt.exportToJSON = gantt.ext.export_api.exportToJSON;\r\n\tgantt.importFromExcel = gantt.ext.export_api.importFromExcel;\r\n\tgantt.importFromMSProject = gantt.ext.export_api.importFromMSProject;\r\n\tgantt.exportToMSProject = gantt.ext.export_api.exportToMSProject;\r\n\tgantt.importFromPrimaveraP6 = gantt.ext.export_api.importFromPrimaveraP6;\r\n\tgantt.exportToPrimaveraP6 = gantt.ext.export_api.exportToPrimaveraP6;\r\n\r\n\r\n}\r\n","interface IPoint {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\nexport class EventsManager {\r\n\tstatic create(gantt: any) {\r\n\t\treturn new EventsManager(gantt);\r\n\t}\r\n\tprivate _mouseDown: boolean = false;\r\n\tprivate _startPoint: IPoint;\r\n\tprivate _scrollState: IPoint;\r\n\tprivate _originAutoscroll: boolean;\r\n\tprivate _domEvents: any;\r\n\tprivate _timeline: any;\r\n\tprivate _gantt: any;\r\n\tprivate _trace: IPoint[];\r\n\tprivate _originalReadonly: boolean;\r\n\r\n\tconstructor(gantt: any) {\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._domEvents = gantt._createDomEventScope();\r\n\t\tthis._trace = [];\r\n\t}\r\n\r\n\tdestructor() {\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\r\n\tattach(timeline: any): void {\r\n\t\tthis._timeline = timeline;\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._domEvents.attach(timeline.$task, \"mousedown\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey,ignore, enabled } = gantt.config.drag_timeline;\r\n\t\t\tif(enabled === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet filterTargets = \".gantt_task_line, .gantt_task_link\";\r\n\t\t\tif(ignore !== undefined) {\r\n\t\t\t\tif(ignore instanceof Array){\r\n\t\t\t\t\tfilterTargets = ignore.join(\", \");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfilterTargets = ignore;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (filterTargets) {\r\n\t\t\t\tif (gantt.utils.dom.closest(event.target, filterTargets)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\r\n\t\t\tthis._startDrag(event);\r\n\t\t});\r\n\r\n\t\tthis._domEvents.attach(document, \"keydown\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] === true) {\r\n\t\t\t\tthis._applyDndReadyStyles();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._domEvents.attach(document, \"keyup\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] === false) {\r\n\t\t\t\tthis._clearDndReadyStyles();\r\n\t\t\t\tthis._stopDrag(event);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._domEvents.attach(document, \"mouseup\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\t\tthis._domEvents.attach(gantt.$root, \"mouseup\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\t\tthis._domEvents.attach(document, \"mouseleave\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\t\tthis._domEvents.attach(gantt.$root, \"mouseleave\", (event) => {\r\n\t\t\tthis._stopDrag(event);\r\n\t\t});\r\n\r\n\t\tthis._domEvents.attach(gantt.$root, \"mousemove\", (event) => {\r\n\t\t\tif (!gantt.config.drag_timeline) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\t// GS-854. If we don't have useKey for the drag_timeline extension,\r\n\t\t\t// check the click_drag to not simultaneously use both extensions\r\n\t\t\tconst clickDrag = this._gantt.ext.clickDrag;\r\n\t\t\tconst clickDragUseKey = (this._gantt.config.click_drag || {}).useKey;\r\n\t\t\tif (clickDrag && clickDragUseKey) {\r\n\t\t\t\tif (!useKey && event[clickDragUseKey]) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this._mouseDown === true) {\r\n\t\t\t\tthis._trace.push({ x: event.clientX, y: event.clientY });\r\n\t\t\t\tconst scrollPosition: IPoint = this._countNewScrollPosition({ x: event.clientX, y: event.clientY });\r\n\t\t\t\tthis._setScrollPosition(timeline, scrollPosition);\r\n\t\t\t\tthis._scrollState = scrollPosition;\r\n\t\t\t\tthis._startPoint = { x: event.clientX, y: event.clientY };\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _calculateDirectionVector = () => {\r\n\t\tconst traceSteps = 10;\r\n\t\tif(this._trace.length >= traceSteps) {\r\n\t\t\tconst dots = this._trace.slice(this._trace.length - traceSteps);\r\n\r\n\t\t\tconst vectors = [];\r\n\t\t\tfor(let i = 1; i < dots.length; i++) {\r\n\t\t\t\tvectors.push({\r\n\t\t\t\t\tx: dots[i].x - dots[i - 1].x,\r\n\t\t\t\t\ty: dots[i].y - dots[i - 1].y\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tconst resultVector = {x:0, y:0};\r\n\r\n\t\t\tvectors.forEach((vector) => {\r\n\t\t\t\tresultVector.x += vector.x;\r\n\t\t\t\tresultVector.y += vector.y;\r\n\t\t\t});\r\n\r\n\t\t\tconst magnitude = Math.sqrt(resultVector.x*resultVector.x + resultVector.y*resultVector.y);\r\n\t\t\tconst angleDegrees = Math.atan2(Math.abs(resultVector.y), Math.abs(resultVector.x)) * 180 / Math.PI;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmagnitude,\r\n\t\t\t\tangleDegrees\r\n\t\t\t};\r\n\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _applyDndReadyStyles = (): void => {\r\n\t\tthis._timeline.$task.classList.add(\"gantt_timeline_move_available\");\r\n\t}\r\n\r\n\tprivate _clearDndReadyStyles = (): void => {\r\n\t\tthis._timeline.$task.classList.remove(\"gantt_timeline_move_available\");\r\n\t}\r\n\r\n\tprivate _getScrollPosition = (timeline: any): IPoint => {\r\n\t\tconst gantt = this._gantt;\r\n\t\treturn {\r\n\t\t\tx: gantt.$ui.getView(timeline.$config.scrollX).getScrollState().position,\r\n\t\t\ty: gantt.$ui.getView(timeline.$config.scrollY).getScrollState().position\r\n\t\t};\r\n\t}\r\n\tprivate _countNewScrollPosition = (coords: IPoint): IPoint => {\r\n\t\tconst vector = this._calculateDirectionVector();\r\n\t\tlet shiftX = this._startPoint.x - coords.x;\r\n\t\tlet shiftY = this._startPoint.y - coords.y;\r\n\t\tif(vector){\r\n\t\t\tif(vector.angleDegrees < 15){\r\n\t\t\t\tshiftY = 0;\r\n\t\t\t} else if(vector.angleDegrees > 75){\r\n\t\t\t\tshiftX = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst result = {\r\n\t\t\tx: this._scrollState.x + shiftX,\r\n\t\t\ty: this._scrollState.y + shiftY\r\n\t\t};\r\n\t\treturn result;\r\n\t}\r\n\tprivate _setScrollPosition = (timeline: any, coords: IPoint): void => {\r\n\t\tconst gantt = this._gantt;\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tgantt.scrollLayoutCell(timeline.$id, coords.x, coords.y);\r\n\t\t});\r\n\t}\r\n\tprivate _stopDrag = (event: Event): void => {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._trace = [];\r\n\t\tgantt.$root.classList.remove(\"gantt_noselect\");\r\n\r\n\t\tif(this._originalReadonly !== undefined){\r\n\t\t\tgantt.config.readonly = this._originalReadonly;\r\n\t\t}\r\n\r\n\t\tif(this._originAutoscroll !== undefined){\r\n\t\t\tgantt.config.autoscroll = this._originAutoscroll;\r\n\t\t}\r\n\r\n\t\tif(gantt.config.drag_timeline){\r\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\r\n\t\t\tif (useKey && event[useKey] !== true) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._mouseDown = false;\r\n\t}\r\n\r\n\tprivate _startDrag = (event: any) : void => {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._originAutoscroll = gantt.config.autoscroll;\r\n\t\tgantt.config.autoscroll = false;\r\n\r\n\t\tgantt.$root.classList.add(\"gantt_noselect\");\r\n\t\tthis._originalReadonly = gantt.config.readonly;\r\n\t\tgantt.config.readonly = true;\r\n\r\n\t\tthis._trace = [];\r\n\t\tthis._mouseDown = true;\r\n\t\tconst { x, y } = this._getScrollPosition(this._timeline);\r\n\t\tthis._scrollState = { x, y };\r\n\t\tthis._startPoint = { x: event.clientX, y: event.clientY };\r\n\t\tthis._trace.push(this._startPoint);\r\n\t}\r\n}","import { EventsManager } from \"./eventsManager\";\r\nexport default function(gantt: any){\r\n\tif (!gantt.ext){\r\n\t\tgantt.ext = {};\r\n\t}\r\n\r\n\tgantt.ext.dragTimeline = {\r\n\t\tcreate: () => EventsManager.create(gantt)\r\n\t};\r\n\r\n\tgantt.config.drag_timeline = {\r\n\t\tenabled: true\r\n\t};\r\n}","import * as eventable from \"../../utils/eventable\";\r\nimport { isEventable } from \"../../utils/helpers\";\r\n\r\nexport interface ISelectedRegionConfig {\r\n\tclassName?: string;\r\n\trender?: (startPoint: IPoint, endPoint: IPoint) => HTMLElement;\r\n\tviewPort?: HTMLElement;\r\n\tuseRequestAnimationFrame: boolean;\r\n\tcallback?: (startPoint: IPoint, endPoint: IPoint, startDate: Date, endDate: Date, tasksByDate: any[], tasksByIndex: any[]) => void;\r\n\tsingleRow: boolean;\r\n}\r\n\r\ninterface ICoordinates {\r\n\tleft: number;\r\n\ttop: number;\r\n}\r\n\r\nexport interface IPoint {\r\n\tabsolute: ICoordinates;\r\n\trelative: ICoordinates;\r\n}\r\n\r\nexport class SelectedRegion {\r\n\trender: () => void;\r\n\tprivate _viewPort: HTMLElement & eventable;\r\n\tprivate _el: HTMLElement = document.createElement(\"div\");\r\n\tprivate _callback: (startPoint: IPoint, endPoint: IPoint, startDate: Date, endDate: Date, tasksByDate: any[], tasksByIndex: any[]) => void;\r\n\tprivate _startPoint: IPoint;\r\n\tprivate _endPoint: IPoint;\r\n\tprivate _positionPoint: IPoint;\r\n\tprivate _useRequestAnimationFrame: boolean;\r\n\tprivate _startDate: Date;\r\n\tprivate _endDate: Date;\r\n\tprivate _singleRow: boolean;\r\n\tprivate _gantt: any;\r\n\tprivate _view: any;\r\n\r\n\tconstructor(config: ISelectedRegionConfig, gantt: any, view: any) {\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._view = view;\r\n\t\tthis._viewPort = config.viewPort;\r\n\t\tthis._el.classList.add(config.className);\r\n\t\tif (typeof config.callback === \"function\") {\r\n\t\t\tthis._callback = config.callback;\r\n\t\t}\r\n\r\n\t\tthis.render = () => {\r\n\t\t\tlet node;\r\n\t\t\tif(config.render){\r\n\t\t\t\tnode = config.render(this._startPoint, this._endPoint);\r\n\t\t\t}else{\r\n\t\t\t\tnode = this.defaultRender(this._startPoint, this._endPoint);\r\n\t\t\t}\r\n\r\n\t\t\tif(node !== this._el){\r\n\t\t\t\tif(this._el && this._el.parentNode){\r\n\t\t\t\t\tthis._el.parentNode.removeChild(this._el);\r\n\t\t\t\t}\r\n\t\t\t\tthis._el = node;\r\n\t\t\t}\r\n\r\n\t\t\tif (config.className !== \"\") {\r\n\t\t\t\tthis._el.classList.add(config.className);\r\n\t\t\t}\r\n\t\t\tthis.draw();\r\n\t\t};\r\n\r\n\t\tif (!isEventable(this._viewPort)) {\r\n\t\t\teventable(this._viewPort);\r\n\t\t}\r\n\t\tthis._singleRow = config.singleRow;\r\n\t\tthis._useRequestAnimationFrame = config.useRequestAnimationFrame;\r\n\t}\r\n\r\n\tdefaultRender = (start: IPoint, end: IPoint) => {\r\n\t\tif(!this._el){\r\n\t\t\tthis._el = document.createElement(\"div\");\r\n\t\t}\r\n\t\tconst node = this._el;\r\n\t\t// const gantt = this._gantt;\r\n\r\n\t\tconst top = Math.min(start.relative.top, end.relative.top);\r\n\t\tconst bottom = Math.max(start.relative.top, end.relative.top);\r\n\t\tconst left = Math.min(start.relative.left, end.relative.left);\r\n\t\tconst right = Math.max(start.relative.left, end.relative.left);\r\n\r\n\t\tif (this._singleRow) {\r\n\t\t\tconst pos = this._getTaskPositionByTop(this._startPoint.relative.top);\r\n\t\t\tnode.style.height = pos.height + \"px\";\r\n\t\t\tnode.style.top = pos.top + \"px\";\r\n\t\t} else {\r\n\t\t\tnode.style.height = Math.abs(bottom - top) + \"px\";\r\n\t\t\tnode.style.top = top + \"px\";\r\n\t\t}\r\n\t\tnode.style.width = Math.abs(right - left) + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\t\treturn node;\r\n\t}\r\n\r\n\tdraw() {\r\n\t\tif (this._useRequestAnimationFrame) {\r\n\t\t\treturn requestAnimationFrame(() => {\r\n\t\t\t\tthis._viewPort.appendChild(this.getElement());\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis._viewPort.appendChild(this.getElement());\r\n\t\t}\r\n\t}\r\n\r\n\tclear() {\r\n\t\tif (this._useRequestAnimationFrame) {\r\n\t\t\treturn requestAnimationFrame(() => {\r\n\t\t\t\tif (!this._el.parentNode) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._viewPort.removeChild(this._el);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (!this._el.parentNode) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._viewPort.removeChild(this._el);\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement() {\r\n\t\treturn this._el;\r\n\t}\r\n\r\n\tgetViewPort() {\r\n\t\treturn this._viewPort;\r\n\t}\r\n\r\n\tsetStart(startPoint: IPoint) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._startPoint = startPoint;\r\n\t\tthis._startDate = gantt.dateFromPos(this._startPoint.relative.left);\r\n\t\tthis._viewPort.callEvent(\"onBeforeDrag\", [this._startPoint]);\r\n\t}\r\n\r\n\tsetEnd(endPoint: IPoint) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._endPoint = endPoint;\r\n\t\tif (this._singleRow) {\r\n\t\t\tconst pos = this._getTaskPositionByTop(this._startPoint.relative.top);\r\n\t\t\tthis._endPoint.relative.top = pos.top;\r\n\t\t}\r\n\t\tthis._endDate = gantt.dateFromPos(this._endPoint.relative.left);\r\n\t\tif (this._startPoint.relative.left > this._endPoint.relative.left) {\r\n\t\t\tthis._positionPoint = {\r\n\t\t\t\trelative: { left: this._endPoint.relative.left, top: this._positionPoint.relative.top },\r\n\t\t\t\tabsolute: { left: this._endPoint.absolute.left, top: this._positionPoint.absolute.top }\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (this._startPoint.relative.top > this._endPoint.relative.top) {\r\n\t\t\tthis._positionPoint = {\r\n\t\t\t\trelative: { left: this._positionPoint.relative.left, top: this._endPoint.relative.top },\r\n\t\t\t\tabsolute: { left: this._positionPoint.absolute.left, top: this._endPoint.absolute.top }\r\n\t\t\t};\r\n\t\t}\r\n\r\n\r\n\t\tthis._viewPort.callEvent(\"onDrag\", [this._startPoint, this._endPoint]);\r\n\t}\r\n\r\n\tsetPosition(positionPoint: IPoint) {\r\n\t\tthis._positionPoint = positionPoint;\r\n\t}\r\n\r\n\tdragEnd(endPoint: IPoint) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tif(endPoint.relative.left < 0){\r\n\t\t\tendPoint.relative.left = 0;\r\n\t\t}\r\n\t\tthis._viewPort.callEvent(\"onBeforeDragEnd\", [this._startPoint, endPoint]);\r\n\t\tthis.setEnd(endPoint);\r\n\t\t// GS-1422. The endDate can be null if we drag the mouse outside the Gantt container\r\n\t\tthis._endDate = this._endDate || gantt.getState().max_date;\r\n\r\n\t\tif (this._startDate.valueOf() > this._endDate.valueOf()) {\r\n\t\t\t[ this._startDate, this._endDate ] = [ this._endDate, this._startDate ];\r\n\t\t}\r\n\t\tthis.clear();\r\n\t\tconst tasksByTime = gantt.getTaskByTime(this._startDate, this._endDate);\r\n\t\tconst tasksByIndex = this._getTasksByTop(this._startPoint.relative.top, this._endPoint.relative.top);\r\n\r\n\t\tthis._viewPort.callEvent(\"onDragEnd\", [this._startPoint, this._endPoint]);\r\n\t\tif (this._callback) {\r\n\t\t\tthis._callback(this._startPoint, this._endPoint, this._startDate, this._endDate, tasksByTime, tasksByIndex);\r\n\t\t}\r\n\t}\r\n\r\n\tgetInBounds() {\r\n\t\treturn this._singleRow;\r\n\t}\r\n\r\n\tprivate _getTasksByTop(start: number, end:number) {\r\n\t\tconst gantt = this._gantt;\r\n\t\tlet startValue = start;\r\n\t\tlet endValue = end;\r\n\t\tif (start > end) {\r\n\t\t\tstartValue = end;\r\n\t\t\tendValue = start;\r\n\t\t}\r\n\t\tconst startIndex = this._getTaskPositionByTop(startValue).index;\r\n\t\tconst endIndex = this._getTaskPositionByTop(endValue).index;\r\n\t\tconst result = [];\r\n\t\tfor (let i = startIndex; i <= endIndex; i++) {\r\n\t\t\tconst task = gantt.getTaskByIndex(i);\r\n\t\t\tif (task) {\r\n\t\t\t\tresult.push(gantt.getTaskByIndex(i));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate _getTaskPositionByTop(top: number){\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst view = this._view;\r\n\t\tconst index = view.getItemIndexByTopPosition(top);\r\n\t\tconst task = gantt.getTaskByIndex(index);\r\n\t\tif(task){\r\n\t\t\tconst height = view.getItemHeight(task.id);\r\n\t\t\tconst itemTop = view.getItemTop(task.id);\r\n\t\t\treturn {\r\n\t\t\t\ttop: itemTop || 0,\r\n\t\t\t\theight: height || 0,\r\n\t\t\t\tindex,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tconst dataHeight = view.getTotalHeight();\r\n\t\t\treturn {\r\n\t\t\t\ttop: top > dataHeight ? dataHeight : 0,\r\n\t\t\t\theight: gantt.config.row_height,\r\n\t\t\t\tindex: top > dataHeight ? gantt.getTaskCount() : 0,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\r\nimport { SelectedRegion } from \"./selectedRegion\";\r\n\r\nexport class EventsManager {\r\n\tprivate _mouseDown: boolean = false;\r\n\tprivate _domEvents: any;\r\n\tprivate _originPosition: string;\r\n\tprivate _gantt: any;\r\n\tprivate _restoreOriginPosition: () => void;\r\n\tconstructor(gantt: any) {\r\n\t\tthis._gantt = gantt;\r\n\t\tthis._domEvents = gantt._createDomEventScope();\r\n\t}\r\n\r\n\tattach(selectedRegion: SelectedRegion, useKey?: \"shiftKey\" | \"ctrlKey\" | \"altKey\", ignore?: any): void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tconst _target = selectedRegion.getViewPort();\r\n\t\tthis._originPosition = window.getComputedStyle(_target).display;\r\n\t\tthis._restoreOriginPosition = () => {\r\n\t\t\t_target.style.position = this._originPosition;\r\n\t\t};\r\n\t\tif (this._originPosition === \"static\") {\r\n\t\t\t_target.style.position = \"relative\";\r\n\t\t}\r\n\t\tconst state = gantt.$services.getService(\"state\");\r\n\t\tstate.registerProvider(\"clickDrag\", () => {\r\n\t\t\tconst result = { autoscroll: false };\r\n\t\t\treturn result;\r\n\t\t});\r\n\r\n\r\n\t\tlet scheduledDndCoordinates = null;\r\n\t\tconst startDragAndDrop = () => {\r\n\t\t\tif (!scheduledDndCoordinates) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._mouseDown = true;\r\n\t\t\tselectedRegion.setStart(gantt.copy(scheduledDndCoordinates));\r\n\t\t\tselectedRegion.setPosition(gantt.copy(scheduledDndCoordinates));\r\n\t\t\tselectedRegion.setEnd(gantt.copy(scheduledDndCoordinates));\r\n\t\t\tscheduledDndCoordinates = null;\r\n\t\t};\r\n\r\n\t\tthis._domEvents.attach(_target, \"mousedown\", (event) => {\r\n\t\t\tscheduledDndCoordinates = null;\r\n\t\t\tlet filterTargets = \".gantt_task_line, .gantt_task_link\";\r\n\t\t\tif (ignore !== undefined) {\r\n\t\t\t\tif (ignore instanceof Array) {\r\n\t\t\t\t\tfilterTargets = ignore.join(\", \");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfilterTargets = ignore;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (filterTargets) {\r\n\t\t\t\tif (gantt.utils.dom.closest(event.target, filterTargets)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstate.registerProvider(\"clickDrag\", () => {\r\n\t\t\t\tconst result = { autoscroll: this._mouseDown };\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\tscheduledDndCoordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t});\r\n\t\tconst eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\r\n\t\tthis._domEvents.attach(eventElement, \"mouseup\", (event) => {\r\n\t\t\tscheduledDndCoordinates = null;\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\tif (this._mouseDown === true) {\r\n\t\t\t\tthis._mouseDown = false;\r\n\t\t\t\tconst coordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t\t\tselectedRegion.dragEnd(coordinates);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._domEvents.attach(_target, \"mousemove\", (event) => {\r\n\t\t\tif (useKey && event[useKey] !== true) { return; }\r\n\t\t\t// GS-854. If we don't have useKey for the click_drag extension,\r\n\t\t\t// check the drag_timeline to not simultaneously use both extensions\r\n\t\t\tconst dragTimeline = this._gantt.ext.clickDrag;\r\n\t\t\tconst dragTimelineUseKey = (this._gantt.config.drag_timeline || {}).useKey;\r\n\t\t\tif (dragTimeline && dragTimelineUseKey) {\r\n\t\t\t\tif (!useKey && event[dragTimelineUseKey]) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet coordinates = null;\r\n\t\t\tif(!this._mouseDown && scheduledDndCoordinates){\r\n\t\t\t\tcoordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t\t\tif(Math.abs(scheduledDndCoordinates.relative.left - coordinates.relative.left) > 5){\r\n\t\t\t\t\t// add small threshold not to start dnd on simple click\r\n\t\t\t\t\tstartDragAndDrop();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (this._mouseDown === true) {\r\n\t\t\t\tcoordinates = this._getCoordinates(event, selectedRegion);\r\n\t\t\t\tselectedRegion.setEnd(coordinates);\r\n\t\t\t\tselectedRegion.render();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdetach(): void {\r\n\t\tconst gantt = this._gantt;\r\n\t\tthis._domEvents.detachAll();\r\n\t\tif(this._restoreOriginPosition){\r\n\t\t\tthis._restoreOriginPosition();\r\n\t\t}\r\n\r\n\t\tconst state = gantt.$services.getService(\"state\");\r\n\t\tstate.unregisterProvider(\"clickDrag\");\r\n\t}\r\n\r\n\tdestructor(): void {\r\n\t\tthis.detach();\r\n\t}\r\n\r\n\tprivate _getCoordinates(event: MouseEvent, selectedRegion: SelectedRegion) {\r\n\t\tconst viewPort = selectedRegion.getViewPort();\r\n\t\tconst viewPortBounds = viewPort.getBoundingClientRect();\r\n\t\tconst { clientX, clientY } = event;\r\n\t\tconst result = {\r\n\t\t\tabsolute: {\r\n\t\t\t\tleft: clientX,\r\n\t\t\t\ttop: clientY,\r\n\t\t\t},\r\n\t\t\trelative: {\r\n\t\t\t\tleft: clientX - viewPortBounds.left + viewPort.scrollLeft,\r\n\t\t\t\ttop: clientY - viewPortBounds.top + viewPort.scrollTop\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn result;\r\n\t}\r\n}","import { EventsManager } from \"./eventsManager\";\r\nimport { ISelectedRegionConfig, SelectedRegion } from \"./selectedRegion\";\r\n\r\nexport default function(gantt: any){\r\n\tif (!gantt.ext) {\r\n\t\tgantt.ext = {};\r\n\t}\r\n\r\n\tconst defaultConfig: ISelectedRegionConfig = {\r\n\t\tclassName: \"gantt_click_drag_rect\",\r\n\t\tuseRequestAnimationFrame: true,\r\n\t\tcallback: undefined,\r\n\t\tsingleRow: false\r\n\t};\r\n\r\n\tconst eventsManager = new EventsManager(gantt);\r\n\r\n\tgantt.ext.clickDrag = eventsManager;\r\n\r\n\tgantt.attachEvent(\"onGanttReady\", () => {\r\n\t\tconst config: ISelectedRegionConfig = { viewPort: gantt.$task_data, ...defaultConfig };\r\n\t\tif (gantt.config.click_drag){\r\n\t\t\tconst clickDrag = gantt.config.click_drag;\r\n\t\t\tconfig.render = clickDrag.render || defaultConfig.render;\r\n\t\t\tconfig.className = clickDrag.className || defaultConfig.className;\r\n\t\t\tconfig.callback = clickDrag.callback || defaultConfig.callback;\r\n\t\t\tconfig.viewPort = clickDrag.viewPort || gantt.$task_data;\r\n\t\t\tconfig.useRequestAnimationFrame = clickDrag.useRequestAnimationFrame === undefined ?\r\n\t\t\t\tdefaultConfig.useRequestAnimationFrame : clickDrag.useRequestAnimationFrame;\r\n\r\n\t\t\tconfig.singleRow = clickDrag.singleRow === undefined ? defaultConfig.singleRow : clickDrag.singleRow;\r\n\t\t\tconst timeline = gantt.$ui.getView(\"timeline\");\r\n\t\t\tconst selectedRegion = new SelectedRegion(config, gantt, timeline);\r\n\t\t\tgantt.ext.clickDrag.attach(selectedRegion, clickDrag.useKey, clickDrag.ignore);\r\n\t\t}\r\n\t});\r\n\r\n\tgantt.attachEvent(\"onDestroy\", () => {\r\n\t\teventsManager.destructor();\r\n\t});\r\n\r\n}","\r\nimport click_drag from \"./click_drag\";\r\nimport drag_timeline from \"./drag_timeline\";\r\nimport export_api from \"./export_api\";\r\nimport fullscreen from \"./fullscreen\";\r\nimport * as keyboard_navigation from \"./keyboard_navigation\";\r\nimport * as marker from \"./marker\";\r\nimport * as multiselect from \"./multiselect\";\r\nimport quick_info from \"./quick_info\";\r\nimport tooltip from \"./tooltip\";\r\nimport undo from \"./undo\";\r\n\r\nexport default {\r\n\tclick_drag,\r\n\tdrag_timeline,\r\n\tfullscreen,\r\n\tkeyboard_navigation,\r\n\tquick_info,\r\n\ttooltip,\r\n\tundo,\r\n\tmarker,\r\n\tmultiselect,\r\n\texport_api,\r\n};","import extensions from \"./ext/extensions_gpl\";\r\nimport * as base from \"./factory/make_instance_web\";\r\nimport * as scope from \"./utils/global\";\r\nconst gantt = (scope as any).gantt = base(extensions);\r\n\r\nexport default gantt;\r\nexport { gantt };"],"sourceRoot":""} \ No newline at end of file diff --git a/codebase/sources/dhtmlxgantt.css b/codebase/sources/dhtmlxgantt.css index d1d22b3..7e99b8a 100644 --- a/codebase/sources/dhtmlxgantt.css +++ b/codebase/sources/dhtmlxgantt.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/dhtmlxgantt.js b/codebase/sources/dhtmlxgantt.js index a0fe1b4..a451b3d 100644 --- a/codebase/sources/dhtmlxgantt.js +++ b/codebase/sources/dhtmlxgantt.js @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. @@ -16443,6 +16443,7 @@ module.exports = function (gantt) { // when user moves mouse at first time after onmousedown this.config.started = true; this.config.ignore = false; + gantt._touch_drag = true; if (this.callEvent("onBeforeDragStart", [obj, this.config.original_target]) === false) { this.config.ignore = true; @@ -16488,6 +16489,7 @@ module.exports = function (gantt) { } this.config.started = false; + gantt._touch_drag = false; document.body.className = document.body.className.replace(" gantt_noselect", ""); }, getPosition: function getPosition(e) { @@ -17006,11 +17008,23 @@ module.exports = function (gantt) { }); } else { var first = gantt.getTaskByIndex(0); - startDate = first ? first.start_date ? first.start_date : first.end_date ? gantt.calculateEndDate({ - start_date: first.end_date, - duration: -gantt.config.duration_step, - task: item - }) : null : gantt.config.start_date || gantt.getState().min_date; + var minDate = gantt.config.start_date || gantt.getState().min_date; + + if (first) { + if (first.start_date) { + startDate = first.start_date; + } else if (first.end_date) { + startDate = gantt.calculateEndDate({ + start_date: first.end_date, + duration: -gantt.config.duration_step, + task: item + }); + } else { + startDate = minDate; + } + } else { + startDate = minDate; + } } gantt.assert(startDate, "Invalid dates"); @@ -24252,7 +24266,7 @@ module.exports = function (gantt) { if (batchUpdate) { needUpdate = true; needUpdateFor[id] = item; - } else { + } else if (!item.unscheduled) { _syncOnTaskUpdate(item); } }); @@ -25220,6 +25234,10 @@ module.exports = function createResourceTimelineBuilder(gantt) { task = gantt.getTask(item.task_id); } + if (task.unscheduled) { + continue; // do not process assignments for unscheduled tasks + } + var minDate = item.start_date || task.start_date; var maxDate = item.end_date || task.end_date; @@ -27887,7 +27905,7 @@ function createRowResizer(gantt, grid) { var dd = dnd.config; var id = dd.drag_id, itemHeight = grid.getItemHeight(id), - itemTop = grid.getItemTop(id); + itemTop = grid.getItemTop(id) - obj.scrollTop; var pos = domHelpers.getNodePosition(grid.$grid_data), pointerPosition = parseInt(dd.marker.style.top, 10), markerStartPosition = itemTop + pos.y, @@ -31078,7 +31096,7 @@ module.exports = function (gantt) { CheckboxControl.prototype.render = function (sns) { var height = (sns.height || "23") + "px"; - var html = "<div class='gantt_cal_ltext' style='height:" + height + ";'>"; + var html = "<div class='gantt_cal_ltext gantt_section_" + sns.name + "' style='height:" + height + ";'>"; if (sns.options && sns.options.length) { for (var i = 0; i < sns.options.length; i++) { @@ -31280,7 +31298,13 @@ module.exports = function (gantt) { } var duration = "<div class='gantt_duration' " + singleDate + ">" + "<input type='button' class='gantt_duration_dec' value='−'" + readonly + ">" + "<input type='text' value='5days' class='" + durationInputClass + "'" + readonly + " " + ariaAttr + ">" + "<input type='button' class='gantt_duration_inc' value='+'" + readonly + ">" + label + "<span></span>" + "</div>"; - var html = "<div style='height:" + (sns.height || 30) + "px;padding-top:0px;font-size:inherit;' class='gantt_section_time'>" + time + " " + duration + "</div>"; + var sectionClassName = "gantt_section_time"; + + if (sns.name !== "time") { + sectionClassName += " gantt_section_" + sns.name; + } + + var html = "<div style='height:" + (sns.height || 30) + "px;padding-top:0px;font-size:inherit;' class='" + sectionClassName + "'>" + time + " " + duration + "</div>"; return html; }; @@ -31556,7 +31580,7 @@ module.exports = function (gantt) { RadioControl.prototype.render = function (sns) { var height = (sns.height || "23") + "px"; - var html = "<div class='gantt_cal_ltext' style='height:" + height + ";'>"; + var html = "<div class='gantt_cal_ltext gantt_section_" + sns.name + "' style='height:" + height + ";'>"; if (sns.options && sns.options.length) { for (var i = 0; i < sns.options.length; i++) { @@ -31619,7 +31643,7 @@ module.exports = function (gantt) { SelectControl.prototype.render = function (sns) { var height = (sns.height || "23") + "px"; - var html = "<div class='gantt_cal_ltext' style='height:" + height + ";'>"; + var html = "<div class='gantt_cal_ltext gantt_section_" + sns.name + "' style='height:" + height + ";'>"; html += htmlHelpers.getHtmlSelect(sns.options, [{ key: "style", value: "width:100%;" @@ -31679,7 +31703,7 @@ module.exports = function (gantt) { TemplateControl.prototype.render = function (sns) { var height = (sns.height || "30") + "px"; - return "<div class='gantt_cal_ltext gantt_cal_template' style='height:" + height + ";'></div>"; + return "<div class='gantt_cal_ltext gantt_cal_template gantt_section_" + sns.name + "' style='height:" + height + ";'></div>"; }; TemplateControl.prototype.set_value = function (node, value) { @@ -31718,7 +31742,7 @@ module.exports = function (gantt) { TextareaControl.prototype.render = function (sns) { var height = (sns.height || "130") + "px"; - return "<div class='gantt_cal_ltext' style='height:" + height + ";'><textarea></textarea></div>"; + return "<div class='gantt_cal_ltext gantt_section_" + sns.name + "' style='height:" + height + ";'><textarea></textarea></div>"; }; TextareaControl.prototype.set_value = function (node, value) { @@ -31765,7 +31789,13 @@ module.exports = function (gantt) { TimeControl.prototype.render = function (sns) { var time = gantt.form_blocks.getTimePicker.call(this, sns); - var html = "<div style='height:" + (sns.height || 30) + "px;padding-top:0px;font-size:inherit;text-align:center;' class='gantt_section_time'>"; + var sectionClassName = "gantt_section_time"; + + if (sns.name !== "time") { + sectionClassName += " gantt_section_" + sns.name; + } + + var html = "<div style='height:" + (sns.height || 30) + "px;padding-top:0px;font-size:inherit;text-align:center;' class='" + sectionClassName + "'>"; html += time; if (sns.single_date) { @@ -32094,6 +32124,10 @@ module.exports = function (gantt) { if (gantt.config.drag_lightbox) { lightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd; + lightboxDiv.firstChild.ontouchstart = function (e) { + gantt._ready_to_dnd(e.touches[0]); + }; + lightboxDiv.firstChild.onselectstart = function () { return false; }; @@ -32555,7 +32589,13 @@ module.exports = function (gantt) { gantt._init_dnd_events = function () { var eventElement = gantt._lightbox_root; this.event(eventElement, "mousemove", gantt._move_while_dnd); - this.event(eventElement, "mouseup", gantt._finish_dnd); // GS-1952: In Salesforce environment, the lightbox is attached to the Gantt container. + this.event(eventElement, "mouseup", gantt._finish_dnd); + this.event(eventElement, "touchmove", function (e) { + gantt._move_while_dnd(e.touches[0]); + }); + this.event(eventElement, "touchend", function (e) { + gantt._finish_dnd(e.touches[0]); + }); // GS-1952: In Salesforce environment, the lightbox is attached to the Gantt container. // So when Gantt is reinitialized, the events are no longer attached to the Gantt container. // gantt._init_dnd_events = function () { // }; @@ -37251,8 +37291,11 @@ function createTaskRenderer(gantt) { var el = document.createElement('div'), sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered - viewPort.y = 0; - viewPort.y_end = gantt.$task_bg.scrollHeight; + if (viewPort) { + viewPort.y = 0; + viewPort.y_end = gantt.$task_bg.scrollHeight; + } + task.$rollup.forEach(function (itemId) { if (!gantt.isTaskExists(itemId)) { return; @@ -37934,6 +37977,7 @@ function addResizeListener(gantt) { function listenWindowResize(gantt, window) { var resizeTimeout = gantt.config.container_resize_timeout || 20; var resizeDelay; + var previousSize = getContainerSize(gantt); if (gantt.config.container_resize_method == "timeout") { lowlevelResizeWatcher(); @@ -37943,6 +37987,14 @@ function listenWindowResize(gantt, window) { if (gantt.$scrollbarRepaint) { gantt.$scrollbarRepaint = null; } else { + // GS-2140. Don't repaint Gantt if it has the same sizes + var currentSize = getContainerSize(gantt); + + if (previousSize.x == currentSize.x && previousSize.y == currentSize.y) { + return; + } + + previousSize = currentSize; repaintGantt(); } }); @@ -37974,6 +38026,13 @@ function listenWindowResize(gantt, window) { } } +function getContainerSize(gantt) { + return { + x: gantt.$root.offsetWidth, + y: gantt.$root.offsetHeight + }; +} + module.exports = addResizeListener; /***/ }), @@ -39894,7 +39953,10 @@ function createTaskDND(timeline, gantt) { var doFinalize = function doFinalize() { if (finalizingBulkMove) { for (var i in dragMultiple) { - this._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e); + // GS-1057: Don't call drag events for the dragged task as they will be called later + if (dragMultiple[i].id != drag.id) { + this._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e); + } } } @@ -40857,10 +40919,19 @@ module.exports = function (gantt) { } }; - gantt.attachEvent("onGanttReady", gantt.bind(function () { - if (this.config.touch != "force") this.config.touch = this.config.touch && (navigator.userAgent.indexOf("Mobile") != -1 || navigator.userAgent.indexOf("iPad") != -1 || navigator.userAgent.indexOf("Android") != -1 || navigator.userAgent.indexOf("Touch") != -1) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; + gantt.attachEvent("onGanttReady", addTouchEvents); + gantt.attachEvent("onGanttLayoutReady", function () { + if (gantt.$container) { + gantt.attachEvent("onGanttRender", addTouchEvents, { + once: true + }); + } + }); + + function addTouchEvents() { + if (gantt.config.touch != "force") gantt.config.touch = gantt.config.touch && (navigator.userAgent.indexOf("Mobile") != -1 || navigator.userAgent.indexOf("iPad") != -1 || navigator.userAgent.indexOf("Android") != -1 || navigator.userAgent.indexOf("Touch") != -1) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; - if (this.config.touch) { + if (gantt.config.touch) { var touchEventsSupported = true; try { @@ -40870,7 +40941,7 @@ module.exports = function (gantt) { } if (touchEventsSupported) { - this._touch_events(["touchmove", "touchstart", "touchend"], function (ev) { + gantt._touch_events(["touchmove", "touchstart", "touchend"], function (ev) { if (ev.touches && ev.touches.length > 1) return null; if (ev.touches[0]) return { target: ev.target, @@ -40883,14 +40954,14 @@ module.exports = function (gantt) { return false; }); } else if (window.navigator.pointerEnabled) { - this._touch_events(["pointermove", "pointerdown", "pointerup"], function (ev) { + gantt._touch_events(["pointermove", "pointerdown", "pointerup"], function (ev) { if (ev.pointerType == "mouse") return null; return ev; }, function (ev) { return !ev || ev.pointerType == "mouse"; }); } else if (window.navigator.msPointerEnabled) { - this._touch_events(["MSPointerMove", "MSPointerDown", "MSPointerUp"], function (ev) { + gantt._touch_events(["MSPointerMove", "MSPointerDown", "MSPointerUp"], function (ev) { if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null; return ev; }, function (ev) { @@ -40898,7 +40969,7 @@ module.exports = function (gantt) { }); } } - }, gantt)); + } function findTargetView(event) { var allViews = gantt.$layout.getCellsByType("viewCell"); @@ -40977,6 +41048,7 @@ module.exports = function (gantt) { var currentDndId = null; var dndNodes = []; var targetView = null; + var multiTouchEvents = {}; for (var i = 0; i < touchHandlers.length; i++) { gantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]); @@ -41039,14 +41111,29 @@ module.exports = function (gantt) { } return true; - }]); //block touch context menu in IE10 + }]); // prevent page drag on touch move + + try { + document.addEventListener('touchmove', function (e) { + if (gantt._touch_drag) { + block_action(e); + } + }, { + passive: false + }); + } catch (e) { + // eslint-disable-next-line no-console + console.warn("Cannot prevent touch event for the page drag"); + } //block touch context menu in IE10 + touchHandlers.push([this.$container, "contextmenu", function (e) { if (actionMode) return block_action(e); }]); //touch start touchHandlers.push([this.$container, names[1], function (e) { - // block pull-to-refresh + multiTouchEvents = e.touches.length; // block pull-to-refresh + if (document && document.body) { document.body.classList.add("gantt_touch_active"); } @@ -41074,6 +41161,7 @@ module.exports = function (gantt) { tasksDnD.on_mouse_down(actionStart); if (tasksDnD.drag && tasksDnD.drag.start_drag) { + // we need that as touch events break if the target node is removed from the DOM cloneTaskRendered(taskId); tasksDnD._start_dnd(actionStart); @@ -41122,9 +41210,9 @@ module.exports = function (gantt) { currentDndId = null; //dbl-tap handling if (actionStart && dblclicktime) { - var now = new Date(); + var now = new Date(); // doubletap shouldn't happen with multitouch - if (now - dblclicktime < 500) { + if (now - dblclicktime < 500 && multiTouchEvents <= 1) { var mouseEvents = gantt.$services.getService("mouseEvents"); mouseEvents.onDoubleClick(actionStart); block_action(e); @@ -41140,7 +41228,7 @@ module.exports = function (gantt) { function block_action(e) { - if (e && e.preventDefault) { + if (e && e.preventDefault && e.cancelable) { e.preventDefault(); } @@ -41153,19 +41241,56 @@ module.exports = function (gantt) { var task = gantt.getTask(taskId); - if (task && gantt.isTaskVisible(taskId)) { - currentDndId = taskId; + if (task) { + var visible = gantt.isTaskVisible(taskId); - for (var i = 0; i < renders.length; i++) { - task = renders[i].rendered[taskId]; + if (visible) { + currentDndId = taskId; + + for (var _i = 0; _i < renders.length; _i++) { + task = renders[_i].rendered[taskId]; - if (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) { - var copy = task.cloneNode(true); - dndNodes.push(task); - renders[i].rendered[taskId] = copy; - task.style.display = "none"; - copy.className += " gantt_drag_move "; - task.parentNode.appendChild(copy); //return copy; + if (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) { + var copy = task.cloneNode(true); + dndNodes.push(task); + renders[_i].rendered[taskId] = copy; + task.style.display = "none"; + copy.className += " gantt_drag_move "; + task.parentNode.appendChild(copy); //return copy; + } + } + } else if (task.$split_subtask) { + var renderedParent = task.$rendered_parent; + visible = gantt.isTaskVisible(renderedParent); + + if (!visible) { + return; + } + + currentDndId = taskId; + + for (var _i2 = 0; _i2 < renders.length; _i2++) { + var parent = renders[_i2].rendered[renderedParent]; + var taskNode = void 0; + + if (parent && parent.childNodes) { + taskNode = parent.querySelector("[".concat(gantt.config.task_attribute, "=\"").concat(task.id, "\"]")); + } + + if (taskNode) { + // move the child node to a different parent as the task bar will be repainted + // and the initial node will be lost + var _copy = taskNode.cloneNode(true); + + taskNode.parentNode.appendChild(_copy); + gantt.$task_bars.appendChild(taskNode); + taskNode.style.display = "none"; // don't add the node as rendered otherwise it will be lost: + // renders[i].rendered[taskId] = taskNode; + // instead, add it to dndNodes as its elements will be removed after drag + + dndNodes.push(taskNode); + taskNode = null; + } } } } @@ -49570,7 +49695,9 @@ module.exports = function (gantt) { if (!multiselect.isActive()) return true; if (multiselect._selected[id]) { - multiselect.unselect(id, null); + // GS-1057: don't unselect the task here because the task is already unselected + // it was in the select.js file before it was deleted + // multiselect.unselect(id, null); multiselect._selected[id] = false; multiselect.setLastSelected(multiselect.getDefaultSelected()); } @@ -51182,7 +51309,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi function DHXGantt() { this.constants = __webpack_require__(/*! ../constants */ "./sources/constants/index.js"); - this.version = "8.0.6"; + this.version = "8.0.7"; this.license = "gpl"; this.templates = {}; this.ext = {}; diff --git a/codebase/sources/skins/dhtmlxgantt_broadway.css b/codebase/sources/skins/dhtmlxgantt_broadway.css index 86528be..d8136aa 100644 --- a/codebase/sources/skins/dhtmlxgantt_broadway.css +++ b/codebase/sources/skins/dhtmlxgantt_broadway.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/skins/dhtmlxgantt_contrast_black.css b/codebase/sources/skins/dhtmlxgantt_contrast_black.css index dbff829..8419f43 100644 --- a/codebase/sources/skins/dhtmlxgantt_contrast_black.css +++ b/codebase/sources/skins/dhtmlxgantt_contrast_black.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/skins/dhtmlxgantt_contrast_white.css b/codebase/sources/skins/dhtmlxgantt_contrast_white.css index f25cc04..364f484 100644 --- a/codebase/sources/skins/dhtmlxgantt_contrast_white.css +++ b/codebase/sources/skins/dhtmlxgantt_contrast_white.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/skins/dhtmlxgantt_material.css b/codebase/sources/skins/dhtmlxgantt_material.css index 3d9da03..62a179b 100644 --- a/codebase/sources/skins/dhtmlxgantt_material.css +++ b/codebase/sources/skins/dhtmlxgantt_material.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/skins/dhtmlxgantt_meadow.css b/codebase/sources/skins/dhtmlxgantt_meadow.css index 27ee9a2..3ad28bd 100644 --- a/codebase/sources/skins/dhtmlxgantt_meadow.css +++ b/codebase/sources/skins/dhtmlxgantt_meadow.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/skins/dhtmlxgantt_skyblue.css b/codebase/sources/skins/dhtmlxgantt_skyblue.css index cba807d..fda87be 100644 --- a/codebase/sources/skins/dhtmlxgantt_skyblue.css +++ b/codebase/sources/skins/dhtmlxgantt_skyblue.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/codebase/sources/skins/dhtmlxgantt_terrace.css b/codebase/sources/skins/dhtmlxgantt_terrace.css index d1d22b3..7e99b8a 100644 --- a/codebase/sources/skins/dhtmlxgantt_terrace.css +++ b/codebase/sources/skins/dhtmlxgantt_terrace.css @@ -1,7 +1,7 @@ /* @license -dhtmlxGantt v.8.0.6 Standard +dhtmlxGantt v.8.0.7 Standard This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects. diff --git a/package.json b/package.json index 9ca1c85..71964a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dhtmlx-gantt", - "version": "8.0.6", + "version": "8.0.7", "description": "An open source JavaScript Gantt chart that helps you illustrate a project schedule in a nice-looking chart.", "main": "codebase/dhtmlxgantt.js", "types": "codebase/dhtmlxgantt.d.ts", diff --git a/whatsnew.md b/whatsnew.md index 798cf74..a9c2733 100644 --- a/whatsnew.md +++ b/whatsnew.md @@ -1,3 +1,18 @@ +### 8.0.7 + +Fix the script error occurring in the trial build on SalesForce +The onAfterTaskUpdate event now fires before Auto Scheduling events after dragging tasks in the timeline +Fix the duplicate event firing while interacting with a selected task when the Multiselect extension is enabled +Fix the script error that happened when the first task in the chart did not contain dates +Add the lightbox section name as a class name to the section element for better identification +Fix the inability to unschedule tasks from the lightbox when Auto Scheduling is enabled +Fix the resize_rows marker positioning when scrolling the Gantt chart +Prevent Auto Scheduling of linked unscheduled tasks +Fix Gantt crash while adding Rollup tasks with disabled smart rendering +Fix dragging of split tasks on touch devices +Fix errors that occurred with the isCriticalTask, getFreeSlack, and getTotalSlack methods for unscheduled tasks +Fix the error occurring when a linked project contains only unscheduled child tasks + ### 8.0.6 Enhancements and corrections in the usage of WAI-ARIA attributes for improved accessibility