{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./sources/utils/utils.js","webpack:///./sources/utils/dom_helpers.js","webpack:///./sources/ext/tooltip/tooltip.ts","webpack:///./sources/ext/tooltip/tooltipManager.ts","webpack:///./sources/ext/tooltip/index.ts","webpack:///./sources/utils/helpers.js"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","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","seed","helpers","copy","result","isDate","Date","isArray","Array","length","isStringObject","String","isNumberObject","Number","isBooleanObject","Boolean","apply","defined","obj","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","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","createElement","getTargetNode","e","tagName","srcElement","str","trim","this","replace","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","splice","getScrollSize","div","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","trg","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","clientX","clientY","isChildOf","parent","hasClass","element","classList","contains","test","closest","selector","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","console","error","domHelpers","Tooltip","getNode","_tooltipNode","gantt","_waiAria","tooltipAttr","setViewport","_root","show","container","hide","MouseEvent","position","_calculateTooltipPosition","tooltipVisibleAttr","tooltipHiddenAttr","setContent","html","_getViewPort","viewport","_getViewPortSize","tooltipNode","tooltip","offsetX","config","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","pos","scrollY","scrollX","$task_data","$task","utils","tooltip_1","TooltipManager","_listeners","attach","_this","global","$root","watchableTarget","eventTarget","targetNode","onmousemove","onmouseleave","onmouseenter","detach","listener","tooltipFor","cloneDomEvent","clone","createEvent","delayShow","delay","tooltip_timeout","delayHide","$cancelTimeout","tooltip_hide_timeout","tooltipManager","ext","tooltips","task_attribute","touch","touch_tooltip","targetTaskId","locate","isTaskExists","task","getTask","templates","tooltip_text","start_date","end_date","units","second","minute","hour","day","week","month","quarter","year","arrayFilter","arr","callback","filter","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayFind","find","arrayDifference","item","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","b","sort","throttle","timeout","wait","setTimeout","pop","getFullYear","getMonth","getDate","Function","toString","constructor","timer","$pending","args","clearTimeout","$execute","objectKeys","keys"],"mappings":"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","file":"ext/dhtmlxgantt_tooltip.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([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\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 = 213);\n","var helpers = require(\"./helpers\");\n\nfunction copy(object) {\n\tvar i, result; // iterator, types array, result\n\n\tif (object && typeof object == \"object\") {\n\n\t\tswitch (true){\n\t\t\tcase (helpers.isDate(object)):\n\t\t\t\tresult = new Date(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isArray(object)):\n\t\t\t\tresult = new Array(object.length);\n\t\t\t\tfor(i = 0; i < object.length; i++){\n\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isStringObject(object)):\n\t\t\t\tresult = new String(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isNumberObject(object)):\n\t\t\t\tresult = new Number(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isBooleanObject(object)):\n\t\t\t\tresult = new Boolean(object);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tresult = {};\n\t\t\t\tfor (i in object) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\n\t\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn result || object;\n}\n\nfunction mixin (target, source, force){\n\tfor (var f in source)\n\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\n\treturn target;\n}\n\nfunction defined(obj) {\n\treturn typeof(obj) != \"undefined\";\n}\n\nvar seed;\nfunction uid() {\n\tif (!seed)\n\t\tseed = (new Date()).valueOf();\n\n\tseed++;\n\treturn seed;\n}\n\n//creates function with specified \"this\" pointer\nfunction bind(functor, object){\n\tif(functor.bind)\n\t\treturn functor.bind(object);\n\telse\n\t\treturn function(){ return functor.apply(object,arguments); };\n}\n\nfunction event(el, event, handler, capture){\n\tif (el.addEventListener)\n\t\tel.addEventListener(event, handler, capture === undefined ? false : capture);\n\n\telse if (el.attachEvent)\n\t\tel.attachEvent(\"on\"+event, handler);\n}\n\nfunction eventRemove(el, event, handler, capture){\n\tif (el.removeEventListener)\n\t\tel.removeEventListener(event, handler, capture === undefined ? false : capture);\n\n\telse if (el.detachEvent)\n\t\tel.detachEvent(\"on\"+event, handler);\n}\n\nmodule.exports = {\n\tcopy: copy,\n\tdefined: defined,\n\tmixin: mixin,\n\tuid: uid,\n\tbind: bind,\n\tevent: event,\n\teventRemove: eventRemove\n};","//returns position of html element on the page\nfunction elementPosition(elem) {\n\tvar top=0, left=0, right=0, bottom=0;\n\tif (elem.getBoundingClientRect) { //HTML5 method\n\t\tvar box = elem.getBoundingClientRect();\n\t\tvar body = document.body;\n\t\tvar docElem = (document.documentElement ||\n\t\t\tdocument.body.parentNode ||\n\t\t\tdocument.body);\n\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\t\ttop = box.top + scrollTop - clientTop;\n\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\tright = document.body.offsetWidth - box.right;\n\t\tbottom = document.body.offsetHeight - box.bottom;\n\t} else { //fallback to naive approach\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\n\t}\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\n}\n\nfunction isVisible(node){\n\tvar display = false,\n\t\tvisibility = false;\n\tif(window.getComputedStyle){\n\t\tvar style = window.getComputedStyle(node, null);\n\t\tdisplay = style[\"display\"];\n\t\tvisibility = style[\"visibility\"];\n\t}else if(node.currentStyle){\n\t\tdisplay = node.currentStyle[\"display\"];\n\t\tvisibility = node.currentStyle[\"visibility\"];\n\t}\n\treturn (display != \"none\" && visibility != \"hidden\");\n}\n\nfunction hasNonNegativeTabIndex(node){\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\n}\n\nfunction hasHref(node){\n\tvar canHaveHref = {\"a\": true, \"area\": true};\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\n\t\treturn !!node.getAttribute(\"href\");\n\t}\n\treturn true;\n}\n\nfunction isEnabled(node){\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\n\tif(canDisable[node.nodeName.toLowerCase()]){\n\t\treturn !node.hasAttribute(\"disabled\");\n\t}\n\n\treturn true;\n}\n\nfunction getFocusableNodes(root){\n\tvar nodes = root.querySelectorAll([\n\t\t\"a[href]\",\n\t\t\"area[href]\",\n\t\t\"input\",\n\t\t\"select\",\n\t\t\"textarea\",\n\t\t\"button\",\n\t\t\"iframe\",\n\t\t\"object\",\n\t\t\"embed\",\n\t\t\"[tabindex]\",\n\t\t\"[contenteditable]\"\n\t].join(\", \"));\n\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\n\tfor(var i = 0; i < nodesArray.length; i++){\n\t\tvar node = nodesArray[i];\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\t\tif(!isValid){\n\t\t\tnodesArray.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n\treturn nodesArray;\n}\n\nfunction getScrollSize(){\n\tvar div = document.createElement(\"div\");\n\tdiv.style.cssText=\"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\n\n\tdocument.body.appendChild(div);\n\tvar width = div.offsetWidth-div.clientWidth;\n\tdocument.body.removeChild(div);\n\n\treturn width;\n}\n\nfunction getClassName(node){\n\tif(!node) return \"\";\n\n\tvar className = node.className || \"\";\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\n\t\tclassName = className.baseVal;\n\n\tif(!className.indexOf)\n\t\tclassName = \"\";\n\n\treturn _trimString(className);\n}\n\nfunction addClassName(node, className){\n\tif (className && node.className.indexOf(className) === -1) {\n\t\tnode.className += \" \" + className;\n\t}\n}\n\nfunction removeClassName(node, name) {\n\tname = name.split(\" \");\n\tfor (var i = 0; i < name.length; i++) {\n\t\tvar regEx = new RegExp(\"\\\\s?\\\\b\" + name[i] + \"\\\\b(?![-_.])\", \"\");\n\t\tnode.className = node.className.replace(regEx, \"\");\n\t}\n}\n\nfunction hasClass(element, className){\n\tif ('classList' in element) {\n\t\treturn element.classList.contains(className);\n\t} else { \n\t\treturn new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\n\t}\n}\n\nfunction toNode(node) {\n\tif (typeof node === \"string\") {\n\t\treturn (document.getElementById(node) || document.querySelector(node) || document.body);\n\t}\n\treturn node || document.body;\n}\n\nvar _slave = document.createElement(\"div\");\nfunction insert(node, newone) {\n\t_slave.innerHTML = newone;\n\tvar child = _slave.firstChild;\n\tnode.appendChild(child);\n\treturn child;\n}\n\nfunction remove(node) {\n\tif (node && node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\nfunction getChildren(node, css) {\n\tvar ch = node.childNodes;\n\tvar len = ch.length;\n\tvar out = [];\n\tfor (var i = 0; i < len; i++) {\n\t\tvar obj = ch[i];\n\t\tif (obj.className && obj.className.indexOf(css) !== -1) {\n\t\t\tout.push(obj);\n\t\t}\n\t}\n\treturn out;\n}\n\nfunction getTargetNode(e){\n\tvar trg;\n\tif (e.tagName)\n\t\ttrg = e;\n\telse {\n\t\te=e||window.event;\n\t\ttrg=e.target||e.srcElement;\n\t}\n\treturn trg;\n}\n\nfunction locateAttribute(e, attribute) {\n\tif(!attribute) return;\n\n\tvar trg = getTargetNode(e);\n\n\twhile (trg){\n\t\tif (trg.getAttribute){\t//text nodes has not getAttribute\n\t\t\tvar test = trg.getAttribute(attribute);\n\t\t\tif (test) return trg;\n\t\t}\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\nfunction _trimString(str){\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\n\treturn func.apply(str);\n}\n\nfunction locateClassName(e, classname, strict){\n\tvar trg = getTargetNode(e);\n\tvar css = \"\";\n\n\tif(strict === undefined)\n\t\tstrict = true;\n\n\twhile (trg){\n\t\tcss = getClassName(trg);\n\t\tif(css){\n\t\t\tvar ind = css.indexOf(classname);\n\t\t\tif (ind >= 0){\n\t\t\t\tif (!strict)\n\t\t\t\t\treturn trg;\n\n\t\t\t\t//check that we have exact match\n\t\t\t\tvar left = (ind === 0) || (!_trimString(css.charAt(ind - 1)));\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!_trimString(css.charAt(ind + classname.length)));\n\n\t\t\t\tif (left && right)\n\t\t\t\t\treturn trg;\n\t\t\t}\n\t\t}\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\n/*\nevent position relatively to DOM element\n */\nfunction getRelativeEventPosition(ev, node){\n\tvar d = document.documentElement;\n\tvar box = elementPosition(node);\n\n\treturn {\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\n\t\ty: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\n\t};\n}\n\nfunction isChildOf(child, parent){\n\tif(!child || !parent){\n\t\treturn false;\n\t}\n\n\twhile(child && child != parent) {\n\t\tchild = child.parentNode;\n\t}\n\n\treturn child === parent;\n}\n\nfunction closest(element, selector){\n\tif(element.closest){\n\t\treturn element.closest(selector);\n\t}else if(element.matches || element.msMatchesSelector || element.webkitMatchesSelector){\n\t\tvar el = element;\n\t\tif (!document.documentElement.contains(el)) return null;\n\t\tdo {\n\t\t\tvar method = el.matches || el.msMatchesSelector || el.webkitMatchesSelector;\n\n\t\t\tif (method.call(el, selector)) return el;\n\t\t\tel = el.parentElement || el.parentNode;\n\t\t} while (el !== null && el.nodeType === 1); \n\t\treturn null;\n\t}else{\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\"Your browser is not supported\");\n\t\treturn null;\n\t}\n}\n\nmodule.exports = {\n\tgetNodePosition: elementPosition,\n\tgetFocusableNodes: getFocusableNodes,\n\tgetScrollSize: getScrollSize,\n\tgetClassName: getClassName,\n\taddClassName: addClassName,\n\tremoveClassName: removeClassName,\n\tinsertNode: insert,\n\tremoveNode: remove,\n\tgetChildNodes: getChildren,\n\ttoNode: toNode,\n\tlocateClassName:locateClassName,\n\tlocateAttribute: locateAttribute,\n\tgetTargetNode: getTargetNode,\n\tgetRelativeEventPosition: getRelativeEventPosition,\n\tisChildOf: isChildOf,\n\thasClass: hasClass,\n\tclosest: closest\n};","import * as domHelpers from \"../../utils/dom_helpers\";\n\ndeclare var gantt: any;\n\ninterface IViewPosition{\n\ttop: number;\n\tleft: number;\n}\n\ninterface IViewBox extends IViewPosition{\n\twidth: number;\n\theight: number;\n\tbottom: number;\n\tright: number;\n}\n\nexport class Tooltip {\n\tprivate _root: HTMLElement;\n\tprivate _tooltipNode: HTMLElement;\n\n\tgetNode() : HTMLElement {\n\t\tif (!this._tooltipNode){\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\n\t\t\tthis._tooltipNode.className = \"gantt_tooltip\";\n\t\t\tgantt._waiAria.tooltipAttr(this._tooltipNode);\n\t\t}\n\t\treturn this._tooltipNode;\n\t}\n\n\tsetViewport(node: HTMLElement):Tooltip{\n\t\tthis._root = node;\n\t\treturn this;\n\t}\n\n\tshow(left: number, top: number): Tooltip;\n\tshow(event: MouseEvent) : Tooltip;\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\n\t\tconst container = document.body;\n\t\tconst node = this.getNode();\n\n\t\tif(!domHelpers.isChildOf(node, container)){\n\t\t\tthis.hide();\n\t\t\tcontainer.appendChild(node);\n\t\t}\n\n\t\tif(left instanceof MouseEvent){\n\t\t\tconst position = this._calculateTooltipPosition(left);\n\t\t\ttop = position.top;\n\t\t\tleft = position.left;\n\t\t}\n\n\t\tnode.style.top = top + \"px\";\n\t\tnode.style.left = left + \"px\";\n\n\t\tgantt._waiAria.tooltipVisibleAttr(node);\n\t\treturn this;\n\t}\n\thide() : Tooltip{\n\t\tconst node = this.getNode();\n\t\tif(node && node.parentNode){\n\t\t\tnode.parentNode.removeChild(node);\n\t\t}\n\t\tgantt._waiAria.tooltipHiddenAttr(node);\n\t\treturn this;\n\t}\n\n\tsetContent(html: string) : Tooltip{\n\t\tconst node = this.getNode();\n\t\tnode.innerHTML = html;\n\t\treturn this;\n\t}\n\n\tprivate _getViewPort() : HTMLElement {\n\t\treturn this._root || document.body;\n\t}\n\n\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\n\n\t\t// top/left coordinates inside the viewport by mouse position\n\t\tconst viewport = this._getViewPortSize();\n\t\tconst tooltipNode = this.getNode();\n\t\tconst tooltip: IViewBox = {\n\t\t\ttop:0,\n\t\t\tleft: 0,\n\t\t\twidth: tooltipNode.offsetWidth,\n\t\t\theight: tooltipNode.offsetHeight,\n\t\t\tbottom: 0,\n\t\t\tright: 0\n\t\t};\n\n\t\tconst offsetX = gantt.config.tooltip_offset_x;\n\t\tconst offsetY = gantt.config.tooltip_offset_y;\n\n\t\tconst container = document.body;\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\n\t\ttooltip.top = mouse.y;\n\t\ttooltip.left = mouse.x;\n\t\ttooltip.top += offsetY;\n\t\ttooltip.left += offsetX;\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\ttooltip.right = tooltip.left + tooltip.width;\n\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\n\t\tif(tooltip.top < viewport.top){\n\t\t\ttooltip.top = viewport.top;\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\t}else if(tooltip.bottom > viewport.bottom){\n\t\t\ttooltip.bottom = viewport.bottom;\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\n\t\t}\n\n\t\tif(tooltip.left < viewport.left){\n\t\t\ttooltip.left = viewport.left;\n\t\t\ttooltip.right = viewport.left + tooltip.width;\n\t\t}else if(tooltip.right > viewport.right){\n\t\t\ttooltip.right = viewport.right;\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\n\t\t}\n\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\n\t\t}\n\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\t}\n\n\t\treturn tooltip;\n\t}\n\n\tprivate _getViewPortSize() : IViewBox {\n\t\tconst container = this._getViewPort();\n\t\tlet viewport = container;\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\n\t\tlet pos;\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of gantt\n\t\tif(container === gantt.$task_data){\n\t\t\tviewport = gantt.$task;\n\t\t\tscrollTop = 0;\n\t\t\tscrollLeft = 0;\n\t\t\tpos = domHelpers.getNodePosition(gantt.$task);\n\t\t}else{\n\t\t\tpos = domHelpers.getNodePosition(viewport);\n\t\t}\n\t\treturn {\n\t\t\tleft:pos.x + scrollLeft,\n\t\t\ttop: pos.y + scrollTop,\n\t\t\twidth: pos.width,\n\t\t\theight: pos.height,\n\t\t\tbottom: pos.y + pos.height + scrollTop,\n\t\t\tright: pos.x + pos.width + scrollLeft\n\t\t};\n\t}\n}\n","import * as domHelpers from \"../../utils/dom_helpers\";\nimport * as helpers from \"../../utils/helpers\";\nimport * as utils from \"../../utils/utils\";\nimport { Tooltip } from \"./tooltip\";\n\ninterface ITrackerTarget {\n\tselector: string;\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\n\tglobal: boolean;\n}\n\ninterface ITooltipConfig {\n\tselector: string;\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\n\tglobal: boolean;\n}\n\ndeclare var gantt:any;\n\nexport class TooltipManager{\n\ttooltip: Tooltip = new Tooltip();\n\tprivate _listeners: object = {};\n\n\tattach(config: ITrackerTarget): void {\n\t\tlet root = document.body;\n\t\tif(!config.global){\n\t\t\troot = gantt.$root;\n\t\t}\n\n\t\tlet watchableTarget = null;\n\t\tconst handler = (event) => {\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(watchableTarget){\n\t\t\t\tif(targetNode){\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\n\t\t\t\t}else{\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\n\t\t\t\t\twatchableTarget = null;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(targetNode){\n\t\t\t\t\twatchableTarget = targetNode;\n\t\t\t\t\tconfig.onmouseenter(event, targetNode);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.detach(config.selector);\n\t\tutils.event(root, \"mousemove\", handler);\n\t\tthis._listeners[config.selector] = {\n\t\t\tnode: root,\n\t\t\thandler\n\t\t};\n\t}\n\n\tdetach(selector: string): void {\n\t\tconst listener = this._listeners[selector];\n\t\tif(listener){\n\t\t\tutils.eventRemove(listener.node, \"mousemove\", listener.handler);\n\t\t}\n\t}\n\n\ttooltipFor(config: ITooltipConfig): void {\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\n\t\t\tlet clone = event;\n\t\t\t// making events survive timeout in ie\n\t\t\t// tslint:disable-next-line no-string-literal\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\n\t\t\t\t// tslint:disable-next-line no-string-literal\n\t\t\t\tclone = document[\"createEventObject\"](event);\n\t\t\t}\n\t\t\treturn clone;\n\t\t};\n\n\t\tconst delayShow = helpers.delay((event: MouseEvent, html: string) => {\n\t\t\tthis.tooltip.setContent(html);\n\t\t\tthis.tooltip.show(event);\n\t\t}, gantt.config.tooltip_timeout || 1);\n\n\t\tconst delayHide = helpers.delay(() => {\n\t\t\tdelayShow.$cancelTimeout();\n\t\t\tthis.tooltip.hide();\n\t\t}, gantt.config.tooltip_hide_timeout || 1);\n\n\t\tthis.attach({\n\t\t\tselector: config.selector,\n\t\t\tglobal: config.global,\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\n\t\t\t\tconst html = config.html(event, node);\n\t\t\t\tif(html){\n\t\t\t\t\tdelayShow(cloneDomEvent(event), html);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\n\t\t\t\tconst html = config.html(event, node);\n\t\t\t\tif(html){\n\t\t\t\t\tdelayShow(cloneDomEvent(event), html);\n\t\t\t\t}else{\n\t\t\t\t\tdelayShow.$cancelTimeout();\n\t\t\t\t\tdelayHide();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmouseleave:() => {\n\t\t\t\tdelayShow.$cancelTimeout();\n\t\t\t\tdelayHide();\n\t\t\t},\n\t\t});\n\t}\n}","declare var gantt;\n\ngantt.config.tooltip_timeout = 30;\ngantt.config.tooltip_offset_y = 20;\ngantt.config.tooltip_offset_x = 10;\ngantt.config.tooltip_hide_timeout = 30;\n\nimport {TooltipManager} from \"./tooltipManager\";\n\nconst tooltipManager = new TooltipManager();\n\ngantt.ext.tooltips = tooltipManager;\n\ngantt.attachEvent(\"onGanttReady\", function(){\n\n\ttooltipManager.tooltipFor({\n\t\tselector: \"[\"+gantt.config.task_attribute+\"]:not(.gantt_task_row)\",\n\t\thtml: (event: MouseEvent) => {\n\t\t\tif (gantt.config.touch && !gantt.config.touch_tooltip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst targetTaskId = gantt.locate(event);\n\t\t\tif(gantt.isTaskExists(targetTaskId)){\n\t\t\t\tconst task = gantt.getTask(targetTaskId);\n\t\t\t\treturn gantt.templates.tooltip_text(task.start_date, task.end_date, task);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tglobal: false\n\t});\n});\n\n","var units = {\n\t\"second\": 1,\n\t\"minute\": 60,\n\t\"hour\": 60 * 60,\n\t\"day\": 60 * 60 * 24,\n\t\"week\": 60 * 60 * 24 * 7,\n\t\"month\": 60 * 60 * 24 * 30,\n\t\"quarter\": 60 * 60 * 24 * 30 * 3,\n\t\"year\": 60 * 60 * 24 * 365\n};\nfunction getSecondsInUnit(unit){\n\treturn units[unit] || units.hour;\n}\n\nfunction forEach(arr, callback) {\n\tif (arr.forEach) {\n\t\tarr.forEach(callback);\n\t} else {\n\t\tvar workArray = arr.slice();\n\t\tfor (var i = 0; i < workArray.length; i++) {\n\t\t\tcallback(workArray[i], i);\n\t\t}\n\t}\n}\n\nfunction arrayMap(arr, callback) {\n\tif (arr.map) {\n\t\treturn arr.map(callback);\n\t} else {\n\t\tvar workArray = arr.slice();\n\t\tvar resArray = [];\n\n\t\tfor (var i = 0; i < workArray.length; i++) {\n\t\t\tresArray.push(callback(workArray[i], i));\n\t\t}\n\t\treturn resArray;\n\t}\n}\n\n\nfunction arrayFind(arr, callback) {\n\tif (arr.find) {\n\t\treturn arr.find(callback);\n\t} else {\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (callback(arr[i], i)) {\n\t\t\t\treturn arr[i];\n\t\t\t}\n\t\t}\n\t}\n}\n\n// iframe-safe array type check instead of using instanceof\nfunction isArray(obj){\n\tif(Array.isArray){\n\t\treturn Array.isArray(obj);\n\t}else{\n\t\t// close enough\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\n\t}\n}\n\n// non-primitive string object, e.g. new String(\"abc\")\nfunction isStringObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Number(5)\nfunction isNumberObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Boolean(true)\nfunction isBooleanObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction isDate(obj) {\n\tif (obj && typeof obj === \"object\") {\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\n\t} else {\n\t\treturn false;\n\t}\n}\n\nfunction arrayFilter(arr, callback) {\n\tvar result = [];\n\n\tif (arr.filter) {\n\t\treturn arr.filter(callback);\n\t} else {\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (callback(arr[i], i)) {\n\t\t\t\tresult[result.length] = arr[i];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nfunction hashToArray(hash) {\n\tvar result = [];\n\n\tfor (var key in hash) {\n\t\tif (hash.hasOwnProperty(key)) {\n\t\t\tresult.push(hash[key]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction arraySome(arr, callback) {\n\tif (arr.length === 0) return false;\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (callback(arr[i], i, arr)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction arrayDifference(arr, callback) {\n\treturn arrayFilter(arr, function(item, i) {\n\t\treturn !callback(item, i);\n\t});\n}\n\nfunction throttle (callback, timeout) {\n\tvar wait = false;\n\n\treturn function () {\n\t\tif (!wait) {\n\t\t\tcallback.apply(null, arguments);\n\t\t\twait = true;\n\t\t\tsetTimeout(function () {\n\t\t\t\twait = false;\n\t\t\t}, timeout);\n\t\t}\n\t};\n}\n\nfunction delay (callback, timeout){\n\tvar timer;\n\n\tvar result = function() {\n\t\tresult.$cancelTimeout();\n\t\tcallback.$pending = true;\n\t\tvar args = Array.prototype.slice.call(arguments);\n\t\ttimer = setTimeout(function(){\n\t\t\tcallback.apply(this, args);\n\t\t\tresult.$pending = false;\n\t\t}, timeout);\n\t};\n\t\n\tresult.$pending = false;\n\tresult.$cancelTimeout = function(){\n\t\tclearTimeout(timer);\n\t\tcallback.$pending = false;\n\t};\n\tresult.$execute = function(){\n\t\tcallback();\n\t\tcallback.$cancelTimeout();\n\t};\n\n\treturn result;\n}\n\nfunction sortArrayOfHash(arr, field, desc) {\n\tvar compare = function(a, b) {\n\t\treturn a < b;\n\t};\n\n\tarr.sort(function(a, b) {\n\t\tif (a[field] === b[field]) return 0;\n\n\t\treturn desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\n\t});\n}\n\nfunction objectKeys(obj) {\n\tif (Object.keys) {\n\t\treturn Object.keys(obj);\n\t}\n\tvar result = [];\n\tvar key;\n\tfor (key in obj) {\n\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\tresult.push(key);\n\t\t}\n\t}\n\treturn result;\n}\n\nmodule.exports = {\n\tgetSecondsInUnit: getSecondsInUnit,\n\tforEach: forEach,\n\tarrayMap: arrayMap,\n\tarrayFind: arrayFind,\n\tarrayFilter: arrayFilter,\n\tarrayDifference: arrayDifference,\n\tarraySome: arraySome,\n\thashToArray: hashToArray,\n\tsortArrayOfHash: sortArrayOfHash,\n\tthrottle: throttle,\n\tisArray: isArray,\n\tisDate: isDate,\n\tisStringObject: isStringObject,\n\tisNumberObject: isNumberObject,\n\tisBooleanObject: isBooleanObject,\n\tdelay: delay,\n\tobjectKeys: objectKeys\n};"],"sourceRoot":""}